prompt injection
| Po angielsku | prompt injection (w tym indirect prompt injection) |
|---|---|
| Którą formą pisać | po angielsku Polski odpowiednik istnieje, ale w praktyce nikt tak nie pisze. Zostaw angielski, polski trzymaj jako synonim. |
| Inne formy | wstrzyknięcie promptu · wstrzyknięcie złośliwego promptu |
| Kategoria | Bezpieczeństwo AI i modeli językowych |
Prompt injection to atak na aplikację korzystającą z modelu językowego, w którym treść przetwarzana przez model zawiera instrukcje zmieniające jego zachowanie. OWASP definiuje podatność na prompt injection jako sytuację, w której dane wejściowe zmieniają zachowanie albo odpowiedź modelu w niezamierzony sposób, i zaznacza, że takie instrukcje nie muszą być czytelne dla człowieka [1]. Wariant pośredni (indirect prompt injection) polega na ukryciu poleceń w danych zewnętrznych, na przykład na stronie WWW albo w pliku, które model pobiera sam [1]. OWASP umieszcza to ryzyko na pierwszym miejscu listy zagrożeń dla aplikacji z modelami językowymi [1].
Jak działa
Model językowy dostaje jeden ciąg tekstu, w którym instrukcje twórcy usługi i dane od użytkownika albo z internetu leżą obok siebie. Model nie ma twardej granicy między poleceniem a danymi. Simon Willison, który 12 września 2022 roku zaproponował nazwę „prompt injection”, porównał problem do wstrzyknięcia SQL [2]. W SQL obroną są zapytania parametryzowane, które oddzielają kod od danych; Willison zauważył, że modele językowe nie mają dziś takiego mechanizmu, i zaproponował, by interfejsy przyjmowały instrukcje i dane osobno [2].
Wariant pośredni opisali w lutym 2023 roku Greshake i współautorzy [3]. Atakujący nie rozmawia z modelem. Umieszcza polecenia w danych, które aplikacja z modelem prawdopodobnie pobierze, i czeka [3]. Autorzy pokazali skuteczne ataki na czat Bing oparty na GPT-4 i na narzędzia do uzupełniania kodu, a jako skutki wskazali kradzież danych, ataki samoreplikujące się i zatruwanie informacji [3].
Przebieg ataku pośredniego na asystenta, który czyta strony w imieniu użytkownika, pokazuje schemat poniżej.
Odmiany
OWASP dzieli ataki według tego, skąd pochodzą instrukcje [1]. Obie odmiany mogą być celowe albo przypadkowe [1].
| Odmiana | Skąd instrukcje | Przykład |
|---|---|---|
| Bezpośrednia | z pola rozmowy z modelem [1] | polecenie wpisane do czatu obsługi klienta [1] |
| Pośrednia | z danych pobieranych przez model [1] | ukryty tekst na stronie WWW [1] |
| Multimodalna | z obrazu przetwarzanego razem z tekstem [1] | polecenie osadzone w grafice [1] |
| Zaciemniona | z tekstu w innym języku lub kodowaniu [1] | polecenia w formatowaniu Markdown lub LaTeX [7] |
Pokrewnym pojęciem jest jailbreak. OWASP traktuje go jako odmianę prompt injection, której celem jest całkowite pominięcie zabezpieczeń modelu [1]. Prompt injection jest szersze: celem może być nie tylko zakazana treść, ale też działanie w imieniu użytkownika.
W WordPressie
Na stronach WordPress modele językowe pracują w wtyczkach czatu, generatorach treści i asystentach w panelu. Ryzyko pojawia się tam, gdzie model czyta treść, której autorem nie jest administrator.
- Treść od użytkowników. Komentarze, opinie produktów i wiadomości z formularzy to dane niezaufane. Jeśli wtyczka każe modelowi je streścić, moderować albo na nie odpowiadać, ukryte w nich polecenia trafiają do modelu razem z instrukcjami wtyczki. To ten sam kanał, którym dziś płynie spam w komentarzach.
- Strona jako nośnik. OWASP wymienia jako scenariusz ataku stronę WWW z ukrytymi instrukcjami, którą czyta model [1]. Przejęta witryna może więc posłużyć do atakowania cudzych asystentów, którzy ją odwiedzają, podobnie jak dziś służy do rozsyłania złośliwego oprogramowania (malware).
- Agent z uprawnieniami. Wtyczka, która pozwala modelowi publikować wpisy, zmieniać ustawienia albo wysyłać maile, zamienia udany atak w działanie na stronie. Nadmiar takich możliwości opisuje hasło excessive agency.
OWASP zaleca, by kontrola uprawnień działała w kodzie aplikacji, a model dostawał tylko minimalny dostęp potrzebny do zadania [1]. W kodzie wtyczki oznacza to sprawdzanie uprawnień bieżącego użytkownika przed każdą akcją, zgodnie z zasadą najmniejszych uprawnień, a nie poleganie na tym, że model „nie zechce” zrobić nic groźnego.
Zagrożenia i skutki
OWASP wymienia jako możliwe skutki ujawnienie danych wrażliwych, ujawnienie promptu systemowego i infrastruktury, manipulację treścią, dostęp do funkcji bez uprawnień, wykonanie poleceń w podłączonych systemach i wpływ na krytyczne decyzje [1].
- Eksfiltracja danych przez odpowiedź modelu albo przez wywołanie narzędzia.
- Wyciek instrukcji twórcy usługi, opisany jako system prompt leakage.
- phishing podany przez zaufanego asystenta, na przykład link do fałszywej strony logowania [5].
- Nadużycie narzędzi agenta; gdy polecenia kryją się w opisach samych narzędzi, mowa o zatruwaniu narzędzi.
Jak się bronić
OWASP przyznaje, że z powodu natury modeli językowych nie wiadomo, czy istnieją w pełni skuteczne metody zapobiegania, i podaje środki ograniczające skutki [1]:
- ograniczenie roli i możliwości modelu w instrukcjach systemowych [1];
- określenie i sprawdzanie oczekiwanego formatu odpowiedzi [1];
- filtrowanie wejścia i wyjścia, czyli zewnętrzne guardrails [1];
- kontrola uprawnień i minimalny dostęp modelu do systemów [1];
- zatwierdzanie przez człowieka działań wysokiego ryzyka [1];
- oddzielanie i wyraźne oznaczanie treści zewnętrznych [1];
- regularne testy ataków, w tym AI red teaming [1].
Sekurak, opisując atak na GitHub MCP, zwraca uwagę na ryzyko opcji „pozwalaj zawsze”: częste pytania o zgodę skłaniają użytkowników do wyłączenia zatwierdzania [6]. Klucze API i hasła nie powinny trafiać do promptu; ich miejsce opisuje zarządzanie sekretami.
Historia i przykłady
Nazwa. Termin „prompt injection” zaproponował Simon Willison we wpisie z 12 września 2022 roku, opisując ataki na GPT-3 pokazane wcześniej przez Rileya Goodside’a [2].
Slack AI. Sekurak 23 sierpnia 2024 roku opisał badanie, w którym instrukcje umieszczone na kanale publicznym wpływały na odpowiedzi Slack AI dla innych użytkowników [5]. Pozwalało to wyprowadzić dane, na przykład klucze API, z kanałów prywatnych, do których atakujący nie miał dostępu [5]. Slack uznał to za zamierzone działanie [5].
GitHub MCP. 29 maja 2025 roku Sekurak opisał odkrycie Invariant Labs: zgłoszenie w publicznym repozytorium z ukrytymi poleceniami mogło nakłonić agenta z dostępem do repozytoriów właściciela do ujawnienia danych z repozytoriów prywatnych [6].
Cloaking dla agentów. 21 września 2025 roku Sekurak przedstawił technikę badacza z firmy JFrog, łączącą indirect prompt injection z cloakingiem [4]. Serwer rozpoznaje agenta AI po cechach środowiska, między innymi przez fingerprinting przeglądarki, i tylko jemu podaje stronę z ukrytymi poleceniami [4]. Według artykułu technika zadziałała na wszystkich testowanych modelach [4].
Przypisy
7- [1] LLM01:2025 Prompt Injection · OWASP Gen AI Security Project
- [2] Prompt injection attacks against GPT-3 (Simon Willison, 12 września 2022) · Simon Willison
- [3] Not what you've signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection (Greshake i in.) · arXiv
- [4] Nowy wektor ataku łączący indirect prompt injection z cloakingiem wymierzony w autonomicznych agentów AI · Sekurak
- [5] Możliwość wstrzyknięcia złośliwego promptu w Slack AI · Sekurak
- [6] GitHub MCP pomaga wykradać dane z prywatnych repozytoriów – kolejna sprytna technika prompt injection w wydaniu indirect · Sekurak
- [7] Ataki na agenty AI, boty AI i scrapery AI · Niebezpiecznik