OWASP LLM Top 10
Najważniejsze zagrożenia dla aplikacji LLM
OWASP LLM Top 10 to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 2 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 Top 10 dla LLM?
OWASP Top 10 for Large Language Model Applications to tworzona przez społeczność lista najpoważniejszych zagrożeń bezpieczeństwa specyficznych dla systemów opartych na LLM. Nawiązuje do dobrze znanej listy OWASP Web Top 10, ale uwzględnia zagrożenia pomijane przez klasyczne zestawienia AppSec.
Lista powstała, ponieważ aplikacje LLM wprowadzają nowe obszary ataku: sterowanie przepływem za pomocą języka naturalnego, niedeterministyczne wyniki, łańcuchy dostaw modeli oraz autonomicznych agentów. Zapewnia zespołom bezpieczeństwa wspólny słownik i listę kontrolną do modelowania zagrożeń.
Poniższe kody wykorzystują numerację LLM01-LLM10 z wydania z 2025 roku.
LLM01 Wstrzykiwanie promptów
LLM01: Wstrzykiwanie promptów niezmiennie zajmuje pierwsze miejsce na liście zagrożeń. Tekst kontrolowany przez atakującego nadpisuje instrukcje dewelopera, ponieważ model nie potrafi odróżnić zaufanych instrukcji od niezaufanych danych.
- Bezpośrednie: użytkownik wpisuje instrukcje nadpisujące.
- Pośrednie: instrukcje są ukryte na pobranych stronach internetowych, w plikach lub wynikach działania narzędzi.
Środki zaradcze: egzekwować zasadę minimalnych uprawnień dla narzędzi, traktować wszystkie pobrane treści jako dane, dodawać punkty kontroli z udziałem człowieka w przypadku wrażliwych działań oraz przerywać ścieżkę eksfiltracji danych.
LLM02 Ujawnianie poufnych informacji
LLM02: Ujawnianie poufnych informacji obejmuje ujawnianie przez model danych, których nie powinien ujawniać: danych osobowych (PII), sekretów, zastrzeżonych danych treningowych lub informacji innego tenanta.
Do wycieków dochodzi za pośrednictwem zapamiętanych danych treningowych, wstrzykiwania zbyt szerokiego kontekstu lub promptów systemowych zawierających dane uwierzytelniające.
- Oczyszczać i ograniczać ilość danych umieszczanych w kontekście.
- Nigdy nie umieszczać aktywnych sekretów w promptach; używać tokenów o ograniczonym zakresie i krótkim czasie życia, przekazywanych poza promptem.
- Stosować filtrowanie danych wyjściowych oraz kontrole zapobiegania utracie danych przed zwróceniem odpowiedzi.
LLM03 Łańcuch dostaw
LLM03: Łańcuch dostaw obejmuje zagrożenia pochodzące od modeli, zbiorów danych, wtyczek i bibliotek innych firm. Zatruty model bazowy, dostrajanie z backdoorem pobrane z repozytorium modeli lub złośliwa zależność Pythona mogą zagrozić całej aplikacji.
- Weryfikować pochodzenie modeli i sumy kontrolne.
- Przypinać wersje i weryfikować licencje.
- Skanować pliki modeli w formacie pickle (
picklemoże wykonywać kod podczas wczytywania) i preferować bezpieczne formaty, takie jaksafetensors.
# Pickle deserialization can run arbitrary code on load.
# Prefer safetensors for untrusted model weights:
from safetensors.torch import load_file
state = load_file("model.safetensors")LLM04 Zatruwanie danych i modelu
LLM04: Zatruwanie danych i modelu wymierzone jest w potok trenowania lub dostrajania. Atakujący, który może wpływać na dane treningowe, może umieścić backdoory (ukryte wyzwalacze), stronniczo kształtować dane wyjściowe lub obniżać jakość.
Potoki RAG, które przyjmują dokumenty przesyłane przez użytkowników, pozostają aktywną powierzchnią zatruwania nawet po wdrożeniu.
- Weryfikować i podpisywać źródła danych treningowych.
- Stosować wykrywanie anomalii w zbiorach danych.
- Izolować i weryfikować treści dodawane przez użytkowników przed ich zindeksowaniem.
LLM05 Niewłaściwa obsługa danych wyjściowych
LLM05: Niewłaściwa obsługa danych wyjściowych występuje, gdy komponenty dalszego przetwarzania ufają danym wyjściowym modelu bez ich weryfikacji. Ponieważ na dane wyjściowe można wpływać za pomocą wstrzykiwania, przekazanie ich bez weryfikacji do powłoki, zapytania SQL, przeglądarki lub eval stanowi bezpośrednią drogę do XSS, SSRF lub RCE.
Zasada: traktować dane wyjściowe LLM dokładnie tak jak niezaufane dane wejściowe użytkownika. Przed przekazaniem ich do dowolnego interpretera kodować, weryfikować i uruchamiać w sandboxie.
# DANGEROUS: model output flows straight into a shell
os.system(model_output) # never do this
# SAFER: validate against an allowlist, no shell
if action in ALLOWED_ACTIONS:
run_safe(action, args)LLM06 Nadmierna autonomia
LLM06: Nadmierna autonomia oznacza szkody wynikające z przyznania modelowi zbyt dużej funkcjonalności, zbyt wielu uprawnień lub zbyt dużej autonomii. Gdy model może wywoływać narzędzia, wstrzyknięcie staje się działaniem, a nie tylko tekstem.
- Nadmierna funkcjonalność: narzędzia, których aplikacja faktycznie nie potrzebuje.
- Nadmierne uprawnienia: narzędzie z uprawnieniami zapisu i usuwania, gdy wystarczą uprawnienia odczytu.
- Nadmierna autonomia: działania o dużym wpływie, niewymagające zatwierdzenia przez człowieka.
Stosować zasadę minimalnych uprawnień dla każdego narzędzia i wymagać potwierdzenia w przypadku operacji nieodwracalnych.
LLM07 Wyciek promptu systemowego
LLM07: Wyciek promptu systemowego wskazuje, że prompt systemowy nie jest bezpiecznym magazynem sekretów. Atakujący często mogą go wyodrębnić, a czasami zawiera on dane uwierzytelniające, ukrytą logikę biznesową lub reguły filtrowania ułatwiające dalsze ataki.
- Zakładać, że prompt systemowy można odzyskać; nigdy nie umieszczać w nim sekretów ani kluczy.
- Egzekwować autoryzację w backendzie, zamiast liczyć na to, że reguła w prompcie będzie przestrzegana.
- Traktować każdą kontrolę bezpieczeństwa jako nieskuteczną, jeśli istnieje wyłącznie w treści promptu.
LLM08, LLM09, LLM10
Pozostałe pozycje:
- LLM08 Słabości wektorów i embeddingów: zagrożenia związane z embeddingami RAG, takie jak wyciek danych między tenantami, odwracanie embeddingów i indeksowanie zatrutych dokumentów. Egzekwować kontrolę dostępu na etapie pobierania.
- LLM09 Dezinformacja: halucynacje przedstawiane z dużą pewnością i nadmierne poleganie na modelu. W przypadku danych wyjściowych o dużym znaczeniu stosować ugruntowanie w źródłach, cytowania i weryfikację przez człowieka.
- LLM10 Niekontrolowane zużycie: ataki typu denial-of-wallet i DoS wynikające z kosztownych lub wymykających się spod kontroli zapytań. Stosować limity szybkości, budżety tokenów, limity czasu i alerty dotyczące kosztów.
Wykorzystanie listy w modelowaniu zagrożeń
Lista Top 10 jest najbardziej użyteczna jako uporządkowana lista kontrolna podczas przeglądu projektu:
- Mapować każdy komponent (dane wejściowe, pobieranie danych, narzędzia, dane wyjściowe) na odpowiednie zagrożenia LLM.
- Dla każdego zagrożenia wskazać konkretny środek kontroli i osobę odpowiedzialną.
- Opisywać przypadki nadużyć i przekształcać je w testy automatyczne.
Łączyć ją z istniejącymi frameworkami, takimi jak standardowa lista OWASP Top 10, MITRE ATLAS dotyczący taktyk specyficznych dla ML oraz NIST AI Risk Management Framework na potrzeby zarządzania.
Od listy kontrolnej do obrony warstwowej
Żaden pojedynczy środek kontroli nie obejmuje wszystkich tych zagrożeń. Należy stosować warstwy:
- Warstwa wejściowa: weryfikacja, klasyfikacja, limity szybkości.
- Warstwa modelu: narzędzia z minimalnymi uprawnieniami, ograniczony zakres kontekstu, modele ochronne.
- Warstwa wyjściowa: weryfikacja, kodowanie, DLP, zatwierdzenie przez człowieka.
- Warstwa platformy: rejestrowanie, monitorowanie, weryfikacja łańcucha dostaw, kontrola kosztów.
Zakładać, że dowolna warstwa może zawieść, i projektować system tak, aby pojedyncza awaria nie przerodziła się w naruszenie bezpieczeństwa.
Szybki test
Sprawdź swoją znajomość kategorii OWASP LLM.
Podsumowanie
OWASP LLM Top 10 w skrócie:
- LLM01 Wstrzykiwanie promptów, LLM02 Ujawnianie poufnych informacji, LLM03 Łańcuch dostaw, LLM04 Zatruwanie danych i modelu, LLM05 Niewłaściwa obsługa danych wyjściowych.
- LLM06 Nadmierna autonomia, LLM07 Wyciek promptu systemowego, LLM08 Słabości wektorów i embeddingów, LLM09 Dezinformacja, LLM10 Niekontrolowane zużycie.
- Traktować dane wyjściowe modelu i prompt systemowy jako niezaufane i niebędące sekretami.
- Używać tej listy jako listy kontrolnej do modelowania zagrożeń, łączyć ją z MITRE ATLAS i NIST AI RMF oraz stosować obronę warstwową w warstwach wejściowej, modelu, wyjściowej i platformy.
Często zadawane pytania
Czy lekcja „OWASP LLM Top 10” jest bezpłatna?
Tak — pełny tekst „OWASP LLM Top 10” 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 „OWASP LLM Top 10”?
Najważniejsze zagrożenia dla aplikacji LLM Ć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 2 z 4.
Ile czasu zajmuje lekcja „OWASP LLM Top 10”?
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
- Prompt injection i jailbreaki
- OWASP LLM Top 10
- Zabezpieczanie agentów AI i użycia narzędzi
- Ryzyko związane z modelem, danymi i łańcuchem dostaw