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 5 min read
Omslagafbeelding van de cdnjs-kwetsbaarheid van 2021 in detail

Kort samengevat: cdnjs .tgz path-traversal naar blootstelling van GITHUB_REPO_API_KEY in de omgeving

  • Vertrouwd omdat Cloudflare: Iedereen vertrouwt cdnjs omdat Cloudflare het runt, maar de vondst van RyotaK in 2021 veranderde een gepreparteerde .tgz-bestandsnaam in een path-traversal die een regelmatig uitgevoerd script overschreef en GITHUB_REPO_API_KEY en WORKERS_KV_API_TOKEN uit /proc/self/environ blootlegde.
  • Gedrag boven bron: cside gebruikt geen whitelist van bronnen, de browseragent observeert het runtimegedrag van elk script in 100% van de sessies, monitort meer dan 60 attributen met AI en betrekt historische context — precies wat de willekeurige commando-uitvoering zou hebben opgemerkt die door de CDN stroomde waar meer dan 12% van het internet op vertrouwt.
  • Verifiëren, niet vertrouwen: De post-mortem van Cloudflare is een schoolvoorbeeld van transparantie, maar de exploit zou direct in de browser zijn uitgevoerd en de WAF hebben omzeild, dus de beslissing is of bronnen vertrouwen nog steeds het client-side-model is, of dat verifiëren wat ze leveren de enige verdedigbare aanpak is.

Weinig tijd? Bekijk cside's in-browser Magecart- en skimmerblokkering. Dit dekt alles hieronder in één deployment.

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 deze 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 werden gebruikt die willekeurige bestanden van de updateserver konden uitlezen.

Een fout tijdens het demonstratieproces legde iets ergers bloot. 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. Dit liet zien hoe een aanvaller toegang kon krijgen tot het grootste deel van de cdnjs-infrastructuur.

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 de scripts die door alle eindgebruikers worden gebruikt. Dit omzeilt Web Application Firewalls (WAF's) en alle 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 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 op te halen en te analyseren. Zo plaatst cside zich in de stroom van het verzoek tussen de gebruiker en het externe script, wat volledig inzicht geeft in de geserveerde scripts. cside inspecteert elk script grondig, in 100% van de sessies, in plaats van alleen bronnen op een whitelist te zetten. 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 ook rekening met historische context, zodat veranderingen in de loop van de tijd gemakkelijker te herkennen zijn als mogelijke kapingen. Bovendien gebruikt cside AI om de code van het externe script te analyseren. De combinatie van onze detectiemechanismen betekent dat we een poging binnen milliseconden kunnen opsporen en kunnen blokkeren voordat er kwaadaardige acties plaatsvinden, en/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-dashboardinterface met scriptmonitoring en beveiligingsanalyses
Related Articles
Boek een demo

Wil je dit doornemen met een engineer?

Dertig minuten, op je eigen site. Geen slides.

We laten je zien:

Welke scripts van derden er nu op je site draaien
Hoe je ervoor staat op PCI DSS 6.4.3 en 11.6.1
Welk deel van je verkeer uit bots en AI-agents bestaat

Liever gewoon een vraag stellen?

Vrije momenten zoeken…

Alleen echte mensen. Wij merken het.

Lukt het boeken niet? Agenda in een nieuw tabblad openen

Wat wil je oplossen?

Vertel het ons in één zin, dan komen we terug met iets bruikbaars in plaats van een standaardverhaal.

Waar we meestal mee helpen:

Zien welke scripts van derden op je site draaien
Bewijs voor PCI DSS 6.4.3 en 11.6.1
Bots, AI-agents en accountovername

Liever meteen een moment inplannen? Kies een tijdstip