Bezpieczeństwo agentów
Agenci odczytują teksty napisane przez nieznane osoby, a potem działają z użyciem Twoich poświadczeń. Ta strona przedstawia podstawową zasadę, obie listy OWASP z 2026 r., dotychczasowe incydenty i zabezpieczenia, które mogłyby im zapobiec.
Śmiertelna triada
- Dostęp do prywatnych danychPoczta e-mail, repozytoria, bazy danych, pliki i wszystko inne, do czego można uzyskać dostęp za pomocą Twoich poświadczeń.
- Kontakt z niezaufanymi treściamiStrony internetowe, zgłoszenia, tickety pomocy technicznej, przychodzące wiadomości e-mail i opisy narzędzi — każdy tekst, który może napisać atakujący.
- Możliwość komunikacji zewnętrznejWysyłanie wiadomości e-mail, otwieranie pull requestów, pobieranie adresów URL lub wyświetlanie zdalnych obrazów. Simon Willison opisał tę kombinację trzech elementów w czerwcu 2025 r.
Jeśli jeden agent ma wszystkie trzy możliwości, załóż, że prompt injection może skłonić go do przekazania Twoich danych atakującemu. Nie licz na to, że model odmówi — odbierz przynajmniej jeden z tych elementów każdemu agentowi i każdej sesji.
Lista kontrolna bezpieczeństwa
22 kontrole dotyczące danych wejściowych, narzędzi, środowiska uruchomieniowego, MCP, CI i operacji. Odhaczaj je w trakcie pracy, a wynik wyeksportuj jako plik Markdown.
Rejestr incydentów
Każdy publicznie ujawniony incydent związany z bezpieczeństwem agentów od kwietnia 2025 r.: co się stało, dlaczego atak się powiódł i co zmienić we własnej konfiguracji.
Najnowsze incydenty
- Przejęcie sesji i dostęp do zadań innych sesji w MCP Python SDK
- Automatyczne zatwierdzanie WebFetch w Claude Code umożliwiało wyprowadzanie danych przez huggingface.co
- Comment and Control: tekst PR wykrada sekrety od agentów CI
- MCP TypeScript SDK ujawniał odpowiedzi między klientami
- ClawHavoc: setki złośliwych skills w ClawHub rozprzestrzeniały AMOS
OWASP Top 10 dla aplikacji agentowych 2026
OWASP GenAI Security Project opublikował tę listę 9 grudnia 2025. Obejmuje ona zagrożenia, które pojawiają się, gdy model planuje, zachowuje pamięć, wywołuje narzędzia i współpracuje z innymi agentami.
ASI01Przejęcie celu agentaAtakujący zmienia cel agenta, zwykle za pomocą instrukcji ukrytych w odczytywanych przez niego treściach. Agent realizuje wtedy cel atakującego, korzystając z narzędzi i uprawnień użytkownika.
ASI02Nadużywanie i wykorzystywanie narzędziAgent używa legalnych narzędzi w szkodliwy sposób — na przykład usuwa rekordy, wysyła wiadomości lub łączy wywołania — ponieważ został zmanipulowany albo ma dostęp do narzędzi o szerszych uprawnieniach, niż wymaga zadanie.
ASI03Nadużywanie tożsamości i uprawnieńAgenci działają za pomocą poświadczeń, przekazanych tokenów i odziedziczonych uprawnień. Atakujący wykorzystują te tożsamości lub luki między nimi, aby eskalować uprawnienia albo działać w imieniu innej osoby.
ASI04Luki w łańcuchu dostaw systemów agentowychNarzędzia, serwery MCP, umiejętności, wtyczki, modele i prompty wczytywane podczas kompilacji lub działania programu mogą być złośliwe albo przejęte. Ponieważ agenci wczytują wiele z nich dynamicznie, jeden wadliwy komponent zagraża każdej korzystającej z niego sesji.
ASI05Nieoczekiwane wykonanie kodu (RCE)Agenci, którzy piszą i uruchamiają kod albo przekazują dane wyjściowe modelu do powłok i interpreterów, mogą zostać nakłonieni do uruchomienia na hoście poleceń wybranych przez atakującego.
ASI06Zatrucie pamięci i kontekstuAtakujący umieszcza fałszywe informacje lub instrukcje w pamięci agenta, pobieranych dokumentach albo zapisanym kontekście. Zatrute dane pozostają tam i wpływają na kolejne sesje długo po usunięciu pierwotnych danych wejściowych.
ASI07Niezabezpieczona komunikacja między agentamiWiadomości między agentami są przesyłane bez odpowiedniego uwierzytelniania, kontroli integralności lub walidacji, przez co można je podszyć, odtworzyć lub zmodyfikować, aby wprowadzić w błąd agenta, który je otrzymuje.
ASI08Awarie kaskadoweJeden błąd, taki jak zatrute dane wejściowe, błędny wynik narzędzia lub przejęty agent, może rozprzestrzenić się między połączonymi agentami i zautomatyzowanymi krokami szybciej, niż ludzie zdążą zareagować.
ASI09Wykorzystywanie zaufania człowieka do agentaAgenci brzmią pewnie i pomocnie, dlatego ludzie często zatwierdzają proponowane przez nich działania. Atakujący wykorzystują to zaufanie, by nakłonić człowieka do potwierdzenia szkodliwego działania lub ujawnienia informacji.
ASI10Agenci działający samowolniePrzejęty agent lub agent, który odszedł od zamierzonego sposobu działania, nadal działa samodzielnie, poza zakresem i nadzorem, które mu wyznaczono.
OWASP Top 10 dla aplikacji LLM 2026
To wydanie opublikowano 4 sierpnia 2026; zastępuje ono listę z 2025 r. Nadmierna sprawczość awansowała z szóstego na trzecie miejsce, a Wyciek systemowego promptu przemianowano na Ujawnienie ukrytego kontekstu.
LLM01Prompt injectionDane wejściowe zmieniają zachowanie modelu w sposób niezamierzony przez programistę. Mogą pochodzić bezpośrednio od użytkownika lub pośrednio z dokumentów, stron internetowych i wyników narzędzi, które model odczytuje.
LLM02Ujawnienie poufnych informacjiModel lub aplikacja ujawnia w odpowiedzi dane osobowe, dane uwierzytelniające, tajemnice biznesowe lub inne poufne informacje pochodzące z danych treningowych, kontekstu albo połączonych systemów.
LLM03Nadmierna autonomiaAplikacja przyznaje modelowi więcej funkcji, uprawnień lub autonomii, niż wymaga tego zadanie, przez co zmanipulowany lub błędny wynik może spowodować realne szkody. Ta kategoria awansowała z szóstego miejsca w 2025 roku na trzecie w 2026 roku.
LLM04Łańcuch dostawModele, zbiory danych, adaptery, pakiety i wtyczki innych firm mogą zostać zmodyfikowane lub zawierać podatności, przenosząc związane z nimi ryzyko do aplikacji.
LLM05Zatruwanie danych i modeliAtakujący manipulują danymi do pretrenowania, fine-tuningu lub embeddingami, by zaszyć backdoory, uprzedzenia albo błędne zachowania, które ujawniają się dopiero później, w środowisku produkcyjnym.
LLM06Nieograniczone zużycie zasobówBez limitów liczby żądań, rozmiaru danych wejściowych lub użycia mocy obliczeniowej atakujący mogą znacząco zwiększyć rachunki, wyczerpać zasoby lub skopiować model, wysyłając dużą liczbę zapytań.
LLM07DezinformacjaModel generuje fałszywe lub wprowadzające w błąd treści, które brzmią wiarygodnie, a użytkownicy lub systemy przetwarzające te treści podejmują na ich podstawie działania bez weryfikacji.
LLM08Ujawnienie ukrytego kontekstuWcześniej: wyciek promptu systemowego. Można wyodrębnić prompty systemowe, ukryte instrukcje i inny kontekst, który nie powinien być widoczny dla użytkownika, ujawniając umieszczone w nich reguły, logikę lub sekrety.
LLM09Słabości wektorów i embeddingówBłędy w generowaniu, przechowywaniu i pobieraniu embeddingów umożliwiają atakującym wstrzykiwanie treści, wyciek danych między tenantami lub odtwarzanie tekstu źródłowego. Najbardziej narażone są systemy RAG.
LLM10Nieprawidłowa obsługa wynikówWynik modelu trafia do przeglądarek, powłok, baz danych lub innych komponentów bez walidacji ani kodowania, co umożliwia ataki XSS, SQL injection, wykonywanie kodu i eksfiltrację danych.
Zabezpieczenia
Piętnaście udokumentowanych zabezpieczeń, każde z odnośnikiem do źródła. Stosuj kilka warstw, ponieważ żadne z nich nie powstrzyma samodzielnie każdego ataku.
Przerwij zabójczą triadę
Zasada Simona Willisona: agent, który może odczytywać prywatne dane, widzi niezaufane treści i może wysyłać dane na zewnątrz, może zostać wykorzystany przeciwko tobie za pomocą dowolnego tekstu, który odczyta. Odbierz każdemu agentowi lub sesji co najmniej jedną z tych trzech możliwości. Na przykład agent sortujący publiczne zgłoszenia nie powinien mieć dostępu do sekretów, a agent mający dostęp do sekretów nie powinien mieć kanału do wysyłania danych na zewnątrz.
Ogranicz możliwości agenta po otrzymaniu niezaufanych danych
Badania nad wzorcami projektowymi zapewniającymi bezpieczeństwo agentów wskazują jedną zasadę: gdy agent przetworzy niezaufane dane wejściowe, nie mogą one wywoływać działań o istotnych konsekwencjach. Wśród wzorców są action-selector, plan-then-execute, dual LLM i minimalizacja kontekstu. Wybierz jeden wzorzec dla każdego workflow, na przykład ustal plan, zanim agent odczyta jakiekolwiek niezaufane dane.
Śledź przepływ danych za pomocą CaMeL
CaMeL dzieli agenta na dwie części: uprzywilejowany planner tworzy kod na podstawie prośby użytkownika, a odizolowany model obsługuje niezaufane dane. Wartości pochodzące z odizolowanej części otrzymują tagi uprawnień, a zasady sprawdzają te tagi przed uruchomieniem dowolnego narzędzia. W artykule system rozwiązał 77% zadań AgentDojo z formalnie gwarantowanym bezpieczeństwem, podczas gdy agent bez zabezpieczeń rozwiązał 84%.
Stosuj zasadę minimalnych uprawnień
Domyślnie przyznawaj agentom dostęp tylko do odczytu, ograniczony do konkretnego projektu. Nigdy nie używaj klucza administratora ani service_role, który w Supabase omija zabezpieczenia na poziomie wierszy. Ograniczaj tokeny CI i repozytoriów do pojedynczego zadania, do którego służą. Źródłem incydentu z Amazon Q Developer był token GitHub o zbyt szerokich uprawnieniach w CodeBuild.
Wymagaj akceptacji działań o istotnych konsekwencjach
Wymagaj od człowieka potwierdzenia wywołań narzędzi, które zapisują, usuwają, wysyłają lub wydają środki. Jeśli nikt nie odpowie, domyślnie odmawiaj. Supabase zaleca ręczne zatwierdzanie wywołań narzędzi MCP. W OpenClaw ustaw tools.exec.ask na always, a askFallback pozostaw jako deny. Pokaż pełne argumenty, aby osoba zatwierdzająca widziała, co zostanie faktycznie uruchomione.
Uruchamiaj kod i narzędzia w sandboxie
Uruchamiaj polecenia powłoki i wygenerowany kod w kontenerze lub maszynie wirtualnej bez poświadczeń, z dostępem wyłącznie do workspace. OpenClaw domyślnie wyłącza sandboxing, a na hostach gateway ustawia tools.exec.security na full. Włącz więc sandboxing, ustaw zabezpieczenia exec na deny lub allowlist, ustaw fs.workspaceOnly na true i pozostaw tryb podwyższonych uprawnień wyłączony. Sprawdź wynik poleceniem openclaw sandbox explain.
Ogranicz ruch wychodzący
Domyślnie blokuj ruch wychodzący agentów i serwerów MCP, a następnie zezwalaj wyłącznie na hosty potrzebne każdemu z nich. Nigdy nie zatwierdzaj automatycznie żądań do hostów współdzielonych przez wielu użytkowników, na których każdy może coś opublikować — w ten sposób CVE-2026-54316 zmieniło huggingface.co w kanał eksfiltracji danych. Serwer poczty powinien mieć dostęp do swojego API pocztowego i żadnych innych hostów, jak pokazał przypadek postmark-mcp.
Nie wystawiaj płaszczyzn kontroli do internetu
Powiąż gatewaye agentów, dashboardy i proxy debugowania z loopback i wymagaj tokenu o długości co najmniej 24 znaków, na przykład wygenerowanego poleceniem openssl rand -hex 32. Uzyskuj do nich zdalny dostęp przez tunel SSH lub Tailscale Serve, a Tailscale Funnel stosuj wyłącznie z uwierzytelnianiem hasłem. Regularnie uruchamiaj openclaw security audit --deep.
Weryfikuj odbiorcę tokenu MCP
Specyfikacja autoryzacji MCP wymaga, by serwer odrzucał tokeny dostępu, które nie zostały dla niego wydane, i zabrania przekazywania tokenu klienta do nadrzędnego API. Klienci wysyłają wskaźniki zasobu RFC 8707, dzięki czemu każdy token jest powiązany z jednym serwerem. Serwer proxy musi uzyskać zgodę każdego klienta, inaczej może stać się podatny na problem confused deputy.
Izoluj sesje i dzierżawców MCP
Utwórz osobną instancję serwera i transportu dla każdej sesji, zamiast współdzielić jedną między klientami. Powiąż każdą sesję i każde zadanie z uwierzytelnioną tożsamością, która je utworzyła, i sprawdzaj to powiązanie przy każdym żądaniu. Oba ostrzeżenia dotyczące MCP SDK z 2026 r. wynikały ze współdzielonego lub niepowiązanego stanu.
Weryfikuj skills, pluginy i serwery MCP
Przypinaj dokładne wersje, przed każdą aktualizacją przeglądaj diff i sprawdzaj wyniki skanerów, takich jak VirusTotal, oraz status audytu bezpieczeństwa ClawHub. Zapisuj hash opisów narzędzi po zatwierdzeniu serwera i wysyłaj alerty, gdy opisy się zmienią — pozwala to wykrywać rug pull. OpenClaw nie blokuje instalacji wbudowanymi mechanizmami, więc samodzielnie ustaw security.installPolicy.
Kontroluj, kto może pisać do agenta
Ogranicz dostęp przez DM do parowania lub listy dozwolonych. Wymagaj wzmianki, zanim agent zareaguje na czacie grupowym, i ustaw session.dmScope na per-channel-peer, aby nadawcy nigdy nie współdzielili kontekstu. Każda osoba, która może napisać do agenta, może próbować wydawać mu instrukcje, więc lista nadawców jest częścią powierzchni ataku.
Nie udostępniaj sekretów w niezaufanych uruchomieniach CI
Nie uruchamiaj agenta z sekretami repozytorium w workflow, które osoby z zewnątrz mogą wywołać pull requestem, issue lub komentarzem. Traktuj tytuły, opisy i komentarze pochodzące z tych zdarzeń jako wrogie dane. Jeśli jakiś krok rzeczywiście wymaga sekretów, uruchamiaj go dopiero po zatwierdzeniu przebiegu przez maintenera.
Traktuj wynik modelu jako niezaufany
Koduj lub oczyszczaj wynik modelu przed wyświetleniem i nigdy nie przekazuj go bez sprawdzenia do powłoki, zapytania SQL ani przeglądarki. Zablokuj automatyczne wczytywanie obrazów Markdown i linków do zewnętrznych domen oraz ustaw rygorystyczną Content Security Policy. EchoLeak wyprowadzał dane za pomocą URL-i, które ładowały się automatycznie.
Weryfikuj podpisy agentów, a potem autoryzuj
Aby ustalić, który agent łączy się z Twoją witryną lub API, zweryfikuj jego podpis Web Bot Auth przy użyciu kluczy publikowanych przez operatora w /.well-known/http-message-signatures-directory. Agent ChatGPT podpisuje się jako Signature-Agent https://chatgpt.com. Prawidłowy podpis wskazuje, kto obsługuje agenta, ale nie określa, który użytkownik wysłał żądanie ani do czego jest uprawniony. Dlatego każde żądanie autoryzuj osobno.
Pytania o bezpieczeństwo agentów
Czym jest prompt injection w agentach AI?
Prompt injection to tekst, który model traktuje jak instrukcje, mimo że został przekazany jako dane, na przykład na stronie internetowej, w e-mailu lub opisie narzędzia. W agencie takie instrukcje mogą wywołać narzędzia działające z użyciem Twoich poświadczeń. OWASP klasyfikuje to jako LLM01:2026, a Agent Goal Hijack (ASI01) obejmuje tę formę ataku w systemach agentowych.
Czym jest zabójcza triada agentów AI?
To określenie Simona Willisona opisujące agenta, który ma dostęp do prywatnych danych, przetwarza niezaufane treści i może komunikować się ze światem zewnętrznym. Gdy występują wszystkie trzy elementy, prompt injection może odczytać Twoje dane i je wysłać. Wyciek tokenów Supabase MCP z 2025 roku to podręcznikowy przykład.
Jak zabezpieczyć serwer MCP?
Odrzucaj tokeny dostępu, które nie zostały wydane dla Twojego serwera, i nigdy nie przekazuj tokenu klienta do nadrzędnego API. Twórz osobną instancję serwera i transportu dla każdej sesji, a sesje i zadania przypisuj do uwierzytelnionego użytkownika. Używaj TypeScript SDK w wersji 1.26.0 lub nowszej oraz Python SDK w wersji 1.27.2 lub nowszej — te wersje usuwają błąd ujawniania odpowiedzi między klientami i przejmowania sesji.
Czy lepszy prompt systemowy może zatrzymać prompt injection?
Nie polegaj na tym. Badania nad wzorcami projektowymi dla agentów wskazują, że po przetworzeniu niezaufanych danych wejściowych agent musi zostać ograniczony tak, aby te dane nie mogły wywołać działań o istotnych konsekwencjach. CaMeL, który egzekwuje to za pomocą śledzenia uprawnień, rozwiązał 77% zadań AgentDojo z możliwym do udowodnienia bezpieczeństwem, w porównaniu z 84% w przypadku agenta bez zabezpieczeń.
Czym różnią się OWASP LLM Top 10 i Agentic Top 10?
OWASP Top 10 for LLM Applications, którego edycja 2026 ukazała się 4 August 2026, obejmuje zagrożenia dotyczące dowolnych aplikacji opartych na modelu językowym. OWASP Top 10 for Agentic Applications, opublikowany 9 December 2025, opisuje zagrożenia wynikające z tego, że model planuje, używa narzędzi, zachowuje pamięć i komunikuje się z innymi agentami. Większość twórców agentów powinna zapoznać się z oboma zestawieniami.
Czy wystawienie bramy OpenClaw do internetu jest bezpieczne?
Nie. Pozostaw gateway.bind z domyślną wartością loopback, a gdy potrzebujesz zdalnego dostępu, użyj tunelu SSH lub Tailscale Serve. OpenA2A odnotowało 192,492 wystawionych bram 1 September 2026, a CVE-2026-25253 pokazało, że nawet instalacje dostępne wyłącznie przez loopback wymagają szybkiego instalowania poprawek.