Het JavaScript-ecosysteem werd in november 2018 opgeschrikt door een geavanceerde aanval op Copay, een populaire aanbieder van cryptocurrency-wallets. Deze aanval staat bekend als de event-stream-aanval en legde de kritieke kwetsbaarheden bloot die gepaard gaan met het vertrouwen op externe afhankelijkheden bij softwareontwikkeling.
Copay staat tegenwoordig bekend als Bitpay Wallet.

De aanval begrijpen
Event-stream, een populair npm-pakket, werd door talloze projecten gebruikt voor het efficiënt beheren van datastromen binnen Node.js-applicaties. De functionaliteit was essentieel voor ontwikkelaars die complexe datastromen in realtime-applicaties beheerden.
In dit artikel behandelden we de meest voorkomende verborgen aanvalsvectoren en supply chain-aanvallen in meer detail.
Het pakket werd aanvankelijk onderhouden door een toegewijde en vertrouwde ontwikkelaar en was door zijn betrouwbaarheid en prestaties een vaste waarde geworden in veel softwareprojecten.
Zoals vaker gebeurt in de open-source-gemeenschap, had de oorspronkelijke beheerder van event-stream op een gegeven moment geen tijd meer om het project te onderhouden. Eind 2018 werd de verantwoordelijkheid voor event-stream overgedragen aan een nieuwe vrijwillige beheerder. Deze overdracht, hoewel gebruikelijk in open-source-ecosystemen, ging niet gepaard met de gebruikelijke grondige beveiligingscontroles. De nieuwe beheerder, ogenschijnlijk een bijdrager met goede bedoelingen, bleek later kwaadaardige motieven te hebben.
Kort na de overname bracht deze persoon meerdere updates uit voor event-stream. Verborgen in deze updates zat een nieuwe afhankelijkheid genaamd 'flatmap-stream'. Dit pakket was specifiek ontwikkeld als onderdeel van de event-stream-update. Zonder dat gebruikers het wisten, bevatte 'flatmap-stream' kwaadaardige code die geobfusceerd was — een techniek om de werkelijke functionaliteit te verbergen en detectie door beveiligingstools en code-reviews te omzeilen.
Weet dat cside de code deobfusceert, zodat je een volledig gedetailleerd beeld krijgt van wat er wordt geladen. We analyseren vervolgens de volledige code voordat deze door de browser van je gebruiker wordt weergegeven. Dit had dit incident waarschijnlijk aan het licht gebracht.

De kwaadaardige code in 'flatmap-stream' was ontworpen om alleen te activeren wanneer aan bepaalde voorwaarden werd voldaan, specifiek binnen de omgeving van Copay, een cryptocurrency-walletapplicatie gebouwd met JavaScript. Deze specificiteit toont het gerichte karakter van de aanval; de aanvallers hadden een duidelijk begrip van de interne architectuur en afhankelijkheden van Copay.
De payload was geprogrammeerd om te detecteren of de omgeving kenmerken had van de ontwikkelomgeving van Copay. Zodra dit bevestigd was, voerde het routines uit die privésleutels en walletgegevens zochten en extraheerden uit accounts met aanzienlijke hoeveelheden Bitcoin en Bitcoin Cash. Deze gegevens werden vervolgens verzonden naar een externe server die door de aanvallers werd beheerd.
Gevolgen van de aanval
Het event-stream-incident is een schoolvoorbeeld van een client-side supply chain-aanval, waarbij de compromittering van één enkel onderdeel duizenden downstream-projecten kan treffen.
De heimelijke injectie en activering van de kwaadaardige code zorgde ervoor dat deze gedurende meerdere weken onopgemerkt bleef. Ook dat is een veelvoorkomend kenmerk van supply chain-aanvallen.
Gedurende deze periode bevatten updates van de Copay-applicatie onbedoeld de gecompromitteerde module, waardoor alle actieve en nieuwe installaties van de wallet in gevaar kwamen. Gebruikers hadden er geen weet van dat hun nieuw geïnstalleerde of bijgewerkte Copay-wallets gecompromitteerd waren.
Deze aanval resulteerde niet alleen in financiële verliezen voor die gebruikers, maar bracht ook een zware slag toe aan het vertrouwen in open-source-modules en het bredere npm-ecosysteem.
Het benadrukte een aantal kritieke lessen:
- Vertrouwen en verificatie: De noodzaak om de achtergrond en betrouwbaarheid te controleren van personen die de controle krijgen over veelgebruikte open-source-projecten.
- Zichtbaarheid en monitoring: Het belang van inzicht in het gedrag van externe afhankelijkheden, met name die welke de integriteit van kritieke software kunnen aantasten. Dit is precies wat c
- side dekt.
- Snelle respons: De behoefte aan snelle responsmechanismen wanneer een kwetsbaarheid wordt ontdekt, om wijdverspreide schade te voorkomen.
Directe maatregelen en reactie van de gemeenschap
Zodra de kwaadaardige injectie werd ontdekt, handelde het npm-team snel om de gecompromitteerde versie van event-stream uit het register te verwijderen en verdere verspreiding te voorkomen. Deze versie werd ook als verouderd gemarkeerd om ontwikkelaars bewust te maken van het beveiligingsrisico en hen te ontmoedigen deze in nieuwe projecten te gebruiken.
Het event-stream-incident heeft blijvende gevolgen gehad voor het npm-ecosysteem en heeft het belang van beveiliging bij softwareontwikkeling en de inherente risico's van afhankelijkheidsketens — met name in open-source-projecten — onderstreept. Het leidde tot een grotere bewustwording en een voorzichtigere aanpak bij de integratie van externe pakketten, wat uiteindelijk bijdroeg aan een veiliger open-source-softwareomgeving.
Lees hier waarom supply chain-risico niet ophoudt bij npm.
Voorkom een vergelijkbare aanval met cside
Het event-stream-incident is een herinnering aan de kwetsbaarheden die inherent zijn aan softwareafhankelijkheden. Dergelijke kwetsbaarheden stellen bedrijven bloot aan ernstige risico's, waaronder gegevensdiefstal en financieel verlies. Bij cside monitoren, beveiligen en optimaliseren we zelfs je externe scripts. We bieden:
- Geavanceerde monitoring: Onze monitoringsystemen houden alle externe scripts en afhankelijkheden in je projecten in de gaten. We identificeren ongebruikelijke activiteiten of wijzigingen en waarschuwen je hierover in realtime, zodat potentiële inbreuken worden voorkomen voordat ze plaatsvinden.
- Geautomatiseerde beveiligingsverbeteringen: We automatiseren het beveiligingsproces van je software supply chain aan de kant van externe assets. Voordat het script door een gebruiker op je site wordt afgeleverd, hebben we de volledige code in onze proxy gecontroleerd op kwaadaardige inhoud. Als we iets vinden, komt het de browser van de gebruiker niet aan.
- Geoptimaliseerd voor snelheid: Onze proxy voegt geen latency toe, maar doet juist het tegenovergestelde. In de meeste gevallen kunnen we die scripts versnellen om laadtijden te verkorten.
- Proactieve verdediging: Onze proactieve aanpak gaat verder dan eenvoudige monitoring. We analyseren trends en patronen in wereldwijde cyberbeveiligingsdreigingen om onze verdedigingsmechanismen voortdurend te verbeteren. Dit vooruitziende blik stelt ons in staat potentiële nieuwe aanvalsvectoren te anticiperen en te beperken.
- Eenvoudige integratie: cside integreren in je bestaande systemen is ongelooflijk eenvoudig. Voeg ons script toe als het eerste dat wordt geladen en alle andere scripts zijn gedekt.




