Toxic agent flow w GitHub MCP ujawnia prywatne repozytoria przez publiczne issue
Invariant Labs pokazało, jak złośliwe publiczne issue na GitHubie nakłania agenta korzystającego z serwera GitHub MCP do skopiowania danych z prywatnego repozytorium do publicznego pull requesta.
Co się stało
26 maja 2025 r. Invariant Labs ujawniło incydent, który określiło jako toksyczny przepływ agenta z udziałem serwera GitHub MCP. Atakujący otwiera zgłoszenie w publicznym repozytorium i umieszcza w nim instrukcje skierowane do agenta. Gdy agent później odczytuje otwarte zgłoszenia, przejmuje wstrzyknięty tekst i postępuje zgodnie z nim.
Token agenta mógł też zapewniać dostęp do prywatnych repozytoriów właściciela. Postępując zgodnie z instrukcjami ze zgłoszenia, agent pobrał dane z tych prywatnych repozytoriów i opublikował je w pull requeście w publicznym repozytorium, gdzie każdy mógł je odczytać.
Dlaczego się udało
W jednej sesji wystąpiły wszystkie trzy elementy śmiertelnej triady: token z dostępem do prywatnych repozytoriów, niezaufany tekst z publicznego zgłoszenia i publiczny pull request jako kanał wyprowadzania danych. Każdy z tych elementów osobno jest typowy. Razem pozwalają każdemu, kto może otworzyć zgłoszenie, odczytać wszystko, do czego ma dostęp token.
Co zrobić
- Agentom odczytującym publiczne zgłoszenia przydzielaj token ograniczony do jednego repozytorium.
- Oddzielaj publiczne i prywatne repozytoria, używając osobnych sesji agentów.
- Wymagaj zatwierdzenia, zanim agent utworzy pull request, doda komentarz lub wykona commit w publicznym repozytorium.
- Traktuj tytuły i treść zgłoszeń oraz komentarze jako niezaufane dane wejściowe.
Przerwij zabójczą triadęStosuj zasadę minimalnych uprawnieńWymagaj akceptacji działań o istotnych konsekwencjach
EchoLeak: kradzież danych z Microsoft 365 Copilot bez interakcji użytkownika
Zatruwanie narzędzi MCP: ukryte instrukcje w opisach narzędzi
Przejdź przez checklistę bezpieczeństwa →