Ying Zhang opettaa ohjelmistotekniikkaa Wake Forestin yliopistossa Pohjois-Carolinassa. Hänen ryhmänsä julkaisi elokuun lopussa tuloksen, joka kannattaa lukea ennen seuraavan tekoälyagentin lisäosan asentamista.
Agenttitaito eli skill on pieni ohjelmalisäke, joka antaa tekoälyagentille uuden kyvyn. Yksi taito kasaa esityskalvot, toinen lukee tiliotteita, kolmas hakee tietoa yrityksen tietokannasta. Käytännössä se on koodinpätkä, jonka lataat kauppapaikalta ja jolle annat samalla avaimet: API-avaimen, tietokannan salasanan, pilvipalvelun tunnuksen.
Kun taito vuotaa tuon avaimen, riski ei ole abstrakti. API-avain on yleensä pelkkä merkkijono, joka kelpaa sellaisenaan kenelle tahansa sen haltuunsa saaneelle. Sillä pääsee samoihin tiedostoihin, samaan asiakasrekisteriin ja samoihin pilvilaskentatunteihin kuin avaimen omistaja. Laskut tulevat omistajalle.
17 022 taitoa, 1 708 ongelmaa
Zhangin ryhmä poimi SkillsMP-kauppapaikalta ositetulla satunnaisotannalla 17 022 taitoa. Kauppapaikka on alan suurin avoimen lähdekoodin valikoima, jossa on yli 1,6 miljoonaa taitoa. Taidot käytiin läpi kahdella tavalla: koodia luettiin staattisesti ja taidot ajettiin hiekkalaatikossa valetunnuksilla, jolloin kertyi 170 226 tulostetta tarkastettavaksi.
Tulos oli 1 708 tietoturvaongelmaa 520 taidossa ja kymmenen toistuvaa vuotokuviota. Osuutena se on noin kolme prosenttia otoksesta. Jos sama osuus pätisi koko valikoimaan, puhuttaisiin kymmenistätuhansista taidoista, mutta tätä lukua tutkijat eivät esitä – se on suora laskutoimitus otoksesta, ei mittaustulos.
Kovin luku on 89,6 prosenttia. Niin suuri osa vuotaneista tunnuksista oli välittömästi käyttökelpoisia: ei vanhentuneita, ei testiavaimia, vaan toimivia tunnuksia oikeisiin järjestelmiin. Lisäksi 92,5 prosenttia ongelmista paljastui taidon aivan tavallisessa ajossa. Hyökkääjän ei tarvitse tehdä mitään erikoista, riittää että käyttää taitoa niin kuin se on tarkoitettu käytettäväksi.
Yleisin syy on tylsä. Virheenjäljityslokitus selittää 73,5 prosenttia haavoittuvuuksista: kehittäjä tulostaa muuttujan arvon nähdäkseen mitä koodi tekee, ja tunnus päätyy lokiriville. Agenttikehyksissä tuo tuloste syötetään usein suoraan mallin konteksti-ikkunaan, jolloin rutiinidebuggauksesta tulee vuotokanava.
“Kun agenttitaito on viallinen tai se on kehitetty pahantahtoisesti, se varastaa tietosi ja mahdollisesti lähettää ne etäpalvelimelle käytettäväksi jollakin haitallisella tavalla.”
Varastaminen ja huolimattomuus näyttävät uhrille samalta
Tutkimuksen kiinnostavin havainto on jako aikeen mukaan. Osa taidoista vuotaa tunnuksia siksi, että kehittäjä on kirjoittanut ne nimenomaan keräämään niitä. Taito tekee sen, mitä lupaa, ja samalla poimii avaimen talteen ja lähettää sen eteenpäin. Tämä on varkaus, ja se on suunniteltu.
Toinen ryhmä on tavallista huolimattomuutta. Kehittäjä ei ole ajatellut tunnusten käsittelyä loppuun asti, jättää salasanan koodiin kovakoodattuna tai tulostaa sen lokiin. Aikomus on hyvä, jälki huono.
Ero on tärkeä siksi, että se ratkaisee, mikä auttaa. Huolimattomuuteen puree parempi työkalu ja tarkistuslista. Tahalliseen keräämiseen ei pure kumpikaan, koska kehittäjä läpäisee tarkistuksen mielellään ja siirtyy seuraavaan temppuun. Uhrin näkökulmasta lopputulos on kuitenkin identtinen: tunnus on ulkona, ja sen ehtii käyttää joku muu.
Kolmea neljästä tapauksesta ei myöskään löydä pelkkää koodia lukemalla. Tutkijoiden mukaan 76,3 prosenttia vuodoista paljastui vasta, kun koodi, dokumentaatio ja ajonaikainen käytös katsottiin yhdessä. Tavallinen kehittäjä ei tee tätä ennen asennusta.
Kauppapaikka siivosi vasta ilmoituksen jälkeen
SkillsMP poisti haitalliset taidot ja korjautti suurimman osan huolimattomuusvirheistä. Kovakoodatuista tapauksista 91,6 prosenttia oli korjattu julkistuksen jälkeen. Reaktio tuli siis vasta, kun tutkijaryhmä kertoi löydöksistään.
Tämä on jutun hiljainen pointti. Kauppapaikan valvonta on jälkikäteistä: taito päätyy myyntiin ensin ja tarkastukseen sitten, jos joku sattuu katsomaan. Puhelinten sovelluskaupoissa on ennakkotarkastus, jota voi arvostella hitaaksi ja mielivaltaiseksi, mutta se on olemassa. Agenttitaitojen puolella vastaavaa porttia ei toistaiseksi ole.
“Monissa taidoissa on tunnusten vuoto-ongelmia, ja lisäksi kehitetään ja levitetään haitallisia taitoja. Työmme avulla autamme havaitsemaan nämä taidot ja poistamaan ne avoimen lähdekoodin markkinapaikalta.”



