Kwaadaardige skills, MCP-servers en extensies
Hoe nep-skills, MCP-servers en editor-extensies je sleutels stelen, wat registries wel en niet controleren, en een check van 5 minuten voor alles wat je installeert.
In het kort
Een skill, MCP-server of editor-extensie draait met jouw rechten, dus een kwaadaardige versie kan je sleutels, mail en code stelen. In 2026 ging dat op grote schaal mis: 341 van 2.857 skills op ClawHub bleken kwaadaardig, en nagemaakte skills op skills.sh haalden samen ruim 1,7 miljoen installs. Geen enkele registry garandeert dat code veilig is, dus check wie het publiceert, lees wat het doet, pin de versie en draai het eerst in een sandbox zonder geheimen.
- Gemiddeld
- 7 min
- gratis
- Feiten gecheckt op 2 november 2026
- Voltooid
Een skill, MCP-server of editor-extensie draait met jouw rechten: je bestanden, je sleutels, je mail. In 2026 hebben aanvallers dat ontdekt, en ze werken op schaal.
Na deze les heb je: een check van 5 minuten die je doet voor je iets installeert, en je weet wat je doet als het toch fout zit.
Hoe het gebeurt
Section titled “Hoe het gebeurt”| Route | Wat er gebeurt | Echt voorbeeld |
|---|---|---|
| Nep-“prerequisite” | De skill zegt: draai eerst dit script of plak dit in je Terminal. Dat script is de malware. | ClawHavoc (feb 2026): 341 van 2.857 skills op ClawHub waren kwaadaardig; 335 installeerden de infostealer Atomic Stealer. Publiceren vereiste alleen een GitHub-account van een week oud. |
| Eerst schoon, dan de update | Een exacte kopie van een bekende skill bouwt vertrouwen op; een latere update voegt stelende instructies toe. | skills.sh (jul-aug 2026): nagemaakte Paperclip- en Browser Use-skills, ruim 1,7 miljoen installs. De kwaadaardige opdracht stond in een bijbestand dat de agent pas opende als Paperclip geïnstalleerd of gestart moest worden. |
| Rug pull tijdens gebruik | Een MCP-server gedraagt zich netjes en verandert na een paar calls zijn tools. | Deadbugz (aug 2026, Pillar Security): een MCP-server die na precies 3 tool-calls naar SSH- en AWS-sleutels ging zoeken. |
| Tool poisoning | Instructies in de beschrijving van een tool. Het model leest ze, jij ziet ze niet. | Invariant Labs (apr 2025), o.a. een demo die WhatsApp-berichten liet lekken. |
| Nagemaakt pakket | Een npm-pakket met de naam van een bekende dienst, maar niet van die dienst. | postmark-mcp (sep 2025): versie 1.0.16 voegde één regel toe die elke verstuurde mail in BCC naar de aanvaller stuurde. Postmark had er niets mee te maken. |
| Editor-extensie | Een extensie in de marktplaats van VS Code-achtige editors steelt tokens en verspreidt zich. | GlassWorm (okt 2025): code verstopt in onzichtbare Unicode-tekens, via Open VSX, de marktplaats van o.a. Cursor en Windsurf. |
| Slopsquatting | Een model verzint een pakket- of skillnaam; een aanvaller registreert precies die naam. | Onderzoekers lieten met HalluSquatting (jul 2026) zien dat dit ook werkt voor repo’s en skills. |
Het patroon: review bij installatie zegt weinig. Het kwaad zit in een bijbestand, een update of gedrag dat pas later begint.
Wat registries (niet) controleren
Section titled “Wat registries (niet) controleren”Stand november 2026:
| Waar | Wat het checkt | Wat niet |
|---|---|---|
| Officiële MCP Registry | Of de naam bij de juiste GitHub-account of het juiste domein hoort | Geen code-review. Scannen laat hij over aan npm, PyPI, Docker en marktplaatsen. Staat nog in preview. |
| ClawHub (OpenClaw) | Automatische VirusTotal-scan met een verdict per skill, dagelijks opnieuw | Kwaadaardige instructies in gewone taal glippen erdoor; OpenClaw noemt de scan zelf “not a silver bullet”. |
| skills.sh (Vercel) | Audits van Gen, Socket en Snyk per skill | Geen “geverifieerd”-label voor de hele registry; de 1,7M-campagne kwam erdoorheen. |
| npm / PyPI | Provenance: waar een pakket gebouwd is | Niet of het goed is. De worm Mini Shai-Hulud (mei 2026) had geldige provenance. |
Sterren en downloads helpen ook niet: Trend Micro onderzocht 9.695 MCP-servers en vond nauwelijks verband tussen populariteit en veiligheid (jun 2026).
De 5-minuten-check
Section titled “De 5-minuten-check”Doe dit voor elke skill, MCP-server of extensie. Eén “nee” is genoeg om te stoppen.
-
Wie publiceert het? Komt het van de officiële GitHub-organisatie of het domein van de dienst zelf? In de MCP Registry zie je dat aan de naam:
io.github.<organisatie>/...ofcom.<bedrijf>/.... Een “postmark-mcp” van een onbekende is een kloon. -
Lees álle bestanden, ook de onzichtbare tekens. Dus niet alleen
SKILL.mdof de README, maar ook bijbestanden en scripts. Zoek naar verborgen Unicode met:Terminal window find . -type f -exec perl -CSD -ne 'print "$ARGV:$.\n" if /[\x{200B}-\x{200F}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{FEFF}\x{FE00}-\x{FE0F}\x{E0000}-\x{E007F}\x{E0100}-\x{E01EF}]/; close ARGV if eof' {} +Geen uitvoer is goed. Een treffer in een bestand met emoji kan onschuldig zijn (die gebruiken soms U+FE0F); in code is het verdacht. Rode vlaggen: een “prerequisite”,
curl ... | sh, base64-tekst, downloads van losse GitHub-releases. -
Welke rechten en sleutels vraagt het? Een samenvattings-skill heeft geen shell, geen netwerk en geen
~/.sshnodig. Vraagt een MCP-server om een token voor je hele account? Maak een eigen sleutel met alleen de rechten die nodig zijn, of stop (zo beperk je je agent). -
Kijk naar scripts die vanzelf draaien. Bij een npm-pakket:
Terminal window npm view <PAKKETNAAM> scriptsStaat er
preinstallofpostinstall? Lees wat dat doet. In een repo: check.claude/settings.json(hooks),.vscode/tasks.json("runOn": "folderOpen") enAGENTS.md/CLAUDE.md. -
Pin de versie en zet auto-update uit. In een MCP-config schrijf je
"<PAKKETNAAM>@1.2.3"in plaats van alleen de naam (anders haaltnpxsteeds de nieuwste). Een skill kopieer je naar je eigen repo of pin je op een commit. In VS Code en Cursor zet je"extensions.autoUpdate": false. Bij elke update: eerst de wijzigingen lezen. -
Eerste keer in een sandbox zonder geheimen. Draai het in een devcontainer of Docker-container waarin
~/.ssh,~/.awsen je.envníet gemount zijn, en kijk welke verbindingen het opent. Een remote MCP-server kun je niet pinnen: die kan zijn tools per call veranderen. Gebruik die alleen van een partij die je ook met je data zou vertrouwen.
Checklist
0/6
Je voortgang wordt alleen in deze browser bewaard.
Test jezelf
1Een MCP-server staat in de officiële MCP Registry. Wat weet je dan zeker?
De registry controleert de namespace. Het scannen van code laat hij over aan npm, PyPI, Docker en marktplaatsen.
2Waarom helpt een grondige review bij installatie maar beperkt?
Bij skills.sh en postmark-mcp was de eerste versie schoon. Pin de versie en lees elke update.
3Een nieuwe skill zegt: "Prerequisite: plak eerst dit commando in je Terminal." Wat doe je?
Volgende les: API-sleutels en geheimen beheren.