Supply-chain-aanvallen: kwaadaardige pakketten en gecompromitteerde walletbibliotheken
Een crypto-supply-chain-aanval verstopt kwaadaardige code in software die je vertrouwt. Lees hoe gecompromitteerde pakketten en walletbibliotheken werken en hoe je jezelf beschermt.
Bij een crypto-supply-chain-aanval compromitteren criminelen software waarvan wallets, apps of websites afhankelijk zijn, zoals een opensourcepakket, een browserextensie of een updateserver, zodat kwaadaardige code gebruikers via een vertrouwd kanaal bereikt. De code verwisselt doorgaans bestemmingsadressen, injecteert een wallet drainer in een website of steelt seedzinnen, en slachtoffers doen vaak niets verkeerd behalve een product gebruiken dat ze al vertrouwen.
Deze aanvallen zijn belangrijk voor iedereen in crypto, niet alleen voor ontwikkelaars. Moderne wallets en gedecentraliseerde apps zijn opgebouwd uit honderden componenten van derden, en één gecompromitteerd component kan veel producten tegelijk treffen. Deze gids legt uit hoe de aanvallen werken, waar je op moet letten en hoe je je risico als gebruiker of bouwer verkleint.
Hoe een supply-chain-aanval werkt
De ‘toeleveringsketen’ van een crypto-app is alles wat erin gaat: codebibliotheken, buildtools, hostingproviders, content delivery networks en updateservers. Een aanval volgt meestal deze stappen:
- 1Toegang krijgen. De aanvaller phisht een maintainer van een populaire bibliotheek, koopt een verlaten pakket, raadt een zwak wachtwoord of misbruikt een buildserver.
- 2Kwaadaardige code invoegen. Hij publiceert een nieuwe versie met verborgen code, vaak versluierd en zo ontworpen dat die alleen onder bepaalde omstandigheden actief wordt, bijvoorbeeld wanneer er een cryptowallet aanwezig is.
- 3Verspreiden via updates. Apps die automatisch de nieuwste versie van de bibliotheek ophalen, nemen de kwaadaardige code op in hun volgende build of, bij websites, zodra het script laadt.
- 4Stelen. De code kan naar het klembord gekopieerde adressen vervangen, een nep-transactieverzoek tonen, om een seedzin vragen of een drainer injecteren in de front-end van een gedecentraliseerde app.
- 5Verbergen. Aanvallers verwijderen de code vaak snel na gebruik, wat onderzoek moeilijker maakt.
Er zijn gedocumenteerde echte incidenten volgens dit patroon. In 2018 werd aan een populair JavaScript-pakket een kwaadaardige afhankelijkheid toegevoegd die bedoeld was om gebruikers van een specifieke bitcoin-wallet-app te bestelen. In december 2023 zorgde een gecompromitteerde versie van de Connect Kit-bibliotheek van Ledger ervoor dat verschillende gedecentraliseerde apps hun gebruikers kortstondig een wallet drainer toonden. Beide gevallen laten zien dat het zwakke punt de gedeelde code was, niet de gebruikers. Lees voor meer verdieping Risico’s van vanity-adressen en sterk gelijkende adressen.
Veelvoorkomende toegangspunten
| Toegangspunt | Hoe het wordt misbruikt | Wie wordt getroffen |
|---|---|---|
| Opensourcepakketten (npm, PyPI en vergelijkbare) | Kwaadaardige versie gepubliceerd of pakket met bijna dezelfde naam geüpload | Apps en ontwikkelaars die het pakket gebruiken |
| Front-endscripts die van derden worden geladen | Script aangepast om een drainer te injecteren | Elke bezoeker van de site |
| Browserextensies | Extensie verkocht of gekaapt en daarna bijgewerkt met kwaadaardige code | Gebruikers die de extensie hebben geïnstalleerd |
| App-updates | Updateserver of ondertekeningssleutels gecompromitteerd | Gebruikers die de update installeren |
| Ontwikkeltools en door AI voorgestelde pakketten | Nep-pakketnamen die geloofwaardig lijken | Ontwikkelaars die zonder controle installeren |
Typosquatting, het uploaden van een pakket met een naam die sterk lijkt op die van een populair pakket, komt bijzonder vaak voor. Een ontwikkelaar die een pakketnaam verkeerd typt, kan malware installeren zonder het te merken.
Een hypothetisch voorbeeld
Dit is een illustratief, samengesteld voorbeeld, geen echte zaak. Stel je een kleine gedecentraliseerde beurs voor die een populaire bibliotheek voor walletverbindingen laadt uit een openbaar pakketregister. Op een ochtend wordt de maintainer van de bibliotheek gephisht en publiceert de aanvaller een nieuwe versie. De website van de beurs laadt automatisch de nieuwste versie.
Een paar uur lang ziet elke gebruiker die een wallet verbindt iets wat eruitziet als een normaal swapverzoek. In werkelijkheid is het een verzoek om hun tokens goed te keuren voor het contract van de aanvaller. Gebruikers die het goedkeuringsscherm van hun wallet zorgvuldig lezen, zien een onbekend contract en stoppen. Gebruikers die doorklikken, verliezen hun tokens. Het team van de beurs ontdekt het probleem wanneer gebruikers verliezen melden en publiceert een waarschuwing, maar dan is de code al verwijderd.
Waarschuwingssignalen voor gebruikers
- Een vertrouwde app vraagt ineens om een seedzin of een stap voor ‘walletvalidatie’ waar hij nooit eerder om vroeg.
- Een routinehandeling levert een ongebruikelijk walletverzoek op, zoals een onbeperkte goedkeuring of een handtekening voor een onbekend contract.
- Het adres op het scherm van je hardware wallet komt niet overeen met het adres dat je bedoelde.
- Een browserextensie wordt bijgewerkt en vraagt nieuwe machtigingen, vooral om gegevens op alle websites te lezen en te wijzigen.
- Een project of beveiligingsonderzoekers plaatsen dringende waarschuwingen om een site of app niet te gebruiken.
Veel hiervan overlappen met klembordmalware en nep-wallet-apps, die vergelijkbare technieken gebruiken. Zie ook: Nep-browserupdates en captcha-malware gericht op cryptogebruikers.
Hoe je jezelf beschermt
Als gebruiker
- 1Gebruik een hardware wallet en lees het adres, het bedrag en het contract op het scherm voordat je bevestigt.
- 2Houd extensies tot een minimum beperkt. Verwijder de extensies die je niet gebruikt en wees voorzichtig wanneer een extensie van eigenaar wisselt of om nieuwe machtigingen vraagt.
- 3Scheid je geld. Bewaar langetermijnbezit in een wallet die zelden met websites verbindt en gebruik een andere wallet voor dagelijkse DeFi.
- 4Pauzeer na beveiligingswaarschuwingen. Gebruik een app niet totdat die bevestigt dat het probleem is opgelost.
- 5Trek onnodige goedkeuringen regelmatig in.
Als ontwikkelaar of project
- Zet versies van afhankelijkheden vast en gebruik lockfiles; beoordeel wijzigingen voordat je upgradet.
- Controleer pakketnamen zorgvuldig en geef de voorkeur aan goed onderhouden bibliotheken.
- Vereis meervoudige authenticatie voor accounts bij pakketregisters en codehostingdiensten.
- Gebruik ondertekende releases en, waar mogelijk, reproduceerbare builds zodat gebruikers binaries kunnen verifiëren.
- Gebruik een content security policy en subresource integrity voor scripts van derden.
Wat te doen als je getroffen bent
- 1Stop met het gebruik van de getroffen app of extensie en verbreek de verbinding met alle wallets.
- 2Controleer je transactiegeschiedenis op goedkeuringen of overboekingen tijdens de getroffen periode.
- 3Trek verdachte goedkeuringen in en zet resterend geld over naar een nieuwe wallet met een nieuwe seedzin als je seedzin mogelijk is blootgesteld.
- 4Verzamel transactiehashes en adressen en meld het incident vervolgens via de officiële kanalen van het project en ons meldformulier voor oplichting.
Volg de volledige checklist in wat je meteen moet doen als je wallet gecompromitteerd is.
Conclusie
Supply-chain-aanvallen maken van vertrouwde software een afleverkanaal voor diefstal, dus je kunt niet alleen vertrouwen op het vermijden van verdachte links. Zie het scherm van je hardware wallet en de verzoeken van je wallet als de laatste controle, houd je softwarevoetafdruk klein en reageer snel op officiële beveiligingswaarschuwingen. Bouwers dragen de meeste verantwoordelijkheid: zet vast, beoordeel en onderteken alles wat je uitbrengt.
Veelgestelde vragen
Wat is een supply-chain-aanval in crypto?
Het is een aanval waarbij criminelen software compromitteren waarvan andere producten afhankelijk zijn, zoals een codebibliotheek, een browserextensie of een app-update, in plaats van gebruikers rechtstreeks aan te vallen. Wanneer de vertrouwde software wordt bijgewerkt, bereikt de kwaadaardige code elke app en elke gebruiker die erop vertrouwt, vaak om crypto te stelen of adressen te verwisselen.
Kan een supply-chain-aanval een hardware wallet treffen?
Het scherm van een hardware wallet is ontworpen om je te beschermen, zelfs als je computer of een website gecompromitteerd is, omdat je het echte adres en bedrag op het apparaat bevestigt. Aanvallen kunnen je toch verleiden een kwaadaardige transactie goed te keuren als je het scherm niet leest, dus controleer de gegevens altijd op het apparaat zelf.
Hoe weet ik of een website die ik heb gebruikt getroffen is?
Meestal hoor je het via de officiële aankondigingen van het getroffen project of van beveiligingsonderzoekers. Als een project dat je hebt gebruikt een gecompromitteerde bibliotheek of front-end meldt, controleer dan of je in de getroffen periode iets hebt ondertekend, trek goedkeuringen in en zet je geld zo nodig over naar een nieuwe wallet.
Zijn opensource-wallets veilig voor supply-chain-aanvallen?
Open source helpt omdat meer mensen de code kunnen inspecteren, maar het maakt software niet immuun. Kwaadaardige code kan binnenkomen via afhankelijkheden, gecompromitteerde accounts van maintainers of buildsystemen. Reproduceerbare builds, ondertekende releases en zorgvuldig beheer van afhankelijkheden verkleinen het risico.
