Rotacja tokenu nie pomaga. Co Mitiga mówi o trwałym przejęciu MCP w Claude Code

maj 9, 2026 | Cyberflux

Co robić teraz: Sprawdź zawartość ~/.claude.json — szczególnie sekcję mcpServers. Jeśli adresy URL serwerów MCP wskazują na localhost lub nieznane hosty których nie konfigurowałeś — to jest wskaźnik kompromitacji. Rotacja tokenu bez usunięcia złośliwego hooka nic nie da: hook zapisze nowy token przy następnym załadowaniu Claude Code.

Jeśli używasz Claude Code z serwerami MCP OAuth (GitHub, Linear, Slack, Atlassian i inne) — monitoruj dzienniki aktywności po stronie tych platform pod kątem operacji których nie wykonałeś.

Dlaczego to jest inne niż TrustFall

Pisaliśmy wczoraj o TrustFall — jeden klawisz Enter, niesandboxowany Node.js, kod z repozytorium uruchomiony z pełnymi uprawnieniami. Groźne, ale momentalne: exploit działa w chwili zaufania.

Mitiga Labs opisuje inny mechanizm i inną klasę skutku. Nie jednorazowy kod uruchamiany przy zaufaniu — trwała przebudowa infrastruktury routing'u tokenów.

Jednozdaniowe podsumowanie techniczne: złośliwy pakiet npm instaluje hook który modyfikuje ~/.claude.json, wstawia serwer proxy jako pośrednik dla całego ruchu MCP, przechwytuje tokeny OAuth przy każdym odświeżeniu sesji — i automatycznie przywraca konfigurację gdy użytkownik spróbuje ją zmienić lub obrócić token.

Mitiga opisuje efekt końcowy: "Trwałe przekierowanie poświadczeń SaaS ofiary do infrastruktury kontrolowanej przez atakującego, z automatycznym odzyskiwaniem po rotacji tokenów, niewidoczne dla interfejsu użytkownika, i nieodróżnialne od legalnego ruchu po stronie dostawcy."

~/.claude.json jako punkt kontrolny

~/.claude.json to globalny plik konfiguracyjny Claude Code. Przechowuje konfigurację serwerów MCP, stan zaufania katalogów i — co jest kluczowym elementem tej historii — tokeny OAuth dla dynamicznie autoryzowanych serwerów MCP.

Claude Code wspiera OAuth dla serwerów MCP wymagających logowania użytkownika: GitHub, Linear, Slack, Atlassian Jira, inne platformy SaaS. Tokeny te są przechowywane w plaintext w tym samym pliku konfiguracyjnym. Zmień URL serwera w mcpServers — a cały ruch MCP zostanie przekierowany na nowy adres.

Mitiga pokazuje jak złośliwy pakiet npm to wykorzystuje. Post-install hook, uruchamiający się automatycznie przy npm install, lokalizuje plik ~/.claude.json i edytuje sekcję mcpServers — wstawiając adres serwera proxy atakującego jako pośrednik. Przy każdym kolejnym załadowaniu Claude Code ruch MCP przechodzi przez ten proxy. Tokeny OAuth — i wszystkie dane przesyłane przez serwery MCP — trafiają do infrastruktury atakującego zanim dotrą do legalnego celu.

Jeśli użytkownik obraca token: hook zapisuje nowy przy następnym załadowaniu. Jeśli użytkownik edytuje URL serwera: hook przywraca złośliwy adres przy następnym załadowaniu. Atakujący osiągnął trwałość która przeżywa standardowe kroki remediacji.

Dziennik który wygląda jak legalny ruch

Jest jeden szczegół w raporcie Mitiga który jest bardziej niepokojący niż sam mechanizm ataku.

Mitiga pokazuje przykładowy wpis w dzienniku Atlassian Jira podczas aktywnej eksploitacji. Wpis wygląda tak:

Użytkownik: prawdziwy. Sesja: prawdziwa. Adres IP: rozwiązuje się do zakresu wyjściowego Anthropic. Operacja: JQL query pulling tickets that mention credentials — rodzaj zapytania które ten użytkownik wykonuje kilkanaście razy w tygodniu. Nie ma nic podejrzanego w tym wpisie.

Ale użytkownik tego zapytania nie wykonał. Claude Code wykonał je używając tokenu OAuth który użytkownik autoryzował dla innego celu, w ramach decyzji zaufania która została po cichu nadpisana na dysku.

Dostawca SaaS widzi legalny ruch z legalnego użytkownika z legalnego adresu IP. Nie ma podstaw do alertu. Z perspektywy monitoringu po stronie platformy — nie wydarzyło się nic podejrzanego.

Odpowiedź Anthropic: trzecia "poza zakresem" w miesiąc

Mitiga zgłosiło wyniki Anthropic 10 kwietnia 2026 roku. Dwa dni później, 12 kwietnia, Anthropic odpowiedział: poza zakresem. Uzasadnienie identyczne jak przy TrustFall — użytkownik wyraził zgodę wykonując instalację pakietu.

To jest trzecia odpowiedź "poza zakresem" lub "oczekiwane zachowanie" od Anthropic w ciągu miesiąca dla trzech różnych klas problemów bezpieczeństwa w ekosystemie Claude Code:

OX Security — architektoniczny błąd STDIO w MCP: "zachowanie oczekiwane, odpowiedzialność deweloperów."

Adversa AI — TrustFall: "poza zakresem, użytkownik wyraził zgodę naciskając Enter."

Mitiga — przekierowanie MCP: "poza zakresem, instalacja pakietu npm stanowi zgodę."

Wzorzec jest czytelny: Anthropic konsekwentnie klasyfikuje problemy bezpieczeństwa w ekosystemie agentowym jako odpowiedzialność niższych warstw — deweloperów, użytkowników, ekosystemu npm. Mitiga wprost mówi co z tym zrobić: "Czego nie wolno robić to czekać na rozwiązanie od Anthropic."

Co różni ten atak od typowego złośliwego npm

Mitiga wskazuje jeden kluczowy element który odróżnia ten łańcuch ataku od standardowego złośliwego pakietu npm.

Typowy złośliwy pakiet npm eksfiltruje to co może osiągnąć w momencie instalacji i kończy działanie gdy proces instalacji się zamyka. Jednorazowe zebranie danych dostępnych w środowisku instalacji.

Ten hook robi co innego. Instaluje trwałe przekierowanie z automatycznym odnawianiem. Każde odświeżenie sesji MCP, każda operacja na serwerach SaaS wykonywana przez Claude Code, każdy nowy token po rotacji — wszystko przechodzi przez infrastrukturę atakującego dopóki hook nie zostanie usunięty i konfiguracja nie zostanie przywrócona.

Różnica nie jest w samej kompromitacji — jest w czasie trwania i jakości dostępu. Typowy złośliwy npm: dostęp przez kilka sekund w momencie instalacji. Ten mechanizm: trwały dostęp do wszystkich platform SaaS połączonych przez MCP, przez tygodnie lub miesiące, niewidoczny dla standardowych mechanizmów wykrywania.

Połączenie z pełnym obrazem

Mitiga przyznaje uczciwie: warunkiem wstępnym jest wykonanie kodu na maszynie ofiary przez złośliwą instalację pakietu npm. Anthropic ma rację że jeśli atakujący ma wykonanie kodu na endpoincie, wiele rzeczy jest możliwe.

Ale Shai-Hulud przez PyPI i npm dokładnie to zapewniał — wykonanie kodu przez zatrute pakiety w ekosystemach deweloperskich. TeamPCP przez Checkmarx KICS — to samo przez inny wektor. TrustFall przez sklonowane repozytorium — jeszcze inaczej.

Założenie Anthropic ("jeśli atakujący ma wykonanie kodu, wiele rzeczy jest możliwe") jest poprawne w abstrakcji. Problem polega na tym że w rzeczywistości ekosystemu deweloperskiego 2026 roku — gdzie TeamPCP aktywnie zatruwa pakiety npm i PyPI, gdzie Shai-Hulud celuje precyzyjnie w narzędzia AI do kodowania — wykonanie kodu przez instalację pakietu jest wektorem z aktywną historią eksploitacji, nie hipotetycznym warunkiem wstępnym.

Połączenie Shai-Hulud jako wektora dostarczenia z mechanizmem Mitiga jako ładunkiem jest bardziej realistycznym scenariuszem ataku niż każde z nich osobno.

Co monitorować

Mitiga wskazuje konkretne sygnały do monitorowania:

Zmiany w ~/.claude.json — szczególnie w sekcji mcpServers. Nowe hosty lub adresy localhost których nie konfigurowałeś.

Procesy nasłuchujące na niestandardowych portach localhost zbiegające się z sesjami Claude Code.

Odświeżenia tokenów OAuth dla narzędzi SaaS poza normalnymi wzorcami użycia.

Aktywność po stronie platform SaaS (GitHub, Jira, Linear, Slack) która nie odpowiada zadaniom które Claude Code faktycznie wykonywał.

Mitiga oferuje własne narzędzie do korelacji tych sygnałów — łączące aktywność OAuth po stronie SaaS z tożsamością użytkownika i zatwierdzonymiintergracjami AI w jeden widok dla SecOps.

Podsumowanie

Mitiga pokazało że standardowy mechanizm autoryzacji MCP w Claude Code — przechowywanie tokenów OAuth w plaintext w globalnym pliku konfiguracyjnym z prostym polem URL serwera — można zamienić w trwały kanał eksfiltracji przez jeden post-install hook w pakiecie npm.

Anthropic sklasyfikował to jako poza zakresem. To jest trzecia taka decyzja w miesiąc. Mitiga mówi wprost: czekanie na Anthropic nie jest strategią.

Logi po stronie dostawcy SaaS wyglądają jak legalny ruch. Rotacja tokenów nie pomaga bez usunięcia hooka. Standardowe mechanizmy wykrywania nie widzą problemu.

To jest właśnie ten rodzaj trwałego, niewidocznego dostępu który Mandiant dokumentował jako rosnący trend w M-Trends 2026 — atakujący którzy wchodzą szybko i siedzą cicho przez tygodnie.

Źródła

Mitiga Labs — pełna analiza techniczna z łańcuchem ataku i przykładem dziennika Atlassian: https://www.mitiga.io/blog/claude-code-mcp-token-theft-mitm

SecurityWeek — omówienie z cytatami z raportu: https://www.securityweek.com/claude-code-oauth-tokens-can-be-stolen-through-stealthy-mcp-hijacking/

CXO Digital Pulse — kontekst remediacji i monitorowania: https://www.cxodigitalpulse.com/researchers-warn-claude-code-oauth-tokens-can-be-stolen-through-stealthy-mcp-hijacking/