Nullify

Usługi

Testy penetracyjne Audyty bezpieczeństwa Bezpieczeństwo aplikacji Szkolenia dla firm Bezpłatny skan ekspozycji

Menu

Blog O nas Kontakt
Pentest / AI

Testy penetracyjne aplikacji LLM

Testujemy chatboty, wyszukiwarki po dokumentach wewnętrznych i agentów z dostępem do narzędzi. Najgroźniejsze podatności zwykle nie siedzą w modelu, tylko w tym, co aplikacja robi z jego odpowiedzią.

Zakreschatboty, RAG, agenci
MetodykaOWASP Top 10 for LLM 2025
Odpowiedźbezpłatna wycena w 24 h
Zakres

Co sprawdzamy

INJ

Wstrzykiwanie promptu

Bezpośrednie w rozmowie i pośrednie - przez dokument w bazie wiedzy, stronę odwiedzaną przez asystenta albo treść maila, który ma streścić.

OUT

Obsługa odpowiedzi modelu

Gdzie trafia wygenerowany tekst: do HTML, do zapytania, do wywołania narzędzia. Odpowiedź modelu trzeba traktować jak dane od niezaufanego użytkownika.

AGENT

Uprawnienia narzędzi

Czym dysponuje agent i czyimi uprawnieniami działa. Brak potwierdzeń przy operacjach nieodwracalnych, konta techniczne z prawami szerszymi niż potrzebne.

RAG

Izolacja danych w RAG

Bazy wektorowe wspólne dla wielu klientów, filtrowanie uprawnień dopiero po pobraniu wyników, dostęp do cudzych dokumentów przez odpowiednio zadane pytanie.

SYS

Wyciek instrukcji systemowej

Instrukcja jako mapa systemu: nazwy narzędzi, reguły biznesowe, a zaskakująco często klucze i adresy usług wewnętrznych.

COST

Zużycie zasobów

Zapytania generujące rachunek nieproporcjonalny do wysiłku atakującego, limity na użytkownika, monitorowanie nagłych wzrostów.

Kontekst

Ryzyko leży w integracji, nie w modelu

Model językowy sam w sobie rzadko jest problemem. Dostarcza go OpenAI, Anthropic albo inny dostawca i to on odpowiada za jego zachowanie. Problem powstaje w warstwie, którą zbudowaliście wokół niego: jakie dane do niego trafiają, jakie ma uprawnienia i co system robi z tym, co zwróci.

U podstaw leży cecha konstrukcyjna, nie błąd. Instrukcja systemowa, historia rozmowy, treść pobranego dokumentu i pytanie użytkownika trafiają do jednego okna kontekstu jako ten sam tekst. Model nie ma niezawodnego sposobu, żeby odróżnić polecenie od treści do przetworzenia. Dlatego wstrzykiwania promptu nie da się wyeliminować tak, jak eliminuje się wstrzyknięcia SQL.

Groźniejsza od wersji bezpośredniej jest postać pośrednia: instrukcja ukryta w dokumencie, który sami wgraliście do bazy wiedzy, na stronie odwiedzanej przez asystenta albo w treści maila, który ma streścić. Atakujący nie potrzebuje wtedy dostępu do aplikacji - wystarczy, że umieści tekst tam, skąd system czerpie dane.

Testowanie takich systemów wygląda inaczej, bo model jest probabilistyczny: ten sam scenariusz raz przejdzie, a raz nie. Każdą technikę powtarzamy wielokrotnie i oceniamy skuteczność statystycznie. Znalezisko w postaci "ta technika działa w jednej trzeciej prób" jest tu w pełni sensowne i wystarczające, żeby uznać zabezpieczenie za nieskuteczne.

Szerzej opisaliśmy to na blogu: jak testuje się aplikacje oparte na LLM - z przykładem znaleziska z realnego testu.

Proces

Jak wygląda test

01

Ustalamy zakres

Definiujemy, co testujemy, w jakim trybie i w jakich godzinach. Doprecyzowujemy, co jest poza zakresem.

02

Podpisujemy NDA

Pełna poufność na każdym etapie. Znalezione podatności zostają między nami.

03

Przeprowadzamy testy

Testy manualne wsparte narzędziami. Krytyczne znaleziska zgłaszamy od razu, nie czekamy z nimi do raportu.

04

Raport i retest

Raport z oceną ryzyka, krokami reprodukcji i rekomendacjami. Po wdrożeniu poprawek sprawdzamy je ponownie.

FAQ

Najczęstsze pytania

Testujecie model czy aplikację?

Aplikację. Sam model dostarcza OpenAI, Anthropic czy inny dostawca i to on odpowiada za jego zachowanie. Nas interesuje warstwa, którą zbudowaliście wokół niego: jakie dane do niego trafiają, jakie ma uprawnienia i co system robi z jego odpowiedzią.

Korzystamy z gotowego API dostawcy. Czy to coś zmienia?

Nie zmienia sensu testu. Ryzyko leży w integracji, a nie w samym modelu - w tym, do jakich narzędzi i danych go podłączyliście oraz czy weryfikujecie to, co zwraca.

Czy da się w ogóle zabezpieczyć przed wstrzykiwaniem promptu?

Nie da się go wyeliminować, bo model nie odróżnia niezawodnie instrukcji od treści. Da się natomiast sprawić, żeby przestało mieć znaczenie - przez ograniczenie uprawnień, walidację odpowiedzi i projekt, w którym przejęcie kontroli nad modelem nie oznacza przejęcia kontroli nad danymi.

Czym to się różni od zwykłego testu aplikacji webowej?

Warstwa AI dochodzi, a nie zastępuje. Aplikacja LLM to nadal aplikacja z API, uwierzytelnianiem i bazą, więc klasyczny zakres obowiązuje. Różni się metodyka: model jest probabilistyczny, więc każdy scenariusz powtarzamy wielokrotnie i oceniamy skuteczność statystycznie, a nie zero-jedynkowo.

Wdrażacie system oparty na AI?

Opisz, co zbudowaliście i do czego model ma dostęp - odezwiemy się w 24 h z wyceną.

Zapytaj o wycenę