Kaksi tuntia ja nolla tunnusta
McKinseyn sisäinen tekoälychatbot Lilli palvelee yli 40 000 konsulttia päivittäin. He syöttävät siihen strategisia kysymyksiä, yrityskauppojen yksityiskohtia ja asiakasprojektien luottamuksellisia tietoja. Kuukausittain Lilliin kirjoitetaan yli 500 000 kehotetta.
Helmikuun lopussa tietoturvayhtiö CodeWallin autonominen tekoälyagentti pääsi kaikkeen tähän käsiksi. Ilman käyttäjätunnuksia, ilman sisäpiiritietoa ja ilman ihmisen ohjausta murron aikana. Koko operaatio kesti kaksi tuntia.
Julkinen API, suojaamaton tietokanta
CodeWallin agentti aloitti samasta paikasta kuin mikä tahansa hyökkääjä: julkisesta internetistä. Se löysi McKinseyn API-dokumentaation, jossa oli listattu yli 200 rajapintaa. Näistä 22 ei vaatinut minkäänlaista todennusta.
Yhdessä suojaamattomassa rajapinnassa käyttäjien hakukyselyt välitettiin tietokantaan niin, että JSON-kenttien nimet liitettiin suoraan SQL-kyselyihin. Kyseessä on SQL-injektio, hyökkäystekniikka joka tunnistettiin ensimmäisen kerran 1990-luvun lopulla. Se on OWASP:n kymmenen yleisimmän verkkosovellusten haavoittuvuuden listalla, ja jokainen tietoturvakurssi varoittaa siitä ensimmäisten joukossa.
Injektiokohta oli kuitenkin epätavallinen. Se sijaitsi JSON-kenttien nimissä arvojen sijaan, minkä vuoksi perinteiset tietoturvaskannerit kuten OWASP ZAP eivät havainneet sitä. CodeWallin agentti tunnisti ongelman, kun se huomasi kenttien nimien heijastuvan sellaisinaan tietokannan virheilmoituksissa. Agentti suoritti viisitoista sokeaa iteraatiota virheilmoitusten avulla ennen kuin se pääsi käsiksi tuotantodataan.
Saaliin laajuus oli valtava: 46,5 miljoonaa chat-viestiä selkokielisenä tekstinä, 728 000 tiedostoa, 57 000 käyttäjätiliä ja 3,68 miljoonaa RAG-dokumenttipalasta.
“Hakkerit tulevat käyttämään samaa teknologiaa ja samoja strategioita hyökätäkseen umpimähkään. Tavoitteena voi olla taloudellinen kiristys tietovuodolla tai kiristyshaittaohjelmalla.”
Kirjoitusoikeus järjestelmän ytimeen
Vaarallisinta ei ollut pelkkä tietojen lukeminen. SQL-injektio antoi myös kirjoitusoikeuden, ja samassa tietokannassa sijaitsivat Lillin 95 järjestelmäkehotetta, jotka ohjaavat chatbotin toimintaa 12 eri kielimallin kanssa.
Hyökkääjä olisi voinut yhdellä UPDATE-komennolla muuttaa sitä, miten Lilli vastaa konsulttien kysymyksiin, mitä turvarajoja se noudattaa ja miten se viittaa lähteisiin. Muutos ei olisi vaatinut koodin päivittämistä eikä se olisi laukaissut perinteisiä tietoturvahälytyksiä. McKinseyn yli 40 000 konsulttia olisi saanut vääristeltyjä vastauksia tietämättään.
McKinsey paikkasi haavoittuvuudet vuorokaudessa CodeWallin vastuullisen ilmoituksen jälkeen ja ilmoitti, ettei sen tutkinnassa löytynyt todisteita ulkopuolisten pääsystä asiakastietoihin.



