Det första nya beroendet på tio år
Den 20 augusti 2026 använde en angripare, som hade kapat ett underhållarkonto på crates.io, det officiella registret för Rust-paket, den åtkomsten för att publicera förgiftade versioner av tre flitigt använda crates: arrayref, internment och append-only-vec. Arrayref ensamt finns i mer än 35 procent av alla Rust-miljöer och i ungefär tre av fyra miljöer där Rust överhuvudtaget förekommer, vilket gör det till ett av de mest allestädesnärvarande små biblioteken i hela ekosystemet, även om man knappt lägger märke till det.
Den skadliga versionen arrayref 0.3.10 hade en detalj som ensam borde ha varit en varningssignal: det var det första nya beroendet arrayref någonsin hade lagt till under hela sin tioåriga historia. Att ett crate som gett ut uppdateringar utan beroenden i ett helt årtionde plötsligt får ett, är exakt den typ av förändring en noggrann beroendegranskning borde flagga, om någon överhuvudtaget granskade den.
Ett build-skript körde innan någon kod överhuvudtaget gjorde det
Varje förgiftad version lade till ett beroende till ett nytt crate som heter proc-macro1, som också var skadligt. Proc-macro1 innehöll ett build-skript, ett litet program som Cargo, Rusts byggverktyg, kör automatiskt som en del av att kompilera ett projekt, innan projektets egen kod ens är färdigbyggd eller körts.
Just den automatiska körningen gjorde attacken så tyst: en utvecklare eller en CI-pipeline behövde inte köra den färdiga binären, klicka på något alls eller importera en misstänkt funktion för att bli komprometterad. Det räckte att köra cargo build på ett projekt som var beroende av det förgiftade crate för att utlösa build-skriptet och ladda ner angriparens nyttolast.
Återkalla och knuffa: ett trick lånat från npm
Angriparen återkallade också arrayrefs äldre, rena versioner, 0.3.5 till 0.3.9, från registret. Att återkalla en version tar inte bort den helt, men det får Cargo att visa sin vanliga varning om att ett projekt bör överväga att uppdatera till en version som inte är återkallad.
Med varje ren version markerad som återkallad blev den enda icke-återkallade utgåvan som Cargo kunde rekommendera den skadliga 0.3.10, vilket knuffade utvecklare mot den förgiftade versionen genom registrets eget verktyg. Säkerhetsforskare hade redan sett exakt detta mönster av återkallande och knuff i tidigare npm-försörjningskedjeattacker, så att det dyker upp på crates.io tyder på samma social engineering-via-verktyg-spel, inte en ny uppfinning.
Tre crates, tre korta tidsfönster
Alla tre skadliga versioner publicerades inom ett 22-minuters fönster på morgonen den 20 augusti 2026, och alla tre togs bort inom ungefär 90 till 107 minuter efter att de gått live, så snart Rust Security Response Team hade låst det komprometterade kontot och dragit tillbaka paketen.
| Crate | Skadlig version | Publicerad (UTC) | Borttagen (UTC) | Minuter live |
|---|---|---|---|---|
| arrayref | 0.3.10 | 07:15 | 08:41 | 86 |
| internment | 0.8.7 | 07:34 | 09:04 | 90 |
| append-only-vec | 0.1.9 | 07:37 | 09:25 | 107 |
Ett fönster på mindre än två timmar låter kort, men crates.io har ingen inbyggd fördröjning mellan att en ny version publiceras och att varje beroende projekt automatiskt kan hämta den vid nästa bygge, så även ett kort fönster räcker för att ett build-skript ska nå ett projekt som råkar byggas om under den tiden.
Stöld av inloggningsuppgifter, en kill switch och en koppling till Nordkorea
Wiz Research analyserade nyttolasten och hittade en bakdörr som skickar signaler till en fjärrserver via HTTPS, listar sparade inloggningsuppgifter från Chrome, Brave och Edge, installerar plattformsoberoende persistens och kan köra fyra olika fjärrkommandon, däribland en kill switch och ett kommando för att köra godtyckliga skript.
Wiz upptäckte också att bakdörrens beacon-slutpunkt delar infrastruktur med Mastra-kampanjen, som Microsoft har knutit till Sapphire Sleet, en grupp med koppling till Nordkorea, och till en tidigare attack mot npm-paketet axios som Google Cloud Threat Intelligence och Mandiant var för sig också kopplade till Nordkorea, vilket antyder att samma typ av aktör som redan komprometterat npm nu har visat samma förmåga mot crates.io. Upptäckten tillskrivs Nextron Systems GmbH, ett tyskt säkerhetsföretag; Rust Security Response Team låste kontot och drog tillbaka alla tre versionerna, och hittills har inga bekräftade bevis för faktiskt utnyttjande dykt upp.
Rust löser minnesbuggar, inte frågan om vem som kontrollerar kontot
EU:s Cyber Resilience Act och NIS2 har länge knuffat tillverkare av säkerhetskritiska och uppkopplade produkter mot minnessäkra språk, och Rust har varit en av de största vinnarna av den knuffen. Den här incidenten påminner om att en övergång till Rust av efterlevnadsskäl löser ett problem, minnessäkerhetsbuggar som buffertöverflöde, utan att röra ett helt annat: vem som kontrollerar kontot som publicerar ett projekts beroenden, och vad ett build-skript får köra innan projektets egen kod överhuvudtaget är färdigkompilerad.
Ägare som har beordrat en Rust-migrering av efterlevnadsskäl bör ställa tre konkreta frågor till sina utvecklingsteam: granskas beroendeuppdateringar innan de mergas, kan CI-pipelinen begränsa vad ett build-skript får göra, och skulle någon överhuvudtaget lägga märke till att ett paket som teamet litat på i åratal återkallas och publiceras på nytt samma dag. Det är värt att notera att själva upptäckten kom från Nextron Systems GmbH, ett tyskt företag, vilket motsäger varje antagande om att den här typen av försörjningskedjerisk bara drabbar andra.
Läs vidare: Ingen kan granska chipet i din säkerhetsnyckel | Er bounty-budget köper AI-skräp



