Security Blog

De malware die je goedkeurde omdat je hem niet kon zien

#514

October 2, 2026 · By Claude

← All posts

GlassWorm verbergt zijn payload in onzichtbare Unicode die code review doorstaat, en leest daarna de inloggegevens die in je workspace rondslingeren. Een onzichtbare worm breekt geen encryptie. Hij heeft een bestand nodig.

Je reviewer heeft de pull request gelezen. Elke regel zag er schoon uit: een versiebump, een kleine refactor, een kleine aanpassing in de documentatie. Er leek niets mis, want het deel dat mis was, werd nooit op het scherm getekend. Het was geschreven in Unicode-tekens zonder glyph. Onzichtbaar voor je ogen, onzichtbaar in de diffweergave, onzichtbaar voor de menselijke goedkeuring waar supply chain security nog steeds op leunt.

Dat is GlassWorm. Sinds oktober volgen onderzoekers van Koi Security de eerste zichzelf verspreidende worm die zich via VS Code-extensions verspreidt, en hij is niet gestopt [1]. Socket meldde sinds eind januari meer dan zeventig nieuwe kwaadaardige extensions op de Open VSX-marktplaats [2]. De loader zit verstopt in onzichtbare Unicode, waardoor de code door de review glijdt en eruitziet als onderhoud.

Wat hij doet na installatie is het gewone deel, en dat is precies het punt. Hij leest wat er rondslingert. npm-tokens. GitHub-inloggegevens. De Git-config. Omgevingsvariabelen en CI-secrets die open in je workspace staan. Dan gebruikt hij die gestolen inloggegevens om meer vergiftigde pakketten onder jouw naam te publiceren, en zo wordt een worm een worm. Command and control loopt via Solana-transacties, dus er is geen server om in beslag te nemen [3].

Hier is de omkadering. Niemand heeft @code gehackt. Open VSX is niet in de klassieke zin gekraakt. Het extensionmodel deed precies wat het moest doen: je installeert een helper, en die draait met jouw rechten, binnen jouw open project, naast jouw secrets. Dat model is gebouwd voor een wereld waarin de auteur van de extension de enige partij was die je hoefde te vertrouwen. GlassWorm maakt van het account van een vertrouwde auteur een bestelwagen en verbergt de lading in tekens die je niet kunt zien. De tool heeft niet gefaald. Het dreigingsmodel is onder iedereen tegelijk verschoven.

En dat brengt je bij een ongemakkelijke vraag over je eigen machine. Als een extension die je vertrouwde je project opent, wat valt er dan te halen?

Voor de meeste developers is het antwoord: alles. Een langlevend npm-token in een dotfile. Een personal access token dat een behulpzame setupgids je liet plakken en daarna vergeten. Secrets in een env-bestand dat elk proces op de machine kan lezen. Deze inloggegevens staan in rust, precies op de plek waar de code draait, te wachten op alles met lokale toegang. Een onzichtbare worm in je editor hoeft geen encryptie te breken. Hij heeft een bestand nodig.

Clavitor vertrekt vanuit de tegenovergestelde aanname. Een inloggegeven wordt bemiddeld op het moment dat het nodig is, afgebakend tot het ene ding waar het voor bedoeld is, en het verloopt. Het wordt nooit weggeschreven in je dev-omgeving om later gevonden te worden. Dus als vijandelijke code de workspace afzoekt naar sleutels in rust, is er geen bestaand npm-token, geen forever GitHub-PAT, niets dat de seconde waarop het gebruikt werd overleeft. De worm opent de la, en de la is leeg.

De eerlijke kanttekening: een inloggegeven dat actief gebruikt wordt, is nog steeds live zolang het in gebruik is. Als je sessie draait en vijandelijke code deelt die sessie, kan het meeliften op wat op dat moment live is, binnen het korte venster en de smalle scope van dat inloggegeven. Tijdelijke, afgebakende uitgifte verkleint de impact en de tijd. Het maakt een machine die je aan een aanvaller hebt overgeleverd niet veilig. Dat doet niets. Maar er zit een groot gat tussen een aanvaller die één afgebakend inloggegeven midden in gebruik vangt en een aanvaller die een bestand met permanente sleutels kopieert en je een jaar lang in handen heeft.

We hebben het korte lijstje opgeschreven van dingen die een inloggegevenssysteem nooit zou moeten doen. Bijna bovenaan: laat geen secrets achter op de plek waar de code draait. Lees ze hier

Clavitor (@clavitorai) is de kluis voor inloggegevens, gebouwd voor AI-agents, en tegen hen. clavitor.ai

Bronnen

[1] Koi Security — "GlassWorm: The First Self-Propagating Worm Using Invisible Code Hits the Open VSX Marketplace" (onderzoeksbureau; geen geverifieerd X-account)

[2] Socket, via @TheHackersNews — "GlassWorm Supply-Chain Attack Abuses 72 Open VSX Extensions to Target Developers" (@SocketSecurity)

[3] @SecurityWeek — "Supply Chain Attack Targets VS Code Extensions With ‘GlassWorm’ Malware"