Cyber Security Academy · Lekcja

Zabezpieczanie agentów AI i użycia narzędzi

Ograniczanie autonomicznych działań agentów

Lekcja 3 z 413 kroki

Zabezpieczanie agentów AI i użycia narzędzi to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Dlaczego agenty są ryzykowne

Agent AI to LLM połączony z narzędziami i pętlą działania: analizuje, wywołuje funkcje (wyszukiwanie, wykonywanie kodu, API, dostęp do plików), obserwuje wyniki i powtarza te czynności aż do osiągnięcia celu. Ta autonomia jest potężna i niebezpieczna.

Kluczowa zmiana z perspektywy bezpieczeństwa jest następująca: w przypadku zwykłego chatbota błędne dane wyjściowe są tylko tekstem. W przypadku agenta błędna decyzja staje się rzeczywistym działaniem: usunięciem rekordu, wysłaniem wiadomości e-mail, wydaniem pieniędzy lub ujawnieniem sekretu.

Ponieważ niezaufane treści mogą trafić do pętli rozumowania, każde narzędzie, do którego agent ma dostęp, stanowi powierzchnię ataku dla wstrzykiwania promptów.

Minimalne uprawnienia dla narzędzi

Najważniejszym środkiem ochrony jest zasada minimalnych uprawnień. Każdemu narzędziu należy przyznać najwęższy zakres, który nadal pozwala wykonać zadanie.

  • Preferować odczyt zamiast odczytu i zapisu; ograniczać odczyty do danych bieżącego użytkownika.
  • Dzielić narzędzia o szerokim zakresie na węższe narzędzia (narzędzie get_invoice, a nie narzędzie wykonujące dowolne zapytania SQL).
  • Powiązać dane uwierzytelniające narzędzia z tożsamością użytkownika końcowego, a nie ze współdzielonym kontem usługi, aby agent dziedziczył wyłącznie uprawnienia użytkownika.
# Scope queries to the authenticated user, never raw SQL
def get_invoice(invoice_id: str, *, user_id: str):
    return db.query(
        "SELECT * FROM invoices WHERE id=%s AND owner=%s",
        (invoice_id, user_id),
    )

Punkty kontroli z udziałem człowieka

W przypadku działań o dużym wpływie lub nieodwracalnych przed ich wykonaniem należy wymagać wyraźnego zatwierdzenia przez człowieka. Agent przedstawia propozycję, a osoba ją zatwierdza.

  • Wysyłanie zewnętrznych wiadomości e-mail lub innych komunikatów.
  • Transakcje finansowe lub zakupy.
  • Usuwanie lub nadpisywanie danych.
  • Wdrażanie kodu lub zmiana infrastruktury.

Należy pokazać użytkownikowi dokładne działanie i argumenty opisane prostym językiem, aby mógł wykryć wstrzyknięte lub zmyślone polecenie, zanim zostanie ono wykonane.

Uruchamianie kodu i poleceń w sandboxie

Agenty uruchamiające kod lub polecenia powłoki muszą robić to w izolowanym sandboxie, nigdy na hoście.

  • Używać efemerycznych kontenerów lub mikroVM bez montowania zasobów hosta.
  • Domyślnie wyłączać dostęp do sieci; zezwalać wyłącznie na połączenia wychodzące znajdujące się na jawnej liście dozwolonych.
  • Ustawiać limity procesora, pamięci i czasu, aby ograniczyć skutki wymykającego się spod kontroli lub złośliwego kodu.
  • Uruchamiać jako użytkownik niebędący rootem i pozbawiony uprawnień, z głównym systemem plików tylko do odczytu.
docker run --rm \
  --network none \
  --read-only \
  --user 1000:1000 \
  --memory 256m --cpus 0.5 \
  --pids-limit 64 \
  agent-sandbox:latest python /work/task.py

Przerwanie śmiercionośnej triady

Agent staje się narzędziem eksfiltracji danych, gdy jednocześnie ma dostęp do prywatnych danych, jest narażony na niezaufane treści i może komunikować się z zewnętrznymi odbiorcami. To śmiercionośna triada.

Należy projektować system tak, aby w każdym danym procesie usunąć co najmniej jeden z tych elementów:

  • Izolować sesje, które mają kontakt z niezaufanymi treściami, od sesji przechowujących poufne dane.
  • Ograniczać wychodzący ruch sieciowy do ścisłej listy dozwolonych.
  • Wymagać zatwierdzenia przed każdym wysłaniem danych na zewnątrz, gdy w kontekście znajdują się prywatne dane.

Niezaufane wyniki działania narzędzi

Wyniki działania narzędzi ponownie trafiają do kontekstu modelu, dlatego wyniki działania narzędzi są niezaufanymi danymi wejściowymi. Strona internetowa, pobrany plik lub odpowiedź API mogą zawierać wstrzyknięte instrukcje skierowane do kolejnego kroku rozumowania.

  • Umieszczać wyniki działania narzędzi w wyraźnych ogranicznikach i oznaczać je jako dane, a nie polecenia.
  • Usuwać lub neutralizować ukryty tekst (komentarze HTML, znaki o zerowej szerokości, CSS umieszczony poza ekranem).
  • Ograniczać rozmiar wstrzykiwanej treści, aby zmniejszyć miejsce dostępne na ładunek.

Nigdy nie pozwalać, aby surowe wyniki działania narzędzi po cichu dyktowały kolejne wywołanie narzędzia bez kontroli zgodności z zasadami.

Listy dozwolonych działań i egzekwowanie zasad

Nie należy polegać na tym, że model sam będzie się kontrolował. Należy egzekwować warstwę zasad w kodzie między agentem a każdym narzędziem.

  • Weryfikować każde wywołanie narzędzia względem listy dozwolonych działań i schematów argumentów.
  • Odrzucać wywołania wykraczające poza zakres bieżącego zadania.
  • Stosować limity szybkości i budżety dla każdego narzędzia i użytkownika.

Ta deterministyczna bramka działa niezależnie od decyzji modelu, więc nawet udane wstrzyknięcie napotyka twardą barierę.

def authorize(call):
    if call.name not in ALLOWED_TOOLS:
        raise PolicyError("tool not allowed")
    if not SCHEMA[call.name].validate(call.args):
        raise PolicyError("bad arguments")
    if exceeds_budget(call):
        raise PolicyError("rate limit")

Ograniczanie pętli

Autonomiczne pętle mogą wymknąć się spod kontroli: nieskończone ponawianie prób, rekurencyjne wywołania narzędzi i niekontrolowane wydatki (denial-of-wallet). Należy je ograniczać.

  • Ograniczać maksymalną liczbę kroków i łączną liczbę tokenów na zadanie.
  • Ustawiać limity czasu rzeczywistego dla całego uruchomienia.
  • Śledzić skumulowany koszt i przerywać działanie po przekroczeniu progu.
  • Wykrywać pętle (powtarzające się identyczne wywołania) i je przerywać.

Ograniczenia te osłabiają również ataki DoS i ataki polegające na niekontrolowanym zużyciu (OWASP LLM10).

Ryzyka związane z pamięcią i wieloma agentami

Trwała pamięć agenta i systemy wielu agentów tworzą nowe powierzchnie ataku:

  • Zatruwanie pamięci: wstrzyknięcie zapisane w pamięci długoterminowej podczas jednej sesji wpływa na późniejsze sesje. Weryfikować i ograniczać zakres tego, co jest utrwalane.
  • Zaufanie między agentami: jeden przejęty agent może wstrzyknąć dane do innego. Traktować komunikaty między agentami jako niezaufane.
  • Problem zdezorientowanego zastępcy: uprzywilejowany agent działa na żądanie agenta o niższym poziomie zaufania. Przenosić autoryzację pierwotnego podmiotu przez cały łańcuch.

Rejestrowanie i obserwowalność

Nie można zabezpieczyć tego, czego nie można zobaczyć. Należy rejestrować pełny ślad działania agenta:

  • Rejestrować każde wywołanie narzędzia, jego argumenty i wynik.
  • Zapisywać kontekst rozumowania oraz wszelkie pobrane treści na potrzeby analizy śledczej.
  • Generować alerty dotyczące anomalii: nieoczekiwanego ruchu wychodzącego, użycia uprawnień, powtarzających się odmów i nagłych wzrostów kosztów.
  • Utrzymywać niezmienny dziennik audytowy powiązany z użytkownikiem wykonującym działanie.

Dobra telemetria zmienia ciche przejęcie systemu w wykrywalny i możliwy do zbadania incydent.

Warstwowa architektura agenta

Po połączeniu wszystkich elementów defensywny stos agenta wygląda następująco:

  • Tożsamość: działania są wykonywane jako użytkownik końcowy, w zakresach minimalnych uprawnień.
  • Bramka zasad: deterministyczna lista dozwolonych działań i walidacja schematu przy każdym wywołaniu narzędzia.
  • Sandbox: izolowane wykonywanie z ograniczonym dostępem do sieci i zasobów.
  • Punkty kontroli z udziałem człowieka: zatwierdzenie działań nieodwracalnych.
  • Limity: budżety kroków, tokenów, czasu i kosztów.
  • Obserwowalność: pełne rejestrowanie audytowe i alerty dotyczące anomalii.

Zakładać, że model może zostać przejęty, i zadbać o to, aby nawet w takim przypadku zakres skutków pozostał niewielki.

Szybki sprawdzian

Proszę sprawdzić swoją znajomość mechanizmów kontroli bezpieczeństwa agentów.

Podsumowanie

Zabezpieczanie agentów AI i korzystania z narzędzi:

  • Agenci przekształcają nieprawidłowe wyniki w rzeczywiste działania, dlatego każde narzędzie stanowi potencjalny wektor ataku.
  • Należy stosować zasadę najmniejszych uprawnień dla każdego narzędzia i powiązać dane uwierzytelniające z użytkownikiem końcowym.
  • Należy wymagać zatwierdzenia przez człowieka w przypadku nieodwracalnych działań oraz wykonywać kod w sandboxie.
  • Należy przerwać śmiercionośną triadę i traktować wyniki działania narzędzi jako niezaufane dane wejściowe.
  • Należy wymuszać deterministyczną bramkę zasad (allowlisty, walidacja schematu) w kodzie, a nie w promptach.
  • Należy ograniczać pętlę (liczbę kroków, tokenów, czas i koszt) oraz rejestrować każde wywołanie narzędzia na potrzeby wykrywania.
Bezpłatny start

Ucz się Cyber Security Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
76
Lekcje
303

Często zadawane pytania

Czy lekcja „Zabezpieczanie agentów AI i użycia narzędzi” jest bezpłatna?

Tak — pełny tekst „Zabezpieczanie agentów AI i użycia narzędzi” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Zabezpieczanie agentów AI i użycia narzędzi”?

Ograniczanie autonomicznych działań agentów Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?

Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Zabezpieczanie agentów AI i użycia narzędzi”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?

Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Prompt injection i jailbreaki
  2. OWASP LLM Top 10
  3. Zabezpieczanie agentów AI i użycia narzędzi
  4. Ryzyko związane z modelem, danymi i łańcuchem dostaw
← Powrót do Cyber Security Academy