Een gegenereerde abstracte illustratie op een diep marineblauw veld: een naar achteren terugwijkende rij hoge, servervormige platen staat op een vaag blauwdrukrooster, elk getekend in een dunne cyaan omtrek, met een klein deurvormig paneel dat in het midden openhangt. Een enkele brede amberkleurige scanband loopt horizontaal door de hele rij, gaat door de open panelen en laat een vaag gestippeld spoor achter. Linksonder bevat een klein donker terminalvenster één gloeiend amberkleurig cursorblok. Er verschijnen geen tekst, cijfers, personen, merktekens of organisatielogo's. Het OrcaRouter-logo is samengevoegd in de rechteronderhoek.
AI Safety Incidents

Blootgesteld door ontwerp: een live audit van 414 met het internet verbonden MCP-servers vond 68 kwetsbaarheden

Auteur

Rowan Sterling

Publicatiedatum

Nieuwste modellen · 20Bekijk alle modellen →
Benchmarks: Artificial Analysis · dagelijks bijgewerkt
Terug naar alle berichten

Op 31 juli 2026 publiceerde Nicolás Padilla Exposed by Design (arXiv:2608.00150), een preprint van 13 pagina's waarin hij beschrijft wat hij de eerste dynamische gedragsmatige beveiligingsbeoordeling van via het internet bereikbare Model Context Protocol-servers noemt. Vier meetrondes in die maand bevestigden 640 live productieservers, waarvan 414 actief werden getest; de tests leverden 68 rapporteerbare kwetsbaarheden op, allemaal bij de beheerders gemeld als GitHub Security Advisories. 380 van de 414 — 91,8% — hadden geen OAuth-authenticatie, en 687 toolinstanties boden shelluitvoering aan zonder toegangscontroles. Padilla meldt geen bewijs dat daarvan misbruik werd gemaakt: de tests bleven beperkt tot proof of concept, er werden geen inloggegevens verkregen en er werden geen gegevens geëxfiltreerd. De volledige bronnenlijst, ernstclassificatie en betrouwbaarheidsbeoordeling van de registratie staan in het AI-incidentenarchief, samen met de andere MCP- en infrastructuurbevindingen die eromheen zijn geregistreerd.

Wat de audit eigenlijk heeft gedaan

Het Model Context Protocol is de interface die een AI-agent tools laat aanroepen die elders worden gehost — een documentzoekopdracht, een databasequery, een shellhulpje. Een server die het via HTTP spreekt en vanaf internet bereikbaar is, is in feite een gereedschapsoppervlak dat iedereen kan aanspreken. Padilla's paper stelt dat de populatie zulke servers nooit goed is geteld, en dat het tellen daarvan juist het punt is: ontdekking is het moeilijke deel, en elk eerder onderzoek keek naar een andere dwarsdoorsnede.

Zijn ontdekkingsfase combineerde elf bronnen — crt.sh, Hugging Face, GitHub, npm, Smithery, PyPI, Censys, FOFA, Shodan, glama.ai en pulsemcp.com — met het argument dat geen enkele ervan de populatie vastlegt. De actieve fase gebruikte Corvus, een framework dat Padilla voor de studie bouwde: 34 testmodules die 10 MCP-specifieke kwetsbaarheidsklassen afdekken, verdeeld in 13 statische en 21 dynamische. Het is gepubliceerd op GitHub onder de CobaltoSec-organisatie en op PyPI als cobaltosec-corvus, en het eigen statistiekenbestand van de repository registreert hetzelfde aantal van 34 modules.

De vier uitvoeringen vonden plaats op 15, 18, 21 en 24 juli 2026. Eerdere uitvoeringen leverden alleen bevestigingsnummers; de laatste drie scanden 3.485, 3.948 en 4.110 kandidaten en bevestigden respectievelijk 140, 464 en 296 live servers. Na deduplicatie van 972 ruwe observaties met 332 herhaalde verschijningen bleven 640 unieke bevestigde servers over, waarvan 414 — 64,7% — volledige dynamische tests accepteerden. Padilla behandelt 640 als een ondergrens. Censys, een van de ontdekkingsbronnen, had in mei 2026 wereldwijd meer dan 21.000 MCP-gerelateerde endpoints geschat, en hij gebruikt dat als schatting van de schaal, niet als een telling van wat hij testte.

An HTML table card titled 'Four runs in July 2026', subtitled 'What each measurement pass scanned, how many servers it confirmed, and how many carried a CRITICAL finding'. Four columns: run date, candidates scanned, servers confirmed, CRITICAL findings. Rows read: 15 July, candidates not tracked, 72 confirmed, no CRITICAL count; 18 July, 3,485 candidates, 140 confirmed, 17 CRITICAL; 21 July, 3,948 candidates, 464 confirmed, 41 CRITICAL; 24 July, 4,110 candidates, 296 confirmed, 35 CRITICAL. A blue summary band beneath reads: 972 raw observations, 332 duplicate appearances, 640 unique confirmed, 414 fully audited, 68 reportable. A footer cites Nicolás Padilla, arXiv:2608.00150, submitted 31 July 2026.

Als je het als een trechter leest, vormen de cijfers het echte argument van het artikel: een brede, goedkope ronde vindt kandidaten sneller dan een zorgvuldige ronde ze kan testen. Slechts 414 van de 640 bevestigde servers werden volledig getest, en Padilla stelt niet dat de geteste subset op de ongeteste rest lijkt.

Wat het heeft gevonden

De belangrijkste bevinding is authenticatie, of het ontbreken daarvan. Van de 414 geteste servers hadden 380 (91,8%) geen OAuth. Het artikel stelt dat de meeste van de overige servers statische bearer-tokens of API-sleutels gebruikten, vaak voorspelbaar of leeg — een server die een vaste tekenreeks accepteert, is ook niet zinvol geauthenticeerd. Omdat de audit alleen servers testte die zonder inloggegevens publiek toegankelijk waren, beschrijft dit cijfer per definitie de blootgestelde populatie; het is geen schatting voor MCP-servers in het algemeen.

De 68 rapporteerbare bevindingen zijn per klasse uitgesplitst, en de klassentellingen overlappen elkaar in plaats van het totaal te partitioneren: 380 authenticatietekortkomingen, 52 gevallen van geaccepteerde protocolfuzzing, 47 tool poisoning, 38 command injection, 31 schema-bypass, 29 server-side request forgery, 24 manipulatie van resource-URI's, 22 prompt injection, 18 tokenblootstelling en 14 indicatoren voor de toeleveringsketen. Denial-of-service-modules zijn geschreven maar bewust niet tegen productieservers uitgevoerd, wat Padilla om ethische redenen uitsluit. De vier soorten kwetsbaarheden die in de samenvatting worden genoemd — SQL-injectie, SSRF tegen cloudmetadatadiensten, prompttemplate-injectie en path traversal via cursor-manipulatie — komen elk binnen die klassen voor.

A generated abstract illustration on a deep navy field: a translucent glass cube representing a tool sits at the centre, its faces cut by thin slots. A fine cyan cord runs from one slot across open space to a small metallic lever at upper left; a short amber spark jumps from another slot to a dark rack of cylinders at lower right. A pale dotted ring of tick marks circles the cube at a distance, a boundary the cord crosses without being stopped. No text, numbers, people, brand marks or organisation logos appear. The OrcaRouter logo is composited in the bottom-right corner.

Het cijfer voor shell-uitvoering behoeft één voorbehoud dat het artikel niet oplost. In de resultatensectie worden 687 tool-instanties met shell-uitvoering en zonder authenticatie geteld over de bevestigde pool van 640 servers. In de discussie wordt hetzelfde cijfer ingeleid met de woorden "van de 414 dynamisch geauditeerde servers" en vervolgens wordt verwezen naar de "bredere bevestigde set". De twee formuleringen stemmen niet overeen, en het artikel geeft nooit een totaal aantal tools voor de geteste servers, dus 687 kan niet in een percentage worden omgezet.

Churn is de bevinding die het meest verandert hoe de cijfers moeten worden gelezen. Van de 464 servers die op 21 juli werden bevestigd, waren er 193 — 41,6% — verdwenen toen de vierde run drie dagen later controleerde. Negen van de 41 servers met een CRITICAL-bevinding waren ook verdwenen. Padilla ziet dit als uitrol zonder beoordeling; het betekent ook dat een bevinding die op maandag wordt bevestigd, donderdag mogelijk geen eigenaar meer heeft om ze te patchen.

De drie casestudy's, en wat er gecontroleerd kan worden

Drie bevindingen worden in detail beschreven, elk met een GitHub Security Advisory-identificatie. Een SQL-injectie in lectorium-corpus-mcp (GHSA-m8qh-p8m5-8c48, beoordeeld als CRITICAL) werd bevestigd met de payload ' OR 1=1 -- en een verschil in responsgrootte, waarbij geen documentinhoud werd gelezen of bewaard. Een SSRF in epwforge (GHSA-r9fx-qwmc-rvx3, HIGH) werd via timing bevestigd: 11,9 seconden tegen een intern metadata-adres tegenover een basislijn van 0,3 seconden, waarbij geen inhoud van de metadatarespons werd opgeslagen. Een prompttemplate-injectie in frootai (GHSA-5h8f-r9g8-5w5p, HIGH) voltooit de reeks.

Twee van de drie kunnen direct worden gecontroleerd. Op 30 oktober 2026 waren de eerste twee adviespagina's openbaar toegankelijk in het adviesrepository van CobaltoSec, beide gepubliceerd op 20 augustus 2026, beide nog steeds "Patched versions: None" vermeldend en geen CVE. De derde, GHSA-5h8f-r9g8-5w5p, werd op dat adres niet gevonden. Het repository van CobaltoSec vermeldde op dezelfde datum 46 gepubliceerde adviezen, over MCP-servers en aanverwante AI-tooling; het artikel telde 19 als openbaar bekendgemaakt en 49 als nog onder embargo op het moment dat het werd geschreven. Een scanartefact voor frootai gedateerd 28 juli 2026 bevindt zich in het Corvus-repository, dus de test heeft plaatsgevonden; alleen het advies is niet zichtbaar.

Het bekendmakingsproces zelf wordt in grote lijnen beschreven, niet in detail. Alle 68 bevindingen gingen via privé-GitHub Security Advisories onder een gecoördineerd embargo van 90 dagen naar de maintainers, en waar privémelding niet beschikbaar was, opende Padilla daarvoor in de plaats een publiek repository-issue. Het paper meldt anekdotisch dat sommige maintainers binnen 24 uur patchten, anderen wekenlang niet antwoordden en sommige repositories werden verlaten. Het geeft geen aantal gecontacteerde maintainers en geen tabel met responspercentages, met de mededeling dat deze bij inzending volledig zullen worden gerapporteerd.

Wat het artikel niet vaststelt

Exposed by Design is een preprint met één auteur. arXiv vermeldt versie 1, ingediend op 31 juli 2026, zonder tijdschriftreferentie en zonder vermelding van peerreview. Het archief kent de recordbetrouwbaarheid B toe — gedocumenteerd, maar uit één bron — en die graad geldt voor het hele stuk: elk cijfer hierboven komt uit Padilla's paper of uit artefacten die hij publiceert, niet uit een onafhankelijke meting.

Geen enkele onafhankelijke nieuwsredactie lijkt over de studie te hebben bericht. Er is wel berichtgeving — een door AI geschreven analyse op forkast.news, berichten op LinkedIn en Medium, een Chinese securityblog, een Japanse toelichting — maar die parafraseert de preprint zonder de auteur te interviewen, de adviezen te controleren of gegevens toe te voegen. Afgeleide berichtgeving is geen bevestiging.

Padilla noemt de beperkingen zelf, en ze zijn ongewoon specifiek. Alleen HTTP-transporten werden getest; stdio-servers, het gangbare lokale geval, vallen buiten de scope. Ontdekking is best-effort, dus 640 is een ondergrens. De 226 bevestigde servers die niet volledig werden getest, werden uitgesloten wegens 403-responses, verbindingsresets, niet-conforme JSON-RPC-antwoorden of simpelweg omdat ze offline waren, en het artikel zegt dat de resulterende selectiebias niet kan worden begrensd. Detectie berust op heuristieken — timing-oracles, differentiële responses, schema-inspectie — zonder gelabelde benchmark en zonder gepubliceerde precision- of recall-waarden voor de 34 modules. De churn die hij documenteert, ondergraaft de temporele validiteit van individuele bevindingen. En een enkele onderzoeker die handmatige verificatie uitvoert, introduceert een risico op confirmation bias dat hij benoemt en niet kwantificeert.

An HTML card titled 'Established, and not', split into two columns. The left column, headed 'ESTABLISHED', lists: 414 internet-facing MCP servers dynamically tested in four July 2026 runs; 380 of them (91.8%) offered no OAuth authentication; 68 vulnerabilities filed as GitHub Security Advisories; Corvus published open source with 34 modules, 13 static and 21 dynamic; 193 of 464 servers confirmed on 21 July were gone three days later; two case-study advisories public since 20 August 2026, both unpatched. The right column, headed 'NOT ESTABLISHED', lists: that any exposed server was attacked in the wild; a total population, since 640 confirmed servers is a lower bound; 687 shell-exposing tools as a share of tested servers, since the denominators conflict; the third case-study advisory, not publicly resolvable on 30 October 2026; any independent measurement or newsroom verification; module precision or recall, since no labelled benchmark is published. A footer cites Nicolás Padilla, arXiv:2608.00150 and the CobaltoSec advisory repository.

Wat is er veranderd na

Het praktische resultaat tot nu toe is het hulpprogramma en de adviesstroom. Corvus is installeerbaar en gedocumenteerd, en de adviesrepository van CobaltoSec bevatte op 30 oktober 2026 46 gepubliceerde vermeldingen, tegenover de 19 openbare meldingen die het paper eind juli telde. Twee van de eigen casestudies van het paper hebben nog steeds geen gepatchte versie — voor die servers heeft openbaarmaking een openbaar dossier opgeleverd, maar nog geen oplossing.

Voor verdedigers is het nuttige deel van de studie haar methode, niet haar kop. Een cijfer van 91,8% dat alleen is afgeleid van servers die zonder inloggegevens antwoordden, zegt iets smal en reëel: het meeste van wat blootstaat, is nooit vergrendeld geweest, en de omloop van drie dagen suggereert dat veel ervan was opgezet voor een demo, een prototype of een test en nooit was gehard. Wat de studie niet kan zeggen, is of hetzelfde geldt voor de MCP-servers waarop organisaties daadwerkelijk vertrouwen, omdat die nooit in de steekproef zaten.