Connect with us

Atak Prompt Injection, Którego Nie Można Zapobiec: Pobożne Życzenie czy Rzeczywisty Problem?

Liderzy opinii

Atak Prompt Injection, Którego Nie Można Zapobiec: Pobożne Życzenie czy Rzeczywisty Problem?

mm
A digital 3D render of a dark server room with a computer monitor displaying a

W tym artykule chciałbym zaangażować czytelnika w eksperyment myślowy. Zamierzam argumentować, że w niedalekiej przyszłości pewien typ ataku prompt injection będzie skutecznie nie do uniknięcia. Mój wywód będzie bardziej spekulatywny niż konkretny, więc nie próbuję nikogo do niczego przekonać. Zamiast tego zapraszam do wspólnego rozważenia tych myśli. Zanim zacznę, jak zrobiłby to każdy przekonujący autor, chcę porozmawiać o szachach i silnikach szachowych.

Nadludzkie silniki szachowe i twierdzenie o ludzkim doświadczeniu

Jednym z przyjemniejszych elementów szachów, którego brakuje w innych dyscyplinach, jest możliwość obiektywnego pomiaru jakości lub siły gracza. Używany do tego system rankingowy ELO ma swoje wady, ale zapewnia bardzo dobre przybliżenie, które sprawdza się w czasie. Ranking 2700 lub wyższy jest powszechnie uznawany za światowej klasy (top 30 na świecie). Najlepszy gracz na świecie ma nieco poniżej 2850. Żaden człowiek nigdy nie osiągnął rankingu 2900.

W połowie lat 90. XX wieku zobaczyliśmy pierwszy silnik AI (Deep Blue), który osiągnął poziom światowej klasy. Praktyczną implikacją tego kamienia milowego było szerokie przyjęcie silników przez graczy na wszystkich poziomach do ćwiczeń i analizy. W rzeczywistości użycie silników stało się niezbędne dla najlepszych graczy świata. Jednak przez kilka generacji tych silników światowej klasy przeglądanie ich zalecanych ruchów (czyli wyników) było koniecznością. Stworzono nawet specjalny format zwany „szachami zaawansowanymi”, w którym ludzie rywalizowali z silnikiem u boku, a kombinacja człowiek + maszyna była uważana za lepszą niż sama maszyna.

Zajęło to około 20 lat i pewien kluczowy postęp w dziedzinie uczenia głębokiego i uczenia ze wzmocnieniem, aby silniki szachowe osiągnęły poziom nadludzki (około 3200 ELO). Ale gdy ta sfera została przekroczona około 2017 roku, stało się coś bardzo zaskakującego. A właściwie dwie rzeczy. Pierwsza była całkowicie oczekiwana; silniki stały się de facto źródłem „prawdy absolutnej” w 99% wszystkich pozycji. W praktyce oznaczało to, że weszliśmy w „erę ślepego zaufania” do silnika. Obecnie jest praktycznie niemożliwe, aby człowiek zaproponował ruch znacząco lepszy niż silnik. Choć „szachy zaawansowane” były rozrywkowe, teraz są bezcelowym ćwiczeniem; ludzie prawie nic by nie wnieśli do gry. Ale druga rzecz była szokująca dla większości szachistów. Te nadludzkie, neuronowe (tj. oparte na głębokich sieciach neuronowych) silniki czasami grały w stylu, który najlepiej opisać jako „romantyczny”. Innymi słowy, wykonywały ruchy, których wartość można było docenić dopiero wiele, wiele ruchów później, daleko poza zasięgiem obliczeń jakiegokolwiek człowieka czy silnika światowej klasy. Bardzo to przypominało wrażenie, jakby silniki rozwinęły „przeczucie” lub „intuicję” dla pewnych pozycji. Z tą różnicą, że tej intuicji człowiek nigdy nie mógłby pojąć ani naśladować.

Inaczej mówiąc, nadludzki silnik neuronowy może wykonywać ruchy, które są poza horyzontem poznawczym człowieka. To jest kluczowy punkt; problemem nie jest wyjaśnialność. Raczej człowiek po prostu nie jest w stanie zrozumieć, dlaczego silnik zaleca dany ruch, bez rozegrania pozycji i zaobserwowania wyniku wiele ruchów później, tj. bez prześledzenia całej trajektorii możliwych sekwencji gry. W rezultacie mamy nieprzekraczalną przepaść w możliwościach. Obiektywnie optymalne jest przyjmowanie wyników silnika bez przeglądu. Moje twierdzenie mogę podsumować następująco:

Szachy są dowodem na istnienie (existence-proof), że nadludzka AI skutecznie działałaby autonomicznie w niektórych domenach. Umożliwienie systemowi AI podejmowania decyzji bez przeglądu przez człowieka byłoby optymalnym sposobem wdrożenia takiego systemu.

Ponieważ moje twierdzenie może wydać się oczywiste lub niegodne uwagi, chcę podkreślić kilka niuansów. Załóżmy, że mamy system AI, który wykazuje poziom nadludzki w złożonym, krytycznym zadaniu o konkretnych, nieodwracalnych konsekwencjach. Moje twierdzenie ma dwie implikacje:

  1. System zostałby wdrożony do podejmowania decyzji w tym zadaniu bez przeglądu przez człowieka, pomimo inherentnego ryzyka
  2. Wgląd uzyskany z monitorowania takiego systemu nie zapobiegłby szkodliwej decyzji; szkoda zostałaby już wyrządzona

Przegląd wyników systemu i monitorowanie to właśnie dwie ostatnie warstwy obrony przed prompt injection. Dlatego nasz hipotetyczny atak prompt injection mógłby ominąć te warstwy po prostu poprzez celowanie w odpowiedni system.

To bardzo realistyczny scenariusz w moim przekonaniu. Nadludzki system AI w konkretnej domenie to nie AGI, a większość ekspertów uważa, że takie systemy są tuż za rogiem. Nie musieliśmy też zakładać, że decyzje są wrażliwe czasowo, tylko że zadanie jest wystarczająco złożone, aby przegląd przez człowieka był niepraktyczny.

Oczywiście, na razie ominęliśmy tylko dwie warstwy obrony, a na nasze szczęście opracowano kilka innych. Aby zająć się resztą, zagłębmy się w kluczowe elementy, które sprawiają, że prompt injection jest trudne do obronienia.

Czym jest Prompt Injection?

Prompt injection to manipulacja dużym modelem językowym (LLM) poprzez spreparowane dane wejściowe, powodująca, że LLM nieświadomie wykonuje intencje atakującego. Można to uznać za inżynierię społeczną dla AI. Kluczowe jest to, że nie jest to konwencjonalny błąd oprogramowania. Atak prompt injection wykorzystuje wrodzoną podatność LLM. Ponieważ LLM przetwarzają zarówno prompty systemowe, jak i użytkownika jako sekwencje tekstu, nie mogą wewnętrznie rozróżnić instrukcji legalnych i szkodliwych. Podatność jest zatem skutecznie zamierzona (by-design), a nie przypadkowa.

Techniki Prompt Injection

Prompt injection jest powszechnie uznawany za ryzyko numer 1 dla aplikacji LLM. Jest ku temu kilka powodów. Najbardziej oczywistym czynnikiem jest różnorodność technik iniekcji, które zostały opracowane. Z grubsza grupując je w cztery kategorie, najbardziej znane techniki obejmują:

  • Oparte na składni: używanie znaków specjalnych, emoji lub alternatywnego języka
  • Pośrednie: używanie źródeł zewnętrznych (pobieranie ze strony), kodowania (base 64) lub odniesień multimodalnych (tekst w obrazie)
  • „Udawajmy, że…”: wprowadzenie stylu manipulacyjnego poprzez np. odgrywanie ról, scenariusze hipotetyczne, odwołania emocjonalne, ramowanie etyczne i zmianę formatu
  • Bezpośrednie: wyraźna próba „zmuszenia” instrukcji modelu poprzez brute-force, wzmocnienie lub prompt negatywny

Sama różnorodność stanowi wyzwanie dla twórców aplikacji, ale te ataki również szybko ewoluują. Lewa strona poniższego diagramu ma opisywać stan techniki z początku 2023 roku, podczas gdy prawa strona odzwierciedla charakter ataków dzisiaj.

Evolution of Attack Vectors

Twórcy aplikacji LLM muszą również wziąć pod uwagę standardowy kompromis między użytecznością a bezpieczeństwem. Z pewnością mogliby wprowadzić każdą odpowiednią warstwę obrony i wzorzec projektowy, ale za jaką cenę? Warstwy obrony dodają znaczące opóźnienia i wprowadzają Fałszywie Pozytywne wyniki (FP) – błędnie oznaczając bezpieczne prompty jako złośliwe – oba czynniki negatywnie wpływają na doświadczenie użytkownika. W rezultacie pewien poziom kompromisu jest w praktyce nieunikniony i nie ma „srebrnej kuli”.

Jednak w tym artykule nie interesuje mnie tak naprawdę ta niekończąca się gra w kotka i myszkę. Raczej badam, czy atak może być nie do uniknięcia w zasadzie. Z perspektywy twórcy/obrońcy jest tylko jedno kluczowe spostrzeżenie:

Oddzielenie instrukcji od danych w prompcie jest fundamentalne dla rozwiązania ryzyka prompt injection

Możemy założyć, że kompromisy nie są czynnikiem i można użyć dowolnej warstwy obrony lub techniki. Przy tym (silnym) założeniu, czy można wymyślić scenariusz, w którym oddzielenie instrukcji od danych w prompcie jest skutecznie niemożliwe?

Analogia z DNA

Gdy problem został ujęty w kategoriach oddzielenia instrukcji od danych, moją pierwszą myślą było użycie biologii jako analogii.

Rozważmy komórkę i odcinek DNA (znany jako gen). Gen dostarcza instrukcji budowy białka poprzez transkrypcję i translację. Koduje również informację (dane), która wpływa na strukturę i funkcję białka. Jako taki, gen jednocześnie dyktuje, co zbudować i jak to zbudować, tak rozumowałem. Jednak jest to po prostu błędne, ponieważ gen nie decyduje o tym, jak się interpretować. Nie ma odpowiednika wykonywania instrukcji w biologii na poziomie genu. „Jak” jest w pełni zewnętrznie zależne od mechanizmów komórkowych.

Dlatego, nawet jeśli nie mogę się pozbyć wrażenia, że przyszłe generacje LLM – lub dokładniej, systemy, w które się rozwiną – będą w znacznie większym stopniu przypominać maszyny biologiczne, proponowana analogia po prostu nie działa. Nie możemy zastąpić komórki LLM, a genu promptem, a następnie dokonać iniekcji do genu, która ostatecznie spowodowałaby zbudowanie „uszkodzonego” białka. Wydaje się bardziej produktywne trzymać się języka naturalnego i zadań wymagających interpretacji semantycznej.

Odkrywanie warstw obrony

Nie powinno dziwić, że wielowarstwowe strategie obrony są uważane za bardziej skuteczne w powstrzymywaniu ataków prompt injection. Poniższy obraz przedstawia najczęstsze warstwy obrony w kolejności oraz powiązane techniki stosowane w każdej warstwie.

Prompt Injection Defense Layers

Omówiliśmy już dwie ostatnie warstwy (wynik, monitorowanie) powyżej, więc skupmy się na pierwszych czterech.

Rozważając warstwę wejściową, rozsądne jest założenie, że sanityzacja lub walidacja promptu byłaby dość skuteczna w wykrywaniu ataków pośrednich. Jeśli jednak iniekcja jest dostarczana bezpośrednio i, jak sugerowano powyżej, poprzez poleganie na interpretacji semantycznej, być może sanityzacja jest nieistotna (nie ma co sanityzować), a walidacja jest domyślnie niemożliwa, ponieważ obliczenia muszą zostać zakończone, aby zidentyfikować problem.

W zasadzie nie ma ograniczeń co do zabezpieczeń, które można skonstruować w warstwie wykrywania. W rzeczywistości można nawet użyć dedykowanego LLM do wykrywania iniekcji. Ale znowu, klasyfikatorowi lub detektorowi anomalii będzie trudno oznaczyć prompt jako podejrzany, gdy trucizna jest sprytnie ukryta w semantyce.

Warstwa modelu może być dość skuteczna, gdy zakres zadań jest wąski, a dostrojenie jest możliwe. Podobny argument można przedstawić dla warstwy systemowej, gdy użycie narzędzi jest przewidywalne. Jednak, przynajmniej intuicyjnie, żadna z nich nie wzbudziłaby alarmu, jeśli iniekcja zmyli interpreter.

Dom z kart

Moim zamiarem, gdy zaczynałem pisać ten artykuł, było opisanie „nie do uniknięcia” ataku prompt injection w ogólnych zarysach. Być może skończyłem na „niekonstruktywnym” podejściu, wskazując słabe punkty istniejących warstw obrony. Techniki obronne nadal szybko ewoluują, podobnie jak powierzchnia ataku. Ta gra nie wykazuje oznak szybkiego zakończenia. Wierzę jednak również, że nie my będziemy w nią grać już długo. Zgaduję, że skuteczny prompt injection w przyszłości nadal będzie w języku naturalnym, tylko w języku, którego ludzie nie mogą zrozumieć; i zgaduję, że zostanie on automatycznie odkryty przez system zbudowany w tym konkretnym celu lub może przypadkowo po rozwiązaniu pokrewnego zadania, takiego jak poszukiwanie niejednoznaczności semantycznej w jakiejś przestrzeni reprezentacji.

Jest coś nieprzyjemnego w przyznaniu, że tracimy kontrolę, a jednocześnie w poczuciu, że jest to najbardziej racjonalna rzecz do zrobienia. Można to uznać za „intuicyjny dowód”, że niektóre ataki byłyby nie

Eli Vovsha is a Data Science Manager at Fortra. Together with the Data Science team, he is responsible for developing and maintaining all of the machine learning (ML) models used by the CEP and XDR products, as well as general ML research. He received his M.S degree in applied math from Stevens Institute of Technology before becoming a PhD candidate in computer science at Columbia University, where he was also an instructor. He later co-founded an EdTech startup aiming to build an AI-powered learning platform, and then taught math and computer science at a private NYC high school. Prior to pursuing his graduate degrees, Eli dedicated significant time to chess, earning the International Master (IM) title.