Wygenerowana abstrakcyjna ilustracja na głębokim granatowym tle: oddalający się rząd wysokich, serwerokształtnych płyt stoi na delikatnej niebieskiej siatce blueprintowej, każda zarysowana cienkim cyjanowym konturem, z małym panelem w kształcie drzwi zwisającym otwartym pośrodku. Pojedynczy szeroki bursztynowy pas skanujący biegnie poziomo przez cały rząd, przechodząc przez otwarte panele i pozostawiając za sobą delikatny kropkowany ślad. W lewym dolnym rogu mały ciemny panel terminala zawiera jeden świecący bursztynowy blok kursora. Nie pojawiają się żadne teksty, liczby, ludzie, znaki towarowe ani logo organizacji. Logo OrcaRouter jest nałożone w prawym dolnym rogu.
AI Safety Incidents

Wystawione z założenia: audyt na żywo 414 serwerów MCP dostępnych z internetu wykrył 68 luk w zabezpieczeniach

Autor

Rowan Sterling

Data publikacji

Najnowsze modele · 20Zobacz wszystkie modele →
Benchmarki: Artificial Analysis · aktualizowane codziennie
Powrót do wszystkich wpisów

W dniu 31 lipca 2026 r. Nicolás Padilla opublikował Exposed by Design (arXiv:2608.00150), 13-stronicowy preprint opisujący to, co nazywa pierwszą dynamiczną oceną bezpieczeństwa behawioralnego serwerów Model Context Protocol dostępnych z internetu. Cztery serie pomiarów w tym miesiącu potwierdziły 640 działających serwerów produkcyjnych, z których 414 aktywnie przetestowano; testy ujawniły 68 podatności nadających się do zgłoszenia, wszystkie zgłoszone opiekunom jako GitHub Security Advisories. 380 spośród 414 — 91,8% — nie miało uwierzytelniania OAuth, a 687 instancji narzędzi oferowało wykonywanie poleceń powłoki bez kontroli dostępu. Padilla nie podaje dowodów, że cokolwiek z tego było wykorzystywane: testy pozostały na etapie proof of concept, nie uzyskano żadnych poświadczeń i nie wyeksfiltrowano żadnych danych. Pełna lista źródeł, ocena ważności i ocena pewności tego wpisu znajdują się w archiwum incydentów AI, obok innych ustaleń dotyczących MCP i infrastruktury zgłoszonych w tym samym okresie.

Co audyt faktycznie zrobił

Model Context Protocol to interfejs, który pozwala agentowi AI wywoływać narzędzia hostowane gdzie indziej — wyszukiwanie dokumentów, zapytania do bazy danych, pomocnik powłoki. Serwer, który komunikuje się w tym protokole przez HTTP i jest osiągalny z internetu, jest w istocie powierzchnią narzędzi, którą każdy może adresować. Artykuł Padilli argumentuje, że populacja takich serwerów nigdy nie została należycie policzona i że właśnie policzenie ich jest sednem sprawy: odkrywanie jest trudną częścią, a każde wcześniejsze badanie dotyczyło innego wycinka.

Jego etap odkrywania połączył jedenaście źródeł — crt.sh, Hugging Face, GitHub, npm, Smithery, PyPI, Censys, FOFA, Shodan, glama.ai i pulsemcp.com — przy założeniu, że żadne pojedyncze z nich nie obejmuje całej populacji. Etap aktywny wykorzystywał Corvus — framework zbudowany przez Padillę na potrzeby badania: 34 moduły testowe obejmujące 10 klas podatności specyficznych dla MCP, w podziale na 13 statycznych i 21 dynamicznych. Jest publikowany na GitHubie w ramach organizacji CobaltoSec oraz na PyPI jako cobaltosec-corvus, a własny plik statystyk repozytorium odnotowuje tę samą liczbę 34 modułów.

Cztery serie testów odbyły się 15, 18, 21 i 24 lipca 2026 r.. Wcześniejsze serie dostarczyły wyłącznie numery potwierdzeń; ostatnie trzy przeskanowały odpowiednio 3 485, 3 948 i 4 110 kandydatów i potwierdziły 140, 464 i 296 aktywnych serwerów. Po deduplikacji 972 surowych obserwacji, wśród których 332 wystąpień było powtórzeniami, pozostało 640 unikalnych potwierdzonych serwerów, z których 414 — 64,7% — przeszło pełne testy dynamiczne. Padilla traktuje 640 jako dolną granicę. Censys, jedno ze źródeł odkrywania, oszacował w maju 2026 r. ponad 21 000 punktów końcowych związanych z MCP na świecie, a on wykorzystuje tę liczbę jako szacunek skali, a nie jako liczbę tego, co przetestował.

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.

Odczytane jako lej, liczby stanowią rzeczywisty argument artykułu: szeroki, tani przebieg znajduje kandydatów szybciej, niż staranny przebieg może je przetestować. Tylko 414 z 640 potwierdzonych serwerów zostało w pełni przetestowanych, a Padilla nie twierdzi, że przetestowany podzbiór przypomina nieprzetestowaną resztę.

Co znaleziono

Najważniejszym ustaleniem jest uwierzytelnianie — a raczej jego brak. Spośród 414 przetestowanych serwerów 380 (91,8%) nie miało OAuth. W artykule stwierdzono, że większość pozostałych używała statycznych tokenów bearer lub kluczy API, często przewidywalnych lub pustych — serwer, który akceptuje stały ciąg znaków, również nie jest w istotny sposób uwierzytelniany. Ponieważ audyt obejmował wyłącznie serwery publicznie dostępne bez poświadczeń, liczba ta z definicji opisuje populację serwerów ujawnionych; nie jest to szacunek dla serwerów MCP ogólnie.

68 ustaleń kwalifikujących się do zgłoszenia rozkłada się na klasy, a liczby w poszczególnych klasach nakładają się, zamiast sumować się do całości: 380 niedoskonałości uwierzytelniania, 52 przypadki akceptacji fuzzingu protokołów, 47 zatruwania narzędzi, 38 wstrzykiwania poleceń, 31 obejścia schematu, 29 fałszowania żądań po stronie serwera (SSRF), 24 manipulacji URI zasobów, 22 wstrzykiwania promptów, 18 ekspozycji tokenów i 14 wskaźników łańcucha dostaw. Moduły denial-of-service napisano, ale celowo nie uruchomiono ich przeciwko serwerom produkcyjnym; Padilla wyklucza je ze względów etycznych. Cztery typy podatności wymienione w streszczeniu — wstrzykiwanie SQL, SSRF wobec usług metadanych w chmurze, wstrzykiwanie szablonów promptów oraz path traversal poprzez manipulację kursorem — występują w obrębie tych klas.

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.

Liczba dotycząca wykonywania poleceń powłoki wymaga jednego zastrzeżenia, którego artykuł nie rozstrzyga. W części wyników na podstawie potwierdzonej puli 640 serwerów naliczono 687 instancji narzędzi z wykonywaniem poleceń powłoki i bez uwierzytelniania. W dyskusji tę samą liczbę wprowadza się słowami „spośród 414 serwerów poddanych dynamicznemu audytowi”, a następnie odnosi się do „szerszego potwierdzonego zbioru”. Te dwa ujęcia są niespójne, a artykuł nigdy nie podaje łącznej liczby narzędzi dla testowanych serwerów, więc 687 nie można przekształcić w wartość procentową.

Fluktuacja to ustalenie, które najbardziej zmienia sposób odczytywania liczb. Spośród 464 serwerów potwierdzonych 21 lipca 193 — 41,6% — zniknęło, gdy czwarty przebieg sprawdził je trzy dni później. Dziewięć z 41 serwerów z ustaleniem o wadze KRYTYCZNEJ również zniknęło. Padilla odczytuje to jako wdrażanie bez przeglądu; oznacza to również, że ustalenie potwierdzone w poniedziałek może nie mieć właściciela, który załatałby je do czwartku.

Trzy studia przypadków i to, co można sprawdzić

Trzy znaleziska są szczegółowo opisane, każde z identyfikatorem GitHub Security Advisory. Wstrzyknięcie SQL w lectorium-corpus-mcp (GHSA-m8qh-p8m5-8c48, ocenione jako CRITICAL) potwierdzono, wykorzystując payload ' OR 1=1 -- oraz różnicę w rozmiarze odpowiedzi, przy czym nie odczytano ani nie zachowano żadnej treści dokumentu. SSRF w epwforge (GHSA-r9fx-qwmc-rvx3, HIGH) potwierdzono poprzez pomiar czasu: 11,9 sekundy wobec wewnętrznego adresu metadanych w porównaniu z 0,3-sekundowym punktem odniesienia, przy czym nie zapisano żadnej treści odpowiedzi metadanych. Wstrzyknięcie szablonu promptu w frootai (GHSA-5h8f-r9g8-5w5p, HIGH) dopełnia zestaw.

Dwa z trzech można sprawdzić bezpośrednio. W dniu 30 października 2026 r. pierwsze dwie strony z komunikatami bezpieczeństwa były publicznie dostępne w repozytorium komunikatów CobaltoSec, obie opublikowane 20 sierpnia 2026, obie nadal zawierały „Załatane wersje: Brak” i nie zawierały CVE. Trzeci, GHSA-5h8f-r9g8-5w5p, nie został znaleziony pod tym adresem. Repozytorium CobaltoSec zawierało 46 opublikowanych komunikatów bezpieczeństwa w tej samej dacie, dotyczących serwerów MCP i powiązanych narzędzi AI; w artykule naliczono 19 jako publicznie ujawnione i 49 wciąż objętych embargiem w momencie jego pisania. Artefakt skanowania dotyczący frootai z datą 28 lipca 2026 znajduje się w repozytorium Corvus, więc test się odbył; tylko komunikat bezpieczeństwa jest niewidoczny.

Sam proces ujawniania opisano pobieżnie, a nie szczegółowo. Wszystkie 68 ustaleń przekazano opiekunom za pośrednictwem prywatnych GitHub Security Advisories w ramach 90-dniowego skoordynowanego embarga, a tam, gdzie prywatne zgłaszanie nie było dostępne, Padilla zamiast tego zgłosił publiczne zgłoszenie w repozytorium. W artykule relacjonuje się anegdotycznie, że niektórzy opiekunowie wdrożyli poprawki w ciągu 24 godzin, inni nie odpowiadali przez tygodnie, a niektóre repozytoria zostały porzucone. Nie podaje liczby skontaktowanych opiekunów ani tabeli odsetka odpowiedzi, twierdząc, że zostaną one podane w pełni w momencie zgłoszenia.

Czego artykuł nie ustala

Exposed by Design to preprint jednego autora. arXiv podaje wersję 1, przesłaną 31 lipca 2026 r., bez odniesienia do czasopisma i bez oświadczenia o recenzji. Archiwum przyznaje rekordowi ocenę wiarygodności B — udokumentowana, lecz pochodząca z jednego źródła — i ta ocena dotyczy całego tego tekstu: każda liczba powyżej pochodzi z pracy Padilli lub z publikowanych przez niego artefaktów, a nie z niezależnego pomiaru.

Wygląda na to, że żadna niezależna redakcja nie poinformowała o tym badaniu. Doniesienia istnieją — analiza napisana przez AI na forkast.news, posty na LinkedIn i Medium, chińskojęzyczny blog o bezpieczeństwie, japoński artykuł wyjaśniający — ale parafrazują preprint, nie przeprowadzając wywiadu z autorem, nie sprawdzając komunikatów ostrzegawczych ani nie dodając danych. Doniesienia pochodne nie są potwierdzeniem.

Padilla sam wskazuje ograniczenia i są one niezwykle konkretne. Testowano wyłącznie transporty HTTP; serwery stdio, typowe w zastosowaniach lokalnych, są poza zakresem. Wykrywanie serwerów odbywa się w trybie best-effort, więc 640 to dolna granica. 226 potwierdzonych serwerów, których nie przetestowano w pełni, wykluczono z powodu odpowiedzi 403, resetów połączeń, niezgodnych ze specyfikacją odpowiedzi JSON-RPC lub zwykłej niedostępności, a w artykule stwierdza się, że nie można wyznaczyć granic wynikającego z tego błędu selekcji. Wykrywanie opiera się na heurystykach — wyroczniach czasowych, odpowiedziach różnicowych, inspekcji schematów — bez oznaczonego benchmarku i bez opublikowanej precyzji lub czułości dla 34 modułów. Udokumentowana zmienność podważa aktualność czasową pojedynczych ustaleń. A pojedynczy badacz przeprowadzający ręczną weryfikację wprowadza ryzyko błędu potwierdzenia, które wymienia, ale nie określa go ilościowo.

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.

Co się zmieniło po

Praktycznym efektem jak dotąd są narzędzie oraz strumień porad. Corvus można zainstalować i jest udokumentowany, a repozytorium porad CobaltoSec zawierało 46 opublikowanych wpisów na dzień 30 października 2026 r., wobec 19 publicznych ujawnień, których artykuł doliczył się pod koniec lipca. Dwa spośród opisanych w artykule studiów przypadków wciąż nie mają wersji z poprawką — w przypadku tych serwerów ujawnienie doprowadziło do powstania publicznego zapisu, ale jeszcze nie do poprawki.

Dla obrońców użyteczna część badania to jego metoda, a nie nagłówek. {{1}}Liczba 91,8% uzyskana wyłącznie z serwerów, które odpowiedziały bez danych uwierzytelniających, mówi coś wąskiego, ale prawdziwego: większość tego, co było wystawione, nigdy nie została zablokowana, a trzydniowa rotacja sugeruje, że znaczna część została uruchomiona na potrzeby demonstracji, prototypu lub testu i nigdy nie została utwardzona.{{/1}} Artykuł nie może stwierdzić, czy to samo dotyczy serwerów MCP, na których organizacje faktycznie polegają, ponieważ nigdy nie znalazły się one w próbie.