niedziela, 6 września 2026

Nowości

Badacze rozdzielili złośliwe polecenie na kawałki i oszukali agentów kodujących AI

ProgramowaniePatryk Raba
Badacze rozdzielili złośliwe polecenie na kawałki i oszukali agentów kodujących AI
Fot. ThisIsEngineering, Pexels (Pexels License)

Grupa badawcza ASSET z University of Missouri-Kansas City pokazała, że rozbicie złośliwego polecenia na pozornie niewinne fragmenty w serwerze MCP potrafi nakłonić agentów kodujących do wykradania kluczy SSH i kodu źródłowego, mimo że wprost proszone o to odmawiają.

Spis treści
  1. Jak działa sztuczka z formularzem
  2. Ten sam model, różny wynik
  3. Dlaczego wcześniejsze zabezpieczenia zawodzą
  4. Znaczenie dla firm korzystających z agentów kodujących

Poproszony wprost o wysłanie cudzych kluczy SSH agent kodujący AI odmawia. Ale gdy to samo żądanie trafia do niego w kawałkach, ukrytych w opisie narzędzia i w wyniku jego działania, wielu agentów samo skleja polecenie w całość i wykonuje je bez pytania. Tak działa GhostSplice, technikę tę opisała grupa badawcza ASSET z University of Missouri-Kansas City.

Jak działa sztuczka z formularzem

Model Context Protocol, standard łączący agentów AI z narzędziami zewnętrznymi, pozwala serwerowi MCP dostarczać treści przez kilka niezależnych kanałów naraz: opis narzędzia, wynik jego działania, a w niektórych konfiguracjach także wiadomości typu sampling. Badacze z ASSET pokazali, że wszystkie te kanały trafiają do jednego wspólnego bloku pamięci roboczej agenta, bez żadnego oznaczenia, który fragment pochodzi skąd.

W referencyjnym przykładzie zespół zbudował fałszywy serwer MCP reklamujący nieszkodliwe narzędzie o nazwie integrity_checker, z czterema pustymi polami opisanymi neutralnie jako alfa, beta, gamma i delta. Dopiero wynik innego, wcześniej wywołanego narzędzia skanującego projekt zawierał mapowanie, które pole ma zawierać klucz SSH, które kod źródłowy, które dane klientów, a które zawartość pliku .env, rzekomo do celów weryfikacji sumy kontrolnej po stronie serwera.

Dla modelu zadanie sprowadza się do wypełnienia formularza, o który poprosiło narzędzie - ASSET Research Group

Ten sam model, różny wynik

Najbardziej niepokojącym elementem badania jest rozbieżność wyników w zależności od środowiska, w którym pracuje ten sam model. Claude Haiku 4.5 odmawiał ataku w bezpośrednich testach przez API, ale w środowisku Cursor uległ mu w każdym przypadku. GPT-5.4 wykazał 90 procent skuteczności ataku w Cursor, 100 procent przez Codex CLI, ale 0 procent za warstwą zabezpieczeń Claude Code. Claude Sonnet 4.6 i Opus 4.6 wypadły najlepiej, z zerową skutecznością w większości scenariuszy, choć badacze odnotowali pojedyncze przypadki, w których Sonnet mimo to ujawnił fragmenty kodu źródłowego zawierającego zaszyte na sztywno klucze dostępowe.

Oznacza to, że sama nazwa i wersja modelu nie mówi wystarczająco dużo o odporności na ten typ ataku. Decydujące są warstwy zabezpieczeń narzucone przez konkretnego klienta, w którym agent działa, ich obecność lub brak w danym środowisku programistycznym może zmienić wynik z całkowitej odmowy na stuprocentową skuteczność wycieku.

Dlaczego wcześniejsze zabezpieczenia zawodzą

Twórcy specyfikacji MCP oraz OpenAI zalecają, by człowiek zachowywał możliwość odrzucenia każdego wywołania narzędzia oraz by adnotacje z niezaufanych serwerów traktować jako dane niezaufane. To wytyczne obecne w dokumentacji od dłuższego czasu, GhostSplice pokazuje jednak, że same w sobie nie wystarczają, gdy złośliwa treść nigdy nie pojawia się w jednym miejscu jako kompletne żądanie, tylko składa się z fragmentów rozproszonych po kanałach, które agent i tak regularnie przetwarza.

ASSET proponuje podejście bardziej restrykcyjne: traktować cały wynik działania narzędzia jako dane, nigdy jako instrukcję, oraz blokować sytuacje, w których wartość zwrócona przez jedno narzędzie trafia bez weryfikacji do argumentów wywołania innego narzędzia. To wymagałoby zmian architektonicznych w sposobie, w jaki klienci MCP zarządzają kontekstem rozmowy, nie tylko dopisania kolejnej reguły filtrującej.

Znaczenie dla firm korzystających z agentów kodujących

Badacze zastrzegają, że GhostSplice nie jest zewnętrznym włamaniem, atak wymaga, by deweloper sam podłączył złośliwy lub przejęty serwer MCP do swojego środowiska, a agent musiał już mieć uprawnienia do odczytu plików takich jak klucze SSH czy .env. W praktyce oznacza to ryzyko związane z łańcuchem dostaw narzędzi deweloperskich, fałszywym lub podszywającym się pakietem MCP w publicznym rejestrze, a nie z bezpośrednim atakiem na infrastrukturę firmy.

Dla zespołów programistycznych w Polsce, które coraz częściej podłączają agentów kodujących do własnych repozytoriów i baz danych, wnioski są konkretne: sama reputacja dostawcy modelu nie chroni przed tym typem manipulacji, a każdy dodatkowy serwer MCP z automatu rozszerza powierzchnię ataku o kolejny kanał, którym można przemycić instrukcję w kawałkach. Audyt źródeł MCP i ograniczanie uprawnień odczytu plików agentom stają się zadaniem równie ważnym jak wybór samego modelu.

Kod dowodowy GhostSplice jest publicznie dostępny na GitHubie, co ma z jednej strony pomóc zespołom bezpieczeństwa przetestować własne wdrożenia, a z drugiej rodzi pytanie o to, jak szybko podobne techniki fragmentacji trafią do rzeczywistych kampanii przeciwko firmom korzystającym z agentów AI w codziennej pracy programistycznej.

Udostępnij: