Przejdź do treści
INDEKS ANALIZ BREACHROAD / NOTA TECHNICZNA

Apache SkyWalking MCP: CVE-2026-34884 łączy SSRF z wstrzyknięciem GraphQL

SkyWalking MCP 0.1.0 pozwalał narzędziu zmieniać URL backendu i manipulować GraphQL. Analizujemy granice MCP, ekspozycję i bezpieczną aktualizację do 0.2.0.

MATERIAŁ PUBLICZNY
AUTOR
/ CEO Breachroad · OSCP · PNPT
PUBLIKACJA
18 sierpnia 2026
CZAS CZYTANIA
16 min czytania
TEMAT
Bezpieczeństwo AI
Apache SkyWalking MCP: CVE-2026-34884 łączy SSRF z wstrzyknięciem GraphQL

Rekord CVE-2026-34884 opublikowany 18 sierpnia 2026 roku opisuje krytyczny problem w Apache SkyWalking MCP 0.1.0. Serwer MCP pozwalał za pośrednictwem narzędzia set_skywalking_url sterować adresem backendu, co tworzyło ścieżkę SSRF, a sposób budowania wyrażeń GraphQL umożliwiał injection. Projekt zaleca przejście na wersję 0.2.0.

Chronologia jest istotna: ogłoszenie Apache na liście bezpieczeństwa pochodzi z 13 kwietnia, natomiast rekord CVE otrzymał publiczną publikację lub aktualizację 18 sierpnia. To nie jest nowy atak odkryty właśnie tego dnia. Jest to nowy, szerzej indeksowany rekord problemu ujawnionego i naprawianego wcześniej. Zespół nie powinien jednak zakładać, że kwietniowa poprawka automatycznie trafiła do wszystkich obrazów, eksperymentów i lokalnych instalacji.

Co robi SkyWalking MCP

Apache SkyWalking jest platformą obserwowalności dla systemów rozproszonych. Serwer MCP udostępnia agentowi lub asystentowi narzędzia pozwalające pytać o dane SkyWalking. Z punktu widzenia użytkownika model może naturalnym językiem poprosić o analizę usług, śladów czy metryk. Technicznie serwer tłumaczy intencję na wywołania do backendu.

Taka integracja łączy trzy strefy zaufania: niezaufaną treść przetwarzaną przez model, proces MCP wykonujący narzędzia oraz system obserwowalności z informacjami o infrastrukturze. Jeżeli agent może zmienić cel połączenia albo swobodnie kształtować zapytanie, dane wejściowe modelu zaczynają wpływać na ruch sieciowy i język zapytań.

Właśnie dlatego „to tylko narzędzie do odczytu metryk” jest błędnym modelem ryzyka. Nawet operacja bez polecenia systemowego może skanować sieć wewnętrzną, dotykać endpointów metadanych chmurowych lub manipulować zapytaniem wykonywanym z uprawnieniami serwera.

SSRF przez zmianę URL backendu

SSRF, czyli Server-Side Request Forgery, występuje, gdy atakujący kontroluje miejsce, do którego serwer wysyła żądanie. W tym przypadku narzędzie pozwalało ustawić URL SkyWalking. Jeśli model wywoła je na podstawie bezpośredniej instrukcji albo prompt injection w przetwarzanym dokumencie, proces MCP może połączyć się z adresem wybranym przez napastnika.

Rzeczywisty skutek zależy od sieci i tożsamości procesu. Możliwe cele obejmują usługi osiągalne tylko lokalnie, panel administracyjny, adres loopback, prywatne zakresy RFC1918, IPv6 link-local, wewnętrzny DNS lub metadata service chmury. Nawet gdy odpowiedź nie wraca wprost do atakującego, różnice czasu i błędów mogą służyć do enumeracji.

Blokada tekstowych prefiksów nie wystarcza. Adres może przejść przez przekierowanie, alternatywną notację IP, kontrolowany DNS lub zmianę wyniku między walidacją a połączeniem. Bezpieczna implementacja powinna przypisać cel administracyjnie, rozwiązać DNS w kontrolowany sposób, sprawdzić końcowy adres po każdym przekierowaniu oraz wymusić allowlistę schematu, hosta i portu.

Najsilniejszą kontrolą jest jednak sieć. Proces MCP nie powinien mieć trasy do metadata service, control plane ani segmentów, których nie potrzebuje. Polityka egress sprawia, że błąd walidacji aplikacji nie daje automatycznie dostępu do całej infrastruktury.

GraphQL expression injection

Druga część CVE dotyczy wstrzyknięcia wyrażenia GraphQL. Jeżeli wartości sterowane przez narzędzie są konkatenowane z tekstem zapytania, atakujący może próbować zamknąć oczekiwany argument i dodać własne pola, fragmenty lub dyrektywy. Nie jest to klasyczne SQL injection, ale wspólny problem jest podobny: dane stają się strukturą programu.

GraphQL ma jawny schemat i walidację typów, lecz nie chronią one przed zapytaniem, które jest składniowo poprawne, ale szersze niż zamierzał autor wrappera. Proces może odczytać dodatkowe pola, wykonać kosztowne zagnieżdżenie albo wykorzystać mutation, jeżeli poświadczenie i schema na to pozwalają. Skutek zależy zatem od dostępnych operacji i uprawnień tokenu SkyWalking.

Bezpieczny klient powinien używać statycznych dokumentów GraphQL oraz zmiennych przekazywanych osobno, z ograniczonym typem i długością. Serwer może stosować allowlistę znanych operacji lub persisted queries, limity głębokości i złożoności, timeout oraz budżet wyników. Konto integracji powinno mieć wyłącznie niezbędny odczyt.

Jak prompt injection dociera do warstwy sieciowej

Atak nie musi zaczynać się od zalogowanego administratora wpisującego złośliwy URL. Agent może analizować log, ticket, opis incydentu lub stronę zawierającą ukrytą instrukcję. Jeżeli model uzna ją za polecenie i ma uprawnienie do wywołania set_skywalking_url, niezaufana treść przechodzi z warstwy języka do konfiguracji transportu.

To jest sedno ryzyka MCP: schema narzędzia określa format, ale sama nie ustanawia polityki. Poprawny argument typu string może być niedozwolonym hostem. Poprawne wyrażenie może łamać intencję użytkownika. Broker powinien rozdzielać decyzję modelu od zatwierdzenia operacji i blokować zmianę krytycznych ustawień w zwykłej sesji odczytowej.

Architektura sandboxa dla agentów AI powinna uwzględniać osobny proces lub mikroVM dla konektora, profil sieciowy per narzędzie i brak dziedziczonych sekretów. Jeżeli wszystkie konektory działają w jednym procesie z jednym egress i zestawem tokenów, kompromitacja najsłabszego rozszerza się na pozostałe.

Oddzielny CVE o nagłówku SW-URL

SkyWalking MCP 0.1.0 dotyczył także osobny CVE-2026-34476, opisywany jako SSRF przez nagłówek SW-URL. Oba problemy naprawia przejście na 0.2.0, ale nie należy scalać numerów ani twierdzić, że mają identyczny mechanizm. CVE-2026-34884 łączy narzędzie zmiany URL z injection GraphQL; CVE-2026-34476 dotyczy innego wejścia sterującego celem.

Dla obrony rozróżnienie jest praktyczne. Zablokowanie jednego narzędzia nie wystarczy, jeżeli alternatywny nagłówek nadal zmienia host. Test regresji powinien objąć wszystkie miejsca, w których cel backendu może pochodzić z żądania, konfiguracji sesji, nagłówka lub zmiennej środowiskowej.

Jak sprawdzić ekspozycję

Zacznij od SBOM, lockfile, obrazu i rzeczywistego procesu. Nazwa repozytorium w dokumentacji nie dowodzi wersji uruchomionej w klastrze. Znajdź SkyWalking MCP 0.1.0 w produkcji, stagingu, środowiskach demonstracyjnych, laptopach deweloperów i prywatnych agentach. Ustal, czy proces miał możliwość ustawienia adresu, egress do sieci wewnętrznej oraz poświadczenia do SkyWalking.

Następnie:

  • zaktualizuj do 0.2.0 lub nowszej wspieranej wersji i odbuduj obrazy z przypiętym digestem;
  • usuń możliwość zmiany backendu przez model, jeśli funkcja nie jest biznesowo konieczna;
  • ogranicz DNS, egress i redirecty do zatwierdzonego klastra SkyWalking;
  • zrotuj token integracji, jeżeli logi wskazują połączenia do niezatwierdzonych hostów;
  • przeszukaj logi narzędzi pod kątem set_skywalking_url, nagłówka SW-URL, adresów prywatnych i nietypowych błędów GraphQL;
  • skoreluj czas wywołania MCP z DNS, firewallem, proxy oraz logiem backendu;
  • dodaj testy negatywne dla loopback, metadata service, IPv6 i przekierowań;
  • upewnij się, że logi nie zapisują tokenu ani pełnych wrażliwych odpowiedzi.

Nie waliduj podatności przez kierowanie produkcyjnego serwera na rzeczywiste zasoby wewnętrzne. W izolowanym środowisku użyj syntetycznych usług i tokenów, a wynik potwierdź przez decyzję polityki oraz log, nie przez próbę pozyskania sekretu.

Detekcja i wnioski architektoniczne

Alert powinien powstać, gdy konektor zmienia host po starcie, rozwiązuje nazwę spoza allowlisty, łączy się z zakresem prywatnym niebędącym zatwierdzonym backendem albo generuje zapytanie GraphQL o nieznanym identyfikatorze. Warto rejestrować hash statycznego dokumentu, nazwy operacji i koszt, bez zapisywania całych danych klientów.

Fakty o wersji 0.1.0, typie podatności i aktualizacji 0.2.0 pochodzą z komunikatu Apache i rekordu CVE. Scenariusz prompt injection, zalecenia sieciowe, rotacja i detekcja są analizą Breachroad. Nie twierdzimy, że każda podatna instancja została wykorzystana albo że CVE daje identyczny skutek w każdej sieci.

To dobry materiał do wspólnego ćwiczenia zespołów AI, platformy i SOC. Szkolenia z bezpieczeństwa AI i cyberbezpieczeństwa pokazują, jak dane stają się akcją narzędzia. Audyt bezpieczeństwa AI może zweryfikować registry MCP, egress, poświadczenia i polityki GraphQL w rzeczywistym wdrożeniu.

Źródła

UDOSTĘPNIJ / KOPIUJ