Arrayref-craten til Rust blev kompromitteret i et forsyningskædeangreb, der distribuerede infostealer-malware på udvikleres systemer under kompilering. Angriberne kompromitterede også append-only-vec- og internment-cratene i det samme korte angrebsvindue.
Arrayref er et meget anvendt Rust-bibliotek med mere end 53 millioner downloads i løbet af de seneste 90 dage. Det bruges i projekter inden for kryptografi, grafik og blockchain, hvilket gør hændelsen til en alvorlig bekymring for udviklere og organisationer, der er afhængige af Rust-afhængigheder.
De skadelige versioner er siden blevet fjernet. Alle, der installerede de berørte pakker i eksponeringsperioden, bør dog undersøge deres systemer for tegn på kompromittering.
Angribere brugte en typosquattet afhængighed
Angriberen ændrede de berørte versioner ved at tilføje en afhængighed med navnet proc-macro1. Pakken efterlignede den legitime og meget anvendte proc-macro2-crate gennem en næsten identisk stavemåde.
Den oprindelige kildekode i de kompromitterede pakker forblev ellers uændret. Det gjorde den skadelige tilføjelse sværere at opdage under en hurtig gennemgang af kildekoden.
proc-macro1-pakken indeholdt et build.rs-script, der kørte automatisk under kompileringen. Scriptet rekonstruerede sin infrastruktur fra kodede fragmenter og valgte en payload, der matchede udviklerens operativsystem.
Malwaren understøttede Linux x86-64, Windows x86-64, macOS x86-64 og macOS ARM64. Denne understøttelse på tværs af platforme øgede kampagnens potentielle rækkevidde betydeligt.
Malware stjæler data og etablerer persistens under byggeprocessen
På Unix-systemer skrev malwaren en fil med navnet rust-setup til den midlertidige mappe. Derefter markerede den filen som eksekverbar og startede den som en frakoblet proces.
På Windows oprettede payloaden et PowerShell-script i den midlertidige mappe. Den brugte skjulte Windows Script Host- og VBS-komponenter til at holde processen kørende.
Forskere fandt ud af, at anden fase af payloaden kunne indsamle oplysninger om værtssystemet og stjæle legitimationsoplysninger. Den målrettede login-databaser, som bruges af Chrome, Brave og Edge.
Malwaren forsøgte også at forblive på inficerede systemer. Den brugte Registry Run-nøgler på Windows, LaunchAgent-poster på macOS og systemd-tjenester på Linux til at etablere persistens.
Arrayref-angrebet påvirkede tre pakker
De skadelige pakkeversioner omfattede arrayref version 0.3.10, append-only-vec version 0.1.9 og internment version 0.8.7. Alle tre pakker blev vedligeholdt gennem den samme konto.
Angriberen udgav også flere pakker under separate navne, herunder aovine, arone, aronenao og tinymember. Registret har fjernet disse yderligere pakker.
Kampagnen begyndte tidligt den 20. august. Angriberne oprettede konti, der efterlignede legitime brugere, før de udgav en oprindeligt harmløs proc-macro1-pakke. Derefter udgav de en skadelig opdatering og publicerede de kompromitterede crate-versioner gennem den kompromitterede vedligeholderkonto.
Registret fjernede den skadelige afhængighed og fjernede senere også arrayref 0.3.10 fra sit indeks. Den samlede eksponeringsperiode varede næsten 90 minutter.
Udviklere bør betragte berørte builds som kompromitterede
Udviklere bør gennemgå Cargo.lock-filer og build-registreringer for de berørte versioner. De bør også søge efter de filer, som malwaren oprettede, og undersøge netværkstrafik knyttet til kampagnens infrastruktur.
Alle, der byggede et projekt i eksponeringsperioden, bør udskifte tilgængelige legitimationsoplysninger, CI-tokens, signeringsnøgler og andre hemmeligheder. Teams bør genopbygge berørte miljøer fra kendte, sikre sikkerhedskopier efter at have afsluttet deres undersøgelse.
Projekter, der fortsat er rene, bør låse deres afhængigheder til kendte, sikre versioner, indtil situationen omkring vedligeholderkontoen er fuldt afklaret. Forskere har bemærket infrastrukturoverlap med nylige Nordkorea-tilknyttede forsyningskædekampagner, selvom dette ikke bekræfter, hvem der står bag angrebet.
Konklusion
Kompromitteringen af Arrayref-craten til Rust viser, hvordan en lille ændring i en afhængighed kan eksponere store dele af softwareforsyningskæden. Udviklere, der installerede de berørte versioner, bør antage, at der er en risiko, undersøge deres miljøer og straks udskifte følsomme legitimationsoplysninger.


0 svar til “Kompromitteret Arrayref-crate til Rust spreder infostealer-malware”