Generativ dataintelligens

AI-roboter hallusinerer programvarepakker og utviklere laster dem ned

Dato:

Dyptgående Flere store bedrifter har publisert kildekode som inneholder en programvarepakke som tidligere ble hallusinert av generativ AI.

Ikke bare det, men noen, etter å ha oppdaget denne tilbakevendende hallusinasjonen, hadde gjort den oppdiktede avhengigheten til en ekte, som senere ble lastet ned og installert tusenvis av ganger av utviklere som et resultat av AIs dårlige råd, har vi lært. Hvis pakken var fylt med faktisk skadelig programvare, i stedet for å være en godartet test, kunne resultatene ha vært katastrofale.

I følge Bar Lanyado, sikkerhetsforsker ved Lasso Security, er en av virksomhetene lurt av AI til å innlemme pakken Alibaba, som i skrivende stund fortsatt inkluderer en pip kommando for å laste ned Python-pakken huggingface-cli i sin GraphTranslator installasjonsanvisninger.

Det er en legitim huggingface-cli, installert ved hjelp av pip install -U "huggingface_hub[cli]".

Men huggingface-cli distribuert via Python Package Index (PyPI) og kreves av Alibabas GraphTranslator – installert med pip install huggingface-cli – er falsk, forestilt av AI og blitt ekte av Lanyado som et eksperiment.

Han skapte huggingface-cli i desember etter å ha sett det gjentatte ganger hallusinert av generativ AI; i februar i år refererte Alibaba til det i GraphTranslators README-instruksjoner i stedet for det ekte Hugging Face CLI-verktøyet.

Studer

Lanyado gjorde det for å undersøke om denne typen hallusinerte programvarepakker – pakkenavn oppfunnet av generative AI-modeller, antagelig under prosjektutvikling – vedvarer over tid, og for å teste om oppfunnede pakkenavn kan samordnes og brukes til å distribuere ondsinnet kode ved å skrive faktisk pakker som bruker navnene på kode som er utviklet av AI-er.

Tanken her er at noen ondskapsfulle kan spørre modeller om koderåd, notere innbilte pakker som AI-systemer anbefaler gjentatte ganger, og deretter implementere disse avhengighetene slik at andre programmerere, når de bruker de samme modellene og får de samme forslagene, ender opp med å trekke inn. disse bibliotekene, som kan være forgiftet med skadelig programvare.

I fjor, gjennom sikkerhetsfirmaet Vulcan Cyber, Lanyado publisert forskning som beskriver hvordan man kan stille et kodespørsmål til en AI-modell som ChatGPT og motta et svar som anbefaler bruk av et programvarebibliotek, en pakke eller et rammeverk som ikke eksisterer.

"Når en angriper kjører en slik kampanje, vil han spørre modellen om pakker som løser et kodeproblem, så vil han motta noen pakker som ikke eksisterer," forklarte Lanyado til Registeret. "Han vil laste opp ondsinnede pakker med samme navn til de riktige registrene, og fra det tidspunktet trenger han bare å vente på at folk laster ned pakkene."

Farlige antagelser

Viljen til AI-modeller til selvtillit sitere ikke-eksisterende rettssaker er nå velkjent og har forårsaket en liten mengde forlegenhet blant advokater som ikke er klar over denne tendensen. Og som det viser seg, vil generative AI-modeller gjøre det samme for programvarepakker.

Som Lanyado bemerket tidligere, kan en ondsinnet bruke et AI-oppfunnet navn for en ondsinnet pakke lastet opp til et eller annet depot i håp om at andre kan laste ned skadelig programvare. Men for at dette skal være en meningsfull angrepsvektor, må AI-modeller gjentatte ganger anbefale det valgte navnet.

Det var det Lanyado forsøkte å teste. Bevæpnet med tusenvis av "hvordan"-spørsmål, spurte han fire AI-modeller (GPT-3.5-Turbo, GPT-4, Gemini Pro aka Bard og Coral [Cohere]) angående programmeringsutfordringer i fem forskjellige programmeringsspråk/kjøretider (Python, Node.js, Go, .Net og Ruby), som hver har sitt eget pakkesystem.

Det viser seg at en del av navnene disse chatbotene trekker ut av løse luften er vedvarende, noen på tvers av forskjellige modeller. Og utholdenhet – gjentakelsen av det falske navnet – er nøkkelen til å gjøre AI-innfall til et funksjonelt angrep. Angriperen trenger AI-modellen for å gjenta navnene på hallusinerte pakker i sine svar til brukere for skadelig programvare opprettet under disse navnene som skal søkes og lastes ned.

Lanyado valgte 20 spørsmål tilfeldig for nullskuddshallusinasjoner, og stilte dem 100 ganger til hver modell. Målet hans var å vurdere hvor ofte det hallusinerte pakkenavnet forble det samme. Resultatene av testen hans avslører at navn er vedvarende nok til at dette er en funksjonell angrepsvektor, men ikke hele tiden, og i noen emballasjeøkosystemer mer enn andre.

Med GPT-4 produserte 24.2 prosent av spørsmålssvarene hallusinerte pakker, hvorav 19.6 prosent var repeterende, ifølge Lanyado. Et bord gitt til Registeret, nedenfor, viser en mer detaljert oversikt over GPT-4-svar.

  Python node.js Rubin . NET Go
Totalt spørsmål 21340 13065 4544 5141 3713
Spørsmål med minst én hallusinasjonspakke 5347 (25%) 2524 (19.3%) 1072 (23.5%) 1476 (28.7%) 1093 utnyttbare (21.2%) 1150 (30.9%) 109 utnyttbare (2.9%)
Hallusinasjoner i null skudd 1042 (4.8%) 200 (1.5%) 169 (3.7%) 211 (4.1%) 130 utnyttbare (2.5%) 225 (6%) 14 utnyttbare (0.3%)
Hallusinasjoner i andre skudd 4532 (21%) 2390 (18.3%) 960 (21.1%) 1334 (25.9%) 1006 utnyttbare (19.5%) 974 (26.2%) 98 utnyttbare (2.6%)
Repetisjon i null skudd 34.4% 24.8% 5.2% 14% -

Med GPT-3.5 utløste 22.2 prosent av spørsmålssvarene hallusinasjoner, med 13.6 prosent repetisjon. For Gemini ga 64.5 av spørsmålene oppfunne navn, hvorav rundt 14 prosent gjentok seg. Og for Cohere var det 29.1 prosent hallusinasjon, 24.2 prosent repetisjon.

Likevel har pakkeøkosystemene i Go og .Net blitt bygget på måter som begrenser potensialet for utnyttelse ved å nekte angripere tilgang til bestemte stier og navn.

"I Go og .Net mottok vi hallusinerte pakker, men mange av dem kunne ikke brukes til angrep (i Go var tallene mye mer signifikante enn i .Net), hvert språk av sin egen grunn," forklarte Lanyado til Registeret. "I Python og npm er det ikke tilfelle, siden modellen anbefaler oss med pakker som ikke eksisterer og ingenting hindrer oss i å laste opp pakker med disse navnene, så definitivt er det mye lettere å kjøre denne typen angrep på språk som f.eks. Python og Node.js."

Seeding PoC malware

Lanyado gjorde det ved å distribuere proof-of-concept malware – et ufarlig sett med filer i Python-økosystemet. Basert på ChatGPTs råd om å kjøre pip install huggingface-cli, lastet han opp en tom pakke under samme navn til PyPI – den som er nevnt ovenfor – og opprettet en dummypakke med navnet blabladsa123 for å hjelpe å skille pakkeregisterskanning fra faktiske nedlastingsforsøk.

Resultatet, hevder han, er det huggingface-cli mottatt mer enn 15,000 XNUMX autentiske nedlastinger i løpet av de tre månedene den har vært tilgjengelig.

"I tillegg utførte vi et søk på GitHub for å finne ut om denne pakken ble brukt i andre selskapers depoter," sa Lanyado i oppskriften for eksperimentet hans.

"Våre funn avslørte at flere store selskaper enten bruker eller anbefaler denne pakken i sine depoter. Instruksjoner for installasjon av denne pakken kan for eksempel bli funnet i README til et arkiv dedikert til forskning utført av Alibaba.»

Alibaba svarte ikke på en forespørsel om kommentar.

Lanyado sa også at det var et Hugging Face-eid prosjekt som inkorporerte den falske huggingface-clien, men at var fjernet etter at han varslet biz.

Så langt har i hvert fall ikke denne teknikken blitt brukt i et faktisk angrep som Lanyado er klar over.

"Foruten vår hallusinerte pakke (pakken vår er ikke ondsinnet, den er bare et eksempel på hvor enkelt og farlig det kan være å utnytte denne teknikken), har jeg ennå ikke identifisert en utnyttelse av denne angrepsteknikken av ondsinnede aktører," sa han. "Det er viktig å merke seg at det er komplisert å identifisere et slikt angrep, siden det ikke etterlater mange fotspor." ®

spot_img

Siste etterretning

spot_img

Chat med oss

Hei der! Hvordan kan jeg hjelpe deg?