Arrayref-craten för Rust komprometterades i en leveranskedjeattack som distribuerade infostealer-skadlig kod på utvecklares system under kompilering. Angriparna infekterade även cratesen append-only-vec och internment under samma korta attackperiod.
Arrayref är ett vanligt använt Rust-bibliotek med mer än 53 miljoner nedladdningar under de senaste 90 dagarna. Det förekommer i projekt inom kryptografi, grafik och blockkedjeteknik, vilket gör incidenten till ett allvarligt problem för utvecklare och organisationer som är beroende av Rust-beroenden.
De skadliga versionerna har sedan dess tagits bort. Alla som installerade de berörda paketen under exponeringsperioden bör dock undersöka sina system efter tecken på intrång.
Angripare använde ett typosquattat beroende
Angriparen modifierade de berörda versionerna genom att lägga till ett beroende med namnet proc-macro1. Paketet imiterade den legitima och välanvända proc-macro2-craten genom ett snarlikt namn.
Den ursprungliga källkoden i de komprometterade paketen förblev i övrigt oförändrad. Det gjorde det svårare att upptäcka det skadliga tillägget vid en snabb granskning av källkoden.
Paketet proc-macro1 innehöll ett build.rs-skript som kördes automatiskt under kompileringen. Skriptet återskapade sin infrastruktur från kodade fragment och valde en payload som matchade utvecklarens operativsystem.
Den skadliga koden stödde Linux x86-64, Windows x86-64, macOS x86-64 och macOS ARM64. Stödet för flera plattformar ökade kampanjens potentiella räckvidd avsevärt.
Skadlig kod stjäl data och etablerar persistens under byggprocessen
På Unix-system skrev den skadliga koden en fil med namnet rust-setup till den temporära katalogen. Därefter markerade den filen som körbar och startade den som en fristående process.
På Windows skapade payloaden ett PowerShell-skript i den temporära mappen. Den använde dolda Windows Script Host- och VBS-komponenter för att hålla processen igång.
Forskare upptäckte att payloaden i det andra steget kunde samla in information om värdsystemet och stjäla autentiseringsuppgifter. Den riktade in sig på webbläsarnas inloggningsdatabaser i Chrome, Brave och Edge.
Den skadliga koden försökte också stanna kvar på infekterade system. Den använde Registry Run-nycklar i Windows, LaunchAgent-poster i macOS och systemd-tjänster i Linux för att etablera persistens.
Arrayref-attacken påverkade tre paket
De skadliga paketversionerna omfattade arrayref version 0.3.10, append-only-vec version 0.1.9 och internment version 0.8.7. Samma konto hanterade alla tre paketen.
Angriparen publicerade även flera paket under separata namn, däribland aovine, arone, aronenao och tinymember. Registret har tagit bort dessa ytterligare paket.
Kampanjen började tidigt den 20 augusti. Angriparna skapade konton som imiterade legitima användare innan de publicerade ett initialt ofarligt proc-macro1-paket. Därefter släppte de en skadlig uppdatering och publicerade de infekterade crate-versionerna via det komprometterade underhållarkontot.
Registret tog bort det skadliga beroendet och tog senare även bort arrayref 0.3.10 från sitt index. Den totala exponeringsperioden varade i nästan 90 minuter.
Utvecklare bör betrakta berörda builds som komprometterade
Utvecklare bör granska Cargo.lock-filer och byggloggar efter de berörda versionerna. De bör även söka efter de filer som den skadliga koden skapade och undersöka nätverkstrafik kopplad till kampanjens infrastruktur.
Alla som byggde ett projekt under exponeringsperioden bör byta ut tillgängliga autentiseringsuppgifter, CI-tokens, signeringsnycklar och andra hemligheter. Team bör återställa berörda miljöer från kända säkra säkerhetskopior efter att utredningen har slutförts.
Projekt som fortfarande är rena bör låsa sina beroenden till kända säkra versioner tills situationen kring underhållarkontot är helt löst. Forskare har noterat överlappande infrastruktur med nyligen genomförda Nordkoreakopplade leveranskedjekampanjer, även om detta inte bekräftar vem som ligger bakom attacken.
Slutsats
Komprometteringen av Arrayref-craten för Rust visar hur en liten förändring i ett beroende kan exponera stora delar av mjukvarans leveranskedja. Utvecklare som installerade de berörda versionerna bör utgå från att det finns en risk, undersöka sina miljöer och omedelbart byta känsliga autentiseringsuppgifter.


0 svar till ”Komprometterad Arrayref-crate för Rust sprider infostealer-skadlig kod”