De eerste nieuwe afhankelijkheid in tien jaar
Op 20 augustus 2026 gebruikte een aanvaller die een maintainer-account op crates.io, het officiële register voor Rust-pakketten, had overgenomen die toegang om vergiftigde versies van drie veelgebruikte crates te publiceren: arrayref, internment en append-only-vec. Arrayref alleen al zit in meer dan 35 procent van alle Rust-omgevingen en in ongeveer drie op de vier omgevingen waarin Rust voorkomt, waardoor het een van de meest alomtegenwoordige kleine bibliotheken in het hele ecosysteem is, terwijl het bijna niemand opvalt.
De kwaadaardige versie arrayref 0.3.10 had een detail dat op zichzelf al een waarschuwingssignaal had moeten zijn: het was de eerste nieuwe afhankelijkheid die arrayref in zijn hele tienjarige geschiedenis had toegevoegd. Dat een crate die tien jaar lang zonder afhankelijkheden updates uitbracht ineens een afhankelijkheid krijgt, is precies het soort verandering dat een zorgvuldige review van afhankelijkheden zou moeten opmerken, als iemand die review al deed.
Een build-script draaide voordat er ook maar code liep
Elke vergiftigde versie voegde een afhankelijkheid toe aan een nieuwe crate genaamd proc-macro1, die ook kwaadaardig was. Proc-macro1 bevatte een build-script, een klein programma dat Cargo, het build-gereedschap van Rust, automatisch uitvoert als onderdeel van het compileren van een project, nog voordat de eigen code van het project klaar is met bouwen of überhaupt is uitgevoerd.
Precies die automatische uitvoering maakte de aanval zo onopvallend: een ontwikkelaar of een CI-pipeline hoefde de uiteindelijke binary niet uit te voeren, nergens op te klikken of een verdachte functie te importeren om gecompromitteerd te raken. Simpelweg cargo build uitvoeren op een project dat afhankelijk was van de vergiftigde crate volstond om het build-script te activeren en de payload van de aanvaller te downloaden.
Terugtrekken en een duwtje geven: een truc geleend van npm
De aanvaller trok ook de oudere, schone versies van arrayref terug, versies 0.3.5 tot en met 0.3.9, uit het register. Terugtrekken verwijdert een versie niet volledig, maar zorgt er wel voor dat Cargo zijn standaardwaarschuwing toont dat een project zou moeten overwegen te updaten naar een versie die niet is teruggetrokken.
Met elke schone versie gemarkeerd als teruggetrokken, was de enige niet-teruggetrokken release die Cargo nog kon aanbevelen de kwaadaardige 0.3.10, waardoor ontwikkelaars via het eigen gereedschap van het register richting de vergiftigde versie werden geduwd. Beveiligingsonderzoekers hadden dit exacte patroon van terugtrekken en duwen al eerder gesignaleerd bij npm-toeleveringsketenaanvallen, dus de verschijning ervan op crates.io wijst op hetzelfde draaiboek van social engineering via gereedschap, geen nieuwe uitvinding.
Drie crates, drie korte tijdvensters
Alle drie de kwaadaardige versies werden binnen een venster van 22 minuten gepubliceerd op de ochtend van 20 augustus 2026, en alle drie werden binnen ongeveer 90 tot 107 minuten na livegang weer verwijderd, zodra het Rust Security Response Team het gecompromitteerde account had vergrendeld en de pakketten had ingetrokken.
| Crate | Kwaadaardige versie | Gepubliceerd (UTC) | Verwijderd (UTC) | Minuten 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 |
Een venster van minder dan twee uur klinkt kort, maar crates.io heeft geen ingebouwde vertraging tussen het publiceren van een nieuwe versie en het moment waarop elk afhankelijk project deze automatisch kan ophalen bij de volgende build, dus zelfs een kort venster volstaat om een build-script elk project te laten bereiken dat toevallig in die periode opnieuw wordt gebouwd.
Diefstal van inloggegevens, een kill switch en een link met Noord-Korea
Wiz Research analyseerde de payload en vond een achterdeur die via HTTPS naar een externe server seint, opgeslagen inloggegevens uit Chrome, Brave en Edge opsomt, cross-platform persistentie installeert en vier verschillende externe commando's kan uitvoeren, waaronder een kill switch en een commando om willekeurige scripts uit te voeren.
Wiz ontdekte ook dat het beacon-eindpunt van de achterdeur infrastructuur deelt met de Mastra-campagne, die Microsoft toeschreef aan Sapphire Sleet, een aan Noord-Korea gelinkte groep, en met een eerdere aanval op het npm-pakket axios die Google Cloud Threat Intelligence en Mandiant onafhankelijk van elkaar eveneens aan Noord-Korea koppelden, wat suggereert dat dezelfde soort actor die npm al eerder compromitteerde nu dezelfde vaardigheid tegen crates.io heeft aangetoond. De ontdekking wordt toegeschreven aan Nextron Systems GmbH, een Duits beveiligingsbedrijf; het Rust Security Response Team vergrendelde het account en trok alle drie de versies in, en tot nu toe is er geen bevestigd bewijs van daadwerkelijke uitbuiting opgedoken.
Rust lost geheugenbugs op, niet de vraag wie het account beheert
De EU Cyber Resilience Act en NIS2 duwen fabrikanten van veiligheidskritische en verbonden producten al langer richting geheugenveilige talen, en Rust is een van de belangrijkste begunstigden van die druk geweest. Dit incident is een herinnering dat overstappen naar Rust om compliance-redenen een probleem oplost, geheugenveiligheidsbugs zoals buffer-overflows, zonder een heel ander probleem aan te raken: wie het account beheert dat de afhankelijkheden van een project publiceert, en wat een build-script mag uitvoeren voordat de eigen code van het project überhaupt klaar is met compileren.
Eigenaren die om compliance-redenen een Rust-migratie hebben opgelegd, zouden hun engineeringteams drie concrete vragen moeten stellen: worden afhankelijkheidsupdates gereviewd voordat ze worden gemerged, kan de CI-pipeline beperken wat een build-script mag doen, en zou iemand überhaupt merken dat een pakket op dezelfde dag wordt teruggetrokken en opnieuw gepubliceerd, terwijl het team dat pakket al jaren vertrouwt. Het is vermeldenswaard dat de ontdekking zelf van Nextron Systems GmbH kwam, een Duits bedrijf, wat elke aanname ontkracht dat dit soort toeleveringsketenrisico alleen anderen zou treffen.
Lees hierna: Niemand kan de chip in uw beveiligingssleutel controleren | Uw bountybudget koopt AI-rommel



