En genererad abstrakt illustration på en djupt marinblå bakgrund: en rad höga serverformade plattor som sträcker sig bakåt står på ett svagt blåpräntrutnät, var och en tecknad i tunn cyan kontur med en liten dörrformad panel som hänger öppen i mitten. Ett enda brett bärnstensfärgat skanningsband löper horisontellt genom hela raden, passerar genom de öppna panelerna och lämnar ett svagt prickigt spår efter sig. Längst ner till vänster finns en liten mörk terminalruta med ett glödande bärnstensfärgat markörblock. Ingen text, inga siffror, inga människor, inga varumärken eller organisationslogotyper förekommer. OrcaRouter-logotypen är sammansatt i det nedre högra hörnet.
AI Safety Incidents

Exponerat by design: en livegranskning av 414 internetexponerade MCP-servrar hittade 68 sårbarheter

Författare

Rowan Sterling

Publiceringsdatum

Senaste modellerna · 20Visa alla modeller →
Benchmarks: Artificial Analysis · uppdateras dagligen
Tillbaka till alla inlägg

Den 31 juli 2026 publicerade Nicolás Padilla Exposed by Design (arXiv:2608.00150), ett preprint på 13 sidor som beskriver vad han kallar den första dynamiska beteendebaserade säkerhetsbedömningen av internetexponerade Model Context Protocol-servrar. Fyra mätomgångar under den månaden bekräftade 640 produktionsservrar i drift, varav 414 aktivt testades; testerna gav 68 rapporterbara sårbarheter, alla inlämnade till underhållare som GitHub Security Advisories. 380 av de 414 – 91,8 % – saknade OAuth-autentisering, och 687 verktygsinstanser annonserade shell-körning utan åtkomstkontroller. Padilla rapporterar inga tecken på att något av detta utnyttjades: testerna stannade vid proof of concept, inga autentiseringsuppgifter erhölls och inga data exfiltrerades. Postens fullständiga källförteckning, allvarlighetsgrad och konfidensbedömning finns i AI-incidentarkivet, tillsammans med de övriga MCP- och infrastrukturfynden som registrerades i anslutning till det.

Vad granskningen faktiskt gjorde

Model Context Protocol är gränssnittet som låter en AI-agent anropa verktyg som finns på annan plats – en dokumentsökning, en databasfråga, ett shell-hjälpverktyg. En server som talar det via HTTP och går att nå från internet är i praktiken en verktygsyta som vem som helst kan adressera. Padillas artikel hävdar att populationen av sådana servrar aldrig har räknats ordentligt, och att det är själva poängen att räkna dem: upptäckten är den svåra delen, och varje tidigare kartläggning såg på en annan del.

Hans upptäcktsfas slog samman elva källor – crt.sh, Hugging Face, GitHub, npm, Smithery, PyPI, Censys, FOFA, Shodan, glama.ai och pulsemcp.com – med argumentet att ingen enskild av dem fångar populationen. Den aktiva fasen använde Corvus, ett ramverk som Padilla byggde för studien: 34 testmoduler som täcker 10 MCP-specifika sårbarhetsklasser, uppdelade i 13 statiska och 21 dynamiska. Det är publicerat på GitHub under organisationen CobaltoSec och på PyPI som cobaltosec-corvus, och repots egen statistikfil anger samma antal på 34 moduler.

De fyra körningarna ägde rum den 15, 18, 21 och 24 juli 2026. Tidigare körningar bidrog endast med bekräftelsenummer; de tre sista skannade 3 485, 3 948 och 4 110 kandidater och bekräftade 140, 464 respektive 296 aktiva servrar. Efter deduplicering av 972 råobservationer med 332 upprepade förekomster återstod 640 unika bekräftade servrar, varav 414 – 64,7 % – accepterade fullständig dynamisk testning. Padilla betraktar 640 som en nedre gräns. Censys, en av upptäcktskällorna, hade uppskattat fler än 21 000 MCP-relaterade slutpunkter världen över i maj 2026, och han använder det som skaluppskattning snarare än som en räkning av vad han testade.

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.

Läst som en tratt är siffrorna artikelns verkliga argument: en bred, billig genomgång hittar kandidater snabbare än en noggrann genomgång kan testa dem. Endast 414 av de 640 bekräftade servrarna testades fullt ut, och Padilla hävdar inte att den testade delmängden liknar den otestade återstoden.

Vad den hittade

Huvudfyndet är autentisering, eller bristen på den. Av de 414 testade servrarna hade 380 (91,8 %) ingen OAuth. Artikeln säger att de flesta av de återstående använde statiska bearer-token eller API-nycklar, ofta förutsägbara eller tomma – en server som accepterar en fast sträng är inte heller meningsfullt autentiserad. Eftersom granskningen endast testade servrar som var offentligt nåbara utan autentiseringsuppgifter, beskriver denna siffra den exponerade populationen per konstruktion; den är inte en uppskattning för MCP-servrar i allmänhet.

De 68 rapporteringsbara fynden fördelar sig på klass, och klassräknarna överlappar snarare än delar upp totalen: 380 autentiseringsbristfälligheter, 52 fall av acceptans av protokollfuzzing, 47 verktygsförgiftning, 38 kommandointräning, 31 schemabypass, 29 server-side request forgery, 24 manipulering av resurs-URI, 22 promptinjektion, 18 exponering av token och 14 indikatorer på leverantörskedja. Moduler för denial-of-service skrevs men köddes avsiktligt inte mot produktionsservrar, vilket Padilla utesluter av etiska skäl. De fyra sårbarhetstyper som nämns i abstraktet – SQL-injektion, SSRF mot molnmetadatatjänster, promptmallinjektion och sökvägstraversering via markörmanipulering – förekommer vardera inom dessa klasser.

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.

Siffran för shell-exekvering kräver ett förbehåll som artikeln inte löser. I resultatavsnittet räknas 687 verktygsinstanser med shell-exekvering och utan autentisering samman över den bekräftade poolen på 640 servrar. I diskussionsavsnittet introduceras samma siffra med orden "av de 414 dynamiskt granskade servrarna" och hänvisas därefter till den "bredare bekräftade uppsättningen". De två formuleringarna stämmer inte överens, och artikeln anger aldrig något totalt antal verktyg för de testade servrarna, så 687 kan inte omvandlas till en procentandel.

Churn är det fynd som i störst utsträckning förändrar hur siffrorna ska tolkas. Av de 464 servrar som bekräftades den 21 juli var 193 – 41,6 % – borta när den fjärde körningen kontrollerade tre dagar senare. Nio av de 41 servrar som hade ett CRITICAL-fynd hade också försvunnit. Padilla tolkar detta som driftsättning utan granskning; det innebär också att ett fynd som bekräftats på måndagen kanske inte har någon ägare som kan patcha det före torsdag.

De tre fallstudierna och vad som kan kontrolleras

Tre fynd beskrivs i detalj, vart och ett med en identifierare från GitHub Security Advisory. En SQL-injektion i lectorium-corpus-mcp (GHSA-m8qh-p8m5-8c48, klassad som KRITISK) bekräftades med payloaden ' OR 1=1 -- och en skillnad i svarstorlek, utan att något dokumentinnehåll lästes eller behölls. En SSRF i epwforge (GHSA-r9fx-qwmc-rvx3, HÖG) bekräftades genom tidsmätning: 11,9 sekunder mot en intern metadataadress jämfört med en baslinje på 0,3 sekunder, utan att något innehåll från metadatasvaret lagrades. En promptmallsinjektion i frootai (GHSA-5h8f-r9g8-5w5p, HÖG) kompletterar uppsättningen.

Två av de tre kan kontrolleras direkt. Den 30 oktober 2026 gick de två första rådgivningssidorna att nå offentligt i CobaltoSecs rådgivningsarkiv, båda publicerade den 20 augusti 2026, och båda listade fortfarande "Patchade versioner: Inga" och ingen CVE. Den tredje, GHSA-5h8f-r9g8-5w5p, svarade "hittades inte" på den adressen. CobaltoSecs arkiv listade 46 publicerade rådgivningar samma datum, som täckte MCP-servrar och angränsande AI-verktyg; artikeln räknade 19 som offentligt avslöjade och 49 fortfarande under embargo när den skrevs. En skanningsartefakt för frootai daterad 28 juli 2026 finns i Corvus-arkivet, så testet genomfördes; det är bara rådgivningen som inte är synlig.

Själva avslöjandeprocessen beskrivs i stora drag snarare än i detalj. Alla 68 fynd skickades till underhållare via privata GitHub Security Advisories under en 90 dagars samordnad embargo, och där privat rapportering inte var tillgänglig skapade Padilla i stället ett offentligt ärende i kodförrådet. Artikeln rapporterar anekdotiskt att vissa underhållare patchade inom 24 timmar, att andra inte svarade på flera veckor och att vissa kodförråd var övergivna. Den redovisar inte antalet kontaktade underhållare och ingen tabell över svarsfrekvens, utan säger att dessa kommer att rapporteras i sin helhet vid inlämningstillfället.

Vad artikeln inte fastställer

Exposed by Design är en preprint med en enda författare. arXiv listar version 1, inskickad 31 juli 2026, utan tidskriftsreferens och utan uttalande om peer review. Arkivet graderar postens tillförlitlighet till B – dokumenterad, men från en enda källa – och den graden gäller för hela den här artikeln: varje uppgift ovan kommer från Padillas paper eller från artefakter han publicerar, inte från en oberoende mätning.

Ingen oberoende nyhetsredaktion verkar ha rapporterat om studien. Det finns bevakning – en AI-skriven analys på forkast.news, inlägg på LinkedIn och Medium, en kinesiskspråkig säkerhetsblogg, en japansk förklarande artikel – men den parafraserar preprinten utan att intervjua författaren, kontrollera säkerhetsmeddelandena eller tillföra data. Härledd bevakning är inte bekräftelse.

Padilla anger själv begränsningarna, och de är ovanligt specifika. Endast HTTP-transporter testades; stdio-servrar, det vanliga lokala fallet, ligger utanför omfattningen. Upptäckten är best-effort, så 640 är en undre gräns. De 226 bekräftade servrar som inte testades fullt ut uteslöts på grund av 403-svar, anslutningsåterställningar, JSON-RPC-svar som inte följer standarden eller helt enkelt att de var offline, och artikeln säger att den resulterande urvalsbiasen inte kan begränsas. Detektionen vilar på heuristik – tidsorakel, differentiella svar, schemainspelning – utan någon märkt benchmark och utan publicerad precision eller recall för de 34 modulerna. Den förändringstakt han dokumenterar undergraver den tidsmässiga validiteten hos enskilda fynd. Och en enda forskare som utför manuell verifiering introducerar en risk för bekräftelsebias som han namnger men inte kvantifierar.

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.

Vad förändrades efter

Det praktiska resultatet hittills är verktyget och rådgivningsflödet. Corvus är installerbar och dokumenterad, och CobaltoSecs rådgivningsarkiv innehöll 46 publicerade poster den 30 oktober 2026, jämfört med de 19 offentliggöranden som artikeln räknade i slutet av juli. Två av artikelns egna fallstudier har fortfarande ingen patchad version – för dessa servrar har offentliggörandet gett ett offentligt register men ännu inte någon lösning.

För försvarare är den användbara delen av studien dess metod snarare än dess rubrik. En siffra på 91,8 % som endast hämtats från servrar som svarade utan autentiseringsuppgifter säger något snävt och verkligt: det mesta av det som exponerades var aldrig låst, och den tre dagar långa omsättningen antyder att mycket av det sattes upp för en demo, en prototyp eller ett test och aldrig härdades. Vad artikeln inte kan säga är huruvida samma sak gäller för de MCP-servrar som organisationer faktiskt är beroende av, eftersom dessa aldrig fanns i urvalet.