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