The Ledger Attack: hardware-cryptowallets leegmaken

The Ledger Attack: hardware-cryptowallets leegmaken

Dit bericht analyseert de aanval op Ledger als een voorbeeld van hoe spear phising leidde tot een software supply chain (SSC) aanval op de software connect-kit tool die de hardware wallets van het bedrijf gebruikten, waardoor de acteur geld ter waarde van minstens $600,000 kon wegsluizen. 

Deze aanval kwam tegen het einde van een jaar, geplaagd door supply chain-incidenten. In dit bericht analyseren we de aanval, de impact ervan, hoe deze werd afgehandeld en welke lessen daaruit konden worden getrokken.

Ledger en zijn hardware wallet-gebruikers zijn duidelijke doelwitten voor cybercriminelen. Wallet drainers vielen Ledger-gebruikers aan via phishing-pogingen op de front-ends van de crypto-apps, en de criminelen moeten de coördinaten van de gebruiker kennen om de phishing-campagnes aan te sturen. Grootboek had een datalek tegen juli 2023 maar ook als onderdeel van de September 2020 gegevensdiefstal op hun e-commerce Shopify, een incident met grote impact. De post "Update: inspanningen om uw gegevens te beschermen en de spammers te vervolgenlaat zien hoe diep deze inbreuken gingen.

Ledger moet beveiliging serieus nemen (het is een belangrijk onderdeel van hun bedrijf), met een intern onderzoekslaboratorium (houden) afhandeling certificering van apparaatbeveiliging, een bug bounty programma, veiligheidsbulletinsen modellering van bedreigingen. Tot nu toe gaat het goed…

Hoe de aanval werd uitgevoerd

Ledger heeft een exploit gedetecteerd met behulp van Ledger's DApp Connect-kit op donderdag 14 december 2023. Deze exploit injecteerde kwaadaardige code in op Ethereum gebaseerde gedecentraliseerde applicaties (DApps) die Ledger Connect Kit gebruikten, waardoor gebruikers werden misleid om transacties te ondertekenen die hun portemonnee leegmaakten. 

De exploit werd snel opgemerkt en kort daarna werd een oplossing geïmplementeerd. In de tussentijd viel een klein aantal gebruikers in de aanval en ondertekende transacties die hun portemonnee leegmaakten.

De aanval begon toen een voormalige Ledger-medewerker het slachtoffer werd van een phishing-aanval waarbij via het sessietoken toegang werd verkregen tot zijn/haar NPM-account. De aanvallers publiceerden kwaadaardige versies van het  @ledgerhq/connect-kit (1.1.5, 1.1.6 en 1.1.7, nu gepensioneerd). De aanvallers kunnen willekeurige code uitvoeren met hetzelfde machtigingsniveau als de portemonnee-app: aanvallers kunnen het geld van gebruikers onmiddellijk leegmaken zonder interactie, talloze phishing-links verspreiden om gebruikers te misleiden, of de paniek van gebruikers uitbuiten door hen ervan te overtuigen activa naar een nieuw adres over te dragen , resulterend in activaverlies als gevolg van het downloaden van een nep-portemonnee.

Wallet-front-ends (dApps) gebruikten doorgaans de connect-kit-lader pakket van Ledger om de Connect Kit tijdens runtime te laden vanaf een JavaScript CDN (jsDelivr). Helaas, de URL https://cdn.jsdelivr.net/npm/@ledgerhq/connect-kit@1 was niet de exacte versie aan het vastzetten (destijds 1.1.4), dus toen de kwaadaardige versies werden geüpload, werden ze aangeboden (en in de cache opgeslagen) door het CDN. En er werd geen controlesom gebruikt om er zeker van te zijn dat de gedownloade bron van het CDN daadwerkelijk de verwachte was (die zou moeten worden gebruikt bij het distribueren van code van een CDN). Dit op controlesom gebaseerde schema heeft een naam Integriteit van subbronnen (SRI).

De geïnjecteerde code manipuleerde waarschijnlijk transactiegegevens, waardoor gebruikers gemanipuleerde betalingen moesten bevestigen. Een gebruiker die bijvoorbeeld een tokenbetaling goedkeurt om de functionaliteit van een app in te schakelen, heeft in plaats daarvan mogelijk een goedkeuring gezien voor een betaling naar het adres van de hacker. Hoe veilig de hardware wallet ook is, het geld werd weggesluisd. 

Ontdekking en onderzoek

Verschillende gebruikers begonnen berichten in X (ook bekend als Twitter) te plaatsen dat de front-end van Zapper “was gekaapt”. De eer gaat naar Mathew Lilley, de CTO van de cryptotrader Sushi, die voor het eerst waarschuwde in een Twitter bericht dat een “veelgebruikte web3-connector” is aangetast. Later wees hij naar LedgerHQ/connect-kit als de gecompromitteerde bibliotheek, en gaf een eerste beoordeling, een beetje brutaal:

Gebruiker 0xViva opende een ticket in de GitHub-projectrepository: [DRINGEND] Deze repository maakt gebruik van een kwaadaardige versie van npm-pakket @ledgerhq/connect-kit, 1.1.7.

Op 15 december 2023 publiceerde het blockchain-beveiligingsformulier SlowMost een analyse bericht met volledige details van de kwaadaardige versies. 

De Ledger-hardwareportemonnee was niet aangetast, alleen de Ledger Connect Kit. Omdat veel applicaties echter die bibliotheek gebruiken, zoals SushiSwap, Zapper, MetalSwap, Harvest Finance, Revoke.cash, enz., was de omvang van de impact aanzienlijk. Volgens bittrace.ioSommige slachtoffers probeerden uit paniek activa over te dragen naar een nieuw adres, maar downloadden een nep-portemonnee-app! 

Nog dezelfde dag klopte Jameson Lopp tweeted over de tekortkomingen waardoor de aanval kon slagen:

Hoe het incident is afgehandeld

De CEO van Ledger, Pascal Gauthier, postte op dezelfde dag van de aanval a openbaarmakingsbrief het geven van meer details over het incident, wat absoluut goed is: de kop in het zand steken als een struisvogel is de slechtste manier om een ​​cyberveiligheidsincident aan te pakken. 

De structuur van de brief is interessant: er werd onmiddellijk het bestaan ​​herkend van kwaadaardige versies van de bibliotheek die geld wegslurpen, wat goed is (de realiteit ontkennen is onzin):

“Vandaag hebben we een exploit ervaren op de Ledger Connect Kit, een Javascript-bibliotheek die een knop implementeert waarmee gebruikers hun Ledger-apparaat kunnen verbinden met DApps (wallet-connected websites) van derden.

Deze exploit was het gevolg van het feit dat een voormalige werknemer het slachtoffer werd van een phishing-aanval, waardoor een kwaadwillende een kwaadaardig bestand kon uploaden naar Ledger's NPMJS (een pakketbeheerder voor Javascript-code die tussen apps wordt gedeeld).

We hebben samen met onze partner WalletConnect snel gewerkt om de exploit aan te pakken, waarbij we de NPMJS hebben bijgewerkt om de schadelijke code binnen 40 minuten na ontdekking te verwijderen en te deactiveren. Dit is een goed voorbeeld van hoe de sector snel samenwerkt om veiligheidsproblemen aan te pakken.” 

Wat? Een voormalig medewerker met publicatierechten heeft zijn inloggegevens bij NPM niet ingetrokken?

De CEO somde vervolgens de aanwezige beveiligingscontroles op, maar liet doorschemeren dat er iets zwak was met de NPM-toegang:

“Nu wil ik ingaan op waarom dit is gebeurd, hoe we onze beveiligingspraktijken zullen verbeteren om dit specifieke risico in de toekomst te beperken, en onze aanbeveling aan de industrie delen, zodat we samen sterker kunnen zijn.

De standard de praktijk bij Ledger is dat geen enkele persoon code kan implementeren zonder beoordeling door meerdere partijen. We hebben sterke toegangscontroles, interne beoordelingen en code multi-signatures als het gaat om de meeste onderdelen van onze ontwikkeling. Dit is het geval in 99% van onze interne systemen. Elke werknemer die het bedrijf verlaat, krijgt zijn toegang tot elk Ledger-systeem ingetrokken.

Dit was een ongelukkig geïsoleerd incident. Het herinnert ons eraan dat beveiliging niet statisch is en dat Ledger onze beveiligingssystemen en -processen voortdurend moet verbeteren. Op dit gebied zal Ledger strengere beveiligingscontroles implementeren, die onze build verbinden pipeline dat streng ten uitvoer legt software supply chain security naar het NPM-distributiekanaal."

Het leek erop dat het NPM-account met toestemming om nieuwe versies van de bibliotheek te publiceren minder strenge beveiligingscontroles had dan andere delen van hun software-infrastructuur. Geïsoleerd incident door pech?

Het einde van de brief is een meer standard gedeelte van de betrokkenheid bij de autoriteiten, “under control statement”, en excuses:

“Ledger heeft contact gehad met de autoriteiten en doet er alles aan om te helpen terwijl dit onderzoek zich ontvouwt. Ledger zal getroffen gebruikers ondersteunen bij het vinden van deze slechte actor, hen voor de rechter brengen, het geld traceren en samenwerken met wetshandhavingsinstanties om gestolen activa van de hacker terug te krijgen. Wij betreuren ten zeerste de gebeurtenissen die zich vandaag hebben voorgedaan voor de getroffen personen. 

De situatie is nu onder controle en de dreiging is geweken. We begrijpen de paniek die dit veroorzaakte voor de gemeenschap en het bredere ecosysteem.”

Bij de brief is een tijdlijn toegevoegd, waardoor gebruikers goed kunnen begrijpen hoe het incident is ontdekt, welke specifieke inperkings- en herstelmaatregelen zijn genomen en hoe de schade voor getroffen gebruikers zal worden verhaald/gecompenseerd. Dit is het meest muntspecifieke deel:

“Vanochtend CET werd een voormalige Ledger-medewerker het slachtoffer van een phishing-aanval waarbij toegang werd verkregen tot zijn NPMJS-account. De aanvaller publiceerde een kwaadaardige versie van de Ledger Connect Kit (met betrekking tot versies 1.1.5, 1.1.6 en 1.1.7). De kwaadaardige code maakte gebruik van een frauduleus WalletConnect-project om geld om te leiden naar een hackerportemonnee. De technologie- en beveiligingsteams van Ledger werden gewaarschuwd en binnen 40 minuten nadat Ledger hiervan op de hoogte was, werd een oplossing geïmplementeerd. Het kwaadaardige bestand was ongeveer vijf uur live, maar we denken dat de periode waarin geld werd weggesluisd beperkt was tot een periode van minder dan twee uur. Ledger coördineerde met WalletConnect, die het schurkenproject snel uitschakelde. De authentieke en geverifieerde Ledger Connect Kit versie 1.1.8 wordt nu verspreid en is veilig te gebruiken.

Voor bouwers die de Ledger Connect Kit-code ontwikkelen en ermee werken: het connect-kit-ontwikkelteam van het NPM-project is nu alleen-lezen en kan het NPM-pakket om veiligheidsredenen niet rechtstreeks pushen. We hebben de geheimen intern gerouleerd om te publiceren op Ledger's GitHub. Ontwikkelaars, controleer nogmaals of u de nieuwste versie, 1.1.8, gebruikt.

Grootboek, samen met Wallet Connect en onze partners hebben het portemonneeadres van de slechte acteur gerapporteerd. Het adres is nu zichtbaar op Chainalysis. ketting heeft de USDT van de slechte acteur bevroren.”

Volgens dit bericht kwam de inperking snel tot stand, omdat het malafide WalletConnect-project voor het omleiden van geld onmiddellijk werd uitgeschakeld. Maar zelfs hiermee werden sommige portemonnees leeggezogen.

Nasleep: hoe de industrie reageerde

Sommige gebruikers uitten hun woede over Ledger omdat ze er niet in slaagden het compromis te voorkomen, terwijl anderen waarschuwden voor de gevaren van het vertrouwen op bibliotheken van derden.

De cyberbeveiligingsindustrie heeft een niche in cybercoin. Bekend zijn portemonnee-drainagecampagnes, waarbij vooral gebruik wordt gemaakt van phishing-sites om eindgebruikers te misleiden. Het gebruikelijke SaaS-bedrijf (Scam-as-a-Service) heeft gespecialiseerde actoren voor het aftappen van portemonnees, zoals de zwendelverkoper Inferno afdruiprek welke aangekondigde stopzetting van de activiteiten in november 2023. Dit lijkt hoe dan ook een valse vlag te zijn, volgens recente activiteiten in Dune's @scamsniffer. Het schema dat zij volgen werd uitgelegd in deze Group-IB-post:

De workflow van Inferno Drainer. Bron: Tot ziens Inferno Drainer? (…), door Groep-IB.
The Ledger Attack: hardware-cryptowallets leegmaken

Sommige analisten gaven hints over wat de aanval niet mogelijk maakte. Dit commentaar van gebruiker brianddk in het ticket in de repository van het project geeft ons inzicht in de hoofdoorzaak: 

The Ledger Attack: hardware-cryptowallets leegmaken

A commentaar van een andere gebruiker, HenryQW, wees op het tweede ding dat ervoor zorgde dat de kwaadaardige versies zich via CDN konden verspreiden:

Het is te vroeg om initiatieven op lange termijn te zien om crypto wallet front-ends robuuster te maken tegen phishing-aanvallen. Het lijkt erop dat het vereisen van naleving van een standard vergelijkbaar met wat de PA-DSS doet voor softwareleveranciers van betaalapplicaties zou welkom kunnen zijn in de crypto-industrie.

En nu: lessen geleerd!

Het is verbazingwekkend hoe een hardware wallet, het toonbeeld van crypto-beveiliging, werd geschonden door simpelweg toegang te krijgen tot NPM-referenties van een Ledger “voormalige werknemer” (waarschijnlijk gebruikersnaam/wachtwoord zonder 2FA-beveiliging, of een toegangstoken). Dit incident herinnert ons eraan dat wanneer u onder vuur ligt, uw software-infrastructuur met dezelfde zorg moet worden beschermd als uw software- of hardwareproducten.

De meeste software supply chain-aanvallen beginnen met het compromitteren van een intern account (vaak voor een ontwikkelaar of devops-engineer). De aanvallers bewegen zich vervolgens lateraal om interne systemen in de software-infrastructuur te schenden, zoals de CI/CD systeem of de implementatietools, of erin slagen om kwaadaardige logica toe te voegen aan broncode-repositories, die gedetecteerd kunnen worden als er een correcte afhandeling van wijzigingen met branch-beveiliging en codebeoordelingen is. Maar aanvallers hoeven niet zo diep te gaan als het doelwit een populaire bibliotheek is die is gepubliceerd in een openbaar register, vooral als ze toegang kunnen krijgen om (schrijf)referenties te publiceren. En dit is wat er gebeurde bij deze aanval. 

2FA-authenticatie, met name door robuuste elementen zoals beveiligingssleutels te gebruiken, wordt het risico bij interactieve handelingen beperkt. Voor CI/CD pipelines, toegangstokens met beperkte toegang opgeslagen als een CI/CD geheim is de gebruikelijke manier om te gaan (en de toegangstoken mag niet worden gelekt). Helaas lijkt het erop dat de werknemer geen robuuste 2FA-set had. NPM staat toe organisaties om 2FA af te dwingen (maar dit is optioneel, niet de standaard), wat waarschijnlijk is wat Ledger zou moeten hebben. En vergeet niet om passend toe te voegen intrekking van inloggegevens procedures voor voormalige werknemers, vooral als het gaat om toegang tot middelen die zo cruciaal zijn als de NPM-scope die eigendom is van de organisatie.

Versie vastzetten voor afhankelijkheden met herziene versiehobbels is een praktijk die de verspreiding van kwaadaardige afhankelijkheden beperkt. In de context van het Ledger-incident zijn de versies van de bibliotheek die de connect-kit-lader genomen van CDN had moeten worden vastgezet, en “vertrouw niet wat de CDN ook gooit”. Een .... hebben controlesomverificatie bijvoorbeeld via SRI (of zelfs een digitaal handtekeningschema dat ook de bron authenticeert) moet worden gebruikt bij het ophalen van een CDN voor het dynamisch laden van code.  

De rest is een verhaal.

Voor de meer conventionele phishing-campagnes gericht op portemonnee-gebruikers is de vraag: wat zorgt ervoor dat gebruikers in de val lopen van criminelen en transacties bevestigen die ze nooit van plan waren uit te voeren? De phishing-sites in dit domein zijn goed ontworpen en overtuigend en imiteren populaire cryptomerken; en ze bieden ook gratis tokens aan, het slaan van NFT's en andere beloningen. Het vermijden dat gebruikers in dergelijke valkuilen trappen is een probleem waar een oplossing voor gezocht moet worden.

En om niet te vergeten de gerelateerde cryptohacken aanvallen, een meer algemene dreiging, waarbij de tegenstanders cloudinfrastructuren overnemen om mijnwerkers voor cryptocurrency te runnen, vaak voor privacymunten zoals Monero XMR en Zcash, met verborgen transactiegeschiedenissen. Cryptojacking is relevant omdat het ELKE organisatie kan treffen, en hoewel de winst voor de aanvaller laag kan zijn, kunnen de kosten voor het slachtoffer groot zijn (Sysdig genoemd in dit rapport dat het voor de slachtofferorganisatie $53 aan kosten kost voor elke $1 die voor de aanvaller wordt gedolven).

Referenties

Ontdek de functies van Xygeni!
Bekijk onze videodemo
sca-tools-software-compositie-analyse-tools
Prioriteer, herstel en beveilig uw softwarerisico's
Gratis proefperiode van 7-dag
Geen kredietkaart nodig

Beveilig uw softwareontwikkeling en -levering

met Xygeni-productsuite