Skip to main content
Blog
Blog

De cdnjs-kwetsbaarheid van 2021 in detail

Controleren of je externe scriptbronnen betrouwbaar zijn, is belangrijk. Maar dat alleen is mogelijk niet genoeg. Dat leerde de wereld in 2021, toen een enorme kwetsbaarheid in Cloudflare's cdnjs aan het licht kwam. Hier is een overzicht van wat er gebeurde en hoe. Cdnjs is een van de meest gebruikte JavaScript Content Delivery Networks (CDN's) van vandaag. Meer dan 12% van alle websites op internet injecteert ten minste één script via cdnjs. Een onderzoeker met de schermnaam 'RyotaK' deelde een supply cha

Apr 28, 2024 4 min read
Omslagafbeelding van de cdnjs-kwetsbaarheid van 2021 in detail

Controleren of je externe scriptbronnen betrouwbaar zijn, is belangrijk. Maar dat alleen is mogelijk niet genoeg.

Dat leerde de wereld in 2021, toen een enorme kwetsbaarheid in Cloudflare's cdnjs aan het licht kwam. Hier is een overzicht van wat er gebeurde en hoe.

Cdnjs is een van de meest gebruikte JavaScript Content Delivery Networks (CDN's) van vandaag. Meer dan 12% van alle websites op internet injecteert ten minste één script via cdnjs. Een onderzoeker met de schermnaam 'RyotaK' deelde een supply chain-kwetsbaarheid in cdnjs, waarmee iedereen op internet wijzigingen kon doorvoeren in cdnjs-bibliotheken door een reeks specifieke stappen te volgen. Hier zijn zijn volledige bevindingen.

De kwetsbaarheid bevond zich in de updateserver van de cdnjs-bibliotheek. Deze specifieke module helpt ontwikkelaars om populaire pakketten veilig in hun sites te integreren.

De kwetsbaarheid in detail

Door een .tgz-bestand met een speciaal samengestelde bestandsnaam te publiceren in het npm-register — ontworpen om een path traversal-fout te misbruiken — kon een aanvaller de updateserver van de cdnjs-bibliotheek ertoe brengen het kwaadaardige bestand te verwerken. Dit zou een regelmatig uitgevoerd scriptbestand overschrijven, wat leidde tot willekeurige opdrachtuitvoering op de servers van Cloudflare.

Om de exploiteerbaarheid aan te tonen, werd een demonstratie gepland. Daarbij werd een .tgz-bestand aangemaakt dat, bij verwerking door het cdnjs-updatemechanisme, een onschuldig script zou overschrijven met kwaadaardige code. Voordat dit plan werd uitgevoerd, ontdekte de onderzoeker echter nog een krachtige aanvalsvector via Git-repository-updates, waarbij symlinks mogelijk willekeurige bestanden van de updateserver konden uitlezen.

Een onbedoelde fout tijdens de demonstratie leidde tot een opmerkelijke onthulling. Een symbolische koppeling die bedoeld was om naar een onschadelijk bestand te wijzen, werd per ongeluk gericht op /proc/self/environ, waardoor gevoelige omgevingsvariabelen werden blootgesteld, waaronder GITHUB_REPO_API_KEY en WORKERS_KV_API_TOKEN. Deze fout maakte duidelijk hoe een aanvaller toegang kon krijgen tot het grootste deel van de cdnjs-infrastructuur, wat een enorm beveiligingsrisico vormde.

De mogelijke gevolgen

Dit had kunnen leiden tot remote code execution op de servers van Cloudflare en de mogelijkheid om kwaadaardige code uit te voeren in scripts die door alle eindgebruikers worden gebruikt. Dit omzeilt Web Application Firewalls (WAF's) en andere filtermechanismen, omdat het rechtstreeks in de browser zelf wordt uitgevoerd.

Zoals eerder vermeld, had dit meer dan 12% van alle websites en al hun bezoekers direct in gevaar gebracht als de exploit was misbruikt (zodra caches verlopen waren).

Cloudflare reageerde snel en nam passende maatregelen voordat iemand de exploit kon benutten. Ze staan bekend om hun gedetailleerde en zeer transparante post-mortems en incidentmeldingen. De volledige details zijn hier te lezen.

De betere aanpak

Dit alles laat zien dat je bronnen niet zomaar kunt vertrouwen.

Zelfs de besten ter wereld maken fouten. Een veiligere en meer betrouwbare aanpak is om te verifiëren wat die bronnen daadwerkelijk leveren.

Daarom bestaat cside. We bieden een klein script dat aan een webpagina kan worden toegevoegd en twee dingen doet:

  • Scriptbronnen herschrijven om ze via cside te proxyen. Zo plaatst cside zich in de stroom van het verzoek tussen de gebruiker en het externe script, wat volledige inzicht geeft in de geserveerde scripts. We whitelisten niet alleen bronnen, maar duiken diep in elk script, bij 100% van de sessies. In sommige gevallen kunnen zelfs optimalisaties worden doorgevoerd door statische scripts te cachen.
  • Gedragscontroles aan de browserzijde uitvoeren.

cside monitort ook meer dan 60 attributen en gebruikt AI om in realtime indicatoren van kwaadaardige intenties te signaleren. Onze oplossing houdt rekening met historische context, wat betekent dat wijzigingen in de loop van de tijd worden meegenomen, waardoor het eenvoudiger wordt om kapingen te herkennen. Bovendien gebruikt cside AI om de code van externe scripts te analyseren. De combinatie van onze voortdurend evoluerende detectiemechanismen betekent dat we een poging in milliseconden kunnen opsporen en deze kunnen blokkeren voordat er kwaadaardige operaties plaatsvinden, of een waarschuwing kunnen geven als er gevaarlijk gedrag optreedt.

Begin vandaag nog met cside.

Simon Wijckmans
Founder & CEO

Founder and CEO of cside. Previously a product manager on Cloudflare Page Shield (now Cloudflare Client-Side Security). Co-chair of the W3C Anti-Fraud Community Group and a Forbes 30 Under 30 honoree. Building accessible security against client-side attacks — web security is not an enterprise-only problem.

Monitor en Beveilig Je Third-Party Scripts

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Start gratis, of probeer Business met een proefperiode van 14 dagen.

cside dashboard interface met script monitoring en beveiligingsanalytics
Related Articles
Boek een demo