Podstawy podatności LLM 101
Większość luk w zabezpieczeniach LLM nie jest błyskotliwa. Wynikają one z dwóch nudnych faktów dotyczących działania modeli. Gdy je zrozumiesz, przerażająca lista ataków stanie się oczywista.
Fakt 1: Model nie widzi różnicy między Twoimi instrukcjami a tekstem użytkownika. Widzi jeden strumień danych. Nie potrafi niezawodnie określić, której części należy ufać.
Fakt 2: Narzędzia zmieniają zasady gry. Gdy dajesz modelowi dostęp do poczty e-mail, wyszukiwarki lub baz danych, tworzysz nowe miejsca, do których może przeniknąć niezweryfikowany tekst. Zamieniasz również model, który potrafi tylko rozmawiać, w taki, który potrafi działać.
Przestań próbować wygrywać argumenty z modelem. Zacznij zmieniać to, co modelowi wolno robić.
Kluczowe podatności:
- Bezpośrednia iniekcja (Direct Injection): Użytkownik wpisuje „ignore previous instructions”, aby nadpisać Twoje reguły. Prompt systemowy nie stanowi bariery bezpieczeństwa.
- Jailbreaki: Uderzają w szkolenie w zakresie bezpieczeństwa, a nie w Twoją aplikację. Atakujący wykorzystują odgrywanie ról lub fikcję, aby ominąć filtry.
- Wyciek promptu systemowego (System Prompt Leakage): Atakujący oszukują model, aby wypisał własne instrukcje. Nigdy nie umieszczaj kluczy API ani sekretów w prompcie.
- Pośrednia iniekcja (Indirect Injection): Prawdziwe niebezpieczeństwo. Złośliwe instrukcje ukryte są w e-mailach, plikach PDF lub na stronach internetowych. Model odczytuje je jako polecenia.
- Zatruwanie RAG (RAG Poisoning): Atakujący dodają błędne dane do Twojej bazy wiedzy. Model pobiera te treści i wykonuje ukryte polecenia.
- Ataki multimodalne: Instrukcje są ukryte wewnątrz obrazów lub plików audio. Filtry tekstowe nie mogą ich wykryć.
- Nadużycie narzędzi (Tool Abuse): Skuteczna iniekcja prowadzi do realnych działań, takich jak wysyłanie e-maili czy uruchamianie kodu. To problem „zagubionego delegata” (confused deputy).
- Zabójcza trifekta: Najniebezpieczniejszy stan. Agent ma dostęp do prywatnych danych, widzi niezweryfikowane treści i ma sposób na komunikację ze światem zewnętrznym.
- Zatruwanie pamięci (Memory Poisoning): Atakujący zapisują błędne instrukcje w pamięci długotrwałej modelu, aby wywołać ataki w przyszłych sesjach.
- Rozprzestrzenianie wieloagentowe (Multi-Agent Spread): Wynik jednego agenta staje się instrukcją dla drugiego. Atak może przeskakiwać przez cały Twój system.
- Zatruwanie MCP (MCP Poisoning): Złośliwe opisy narzędzi mogą oszukać model, skłaniając go do przekazania poświadczeń.
Rozwiązaniem nie jest lepszy model. Jest nim lepsza architektura.
- Stosuj zasadę najmniejszych uprawnień.
- Wprowadź nadzór człowieka (human-in-the-loop) przy krytycznych działaniach.
- Nigdy nie pozwól, aby jedna ścieżka jednocześnie zawierała prywatne dane, niezweryfikowane dane wejściowe i drogę wyjścia.
Buduj swoich agentów tak, jakby byli już przejęci. Ograniczaj to, co mogą robić, a nie tylko to, co mogą mówić.
Źródło: https://dev.to/weboko/llm-vulnerabilities-101-3pcj
Opcjonalna społeczność edukacyjna: https://t.me/GyaanSetuAi