Garak – skaner podatności dla modeli AI

Garak – skaner podatności dla modeli AI

Jeśli nmap skanuje sieć, a Metasploit testuje aplikacje webowe, to Garak robi to samo dla modeli językowych.

Garak (Generative AI Red-teaming & Assessment Kit) to otwarty skaner podatności od NVIDIA. Automatyzuje testowanie LLM pod kątem prompt injection, jailbreakingu, wycieku danych i dziesiątek innych kategorii zagrożeń.

W tym artykule pokażę, jak zacząć z Garak i jak włączyć go do procesu bezpieczeństwa w twojej firmie.

  1. Instalacja i pierwsze kroki
  2. Podstawowe skanowanie
  3. Kategorie testów
  4. Skanowanie własnego API
  5. Interpretacja wyników
  6. Integracja z CI/CD

Instalacja i pierwsze kroki

Garak wymaga Pythona 3.10+. Instalacja przez pip:

bash
pip install -U garak

Po instalacji sprawdź dostępne testy:

bash
garak --list_probes

Zobaczysz dziesiątki kategorii – od encoding (ataki przez kodowanie) przez dan (jailbreaki) po leakreplay (wycieki danych treningowych).

Garak działa z modelami lokalnymi i zdalnymi. Możesz skanować GPT-4 przez API, Llama na HuggingFace, albo własny model na lokalnym serwerze.

Podstawowe skanowanie

Najprostszy skan – testowanie modelu OpenAI na ataki przez kodowanie:

bash
garak --target_type openai --target_name gpt-4o --probes encoding

Garak wyśle serię promptów zakodowanych w Base64, hex, ROT13 i innych formatach, sprawdzając czy model wykonuje ukryte instrukcje.

Dla modeli HuggingFace:

bash
garak --target_type huggingface --target_name meta-llama/Llama-2-7b --probes dan

To uruchomi testy jailbreakingowe typu DAN ("Do Anything Now").

Kategorie testów

Główne kategorie testów Garak
ProbeCo testujeDla kogo
encodingObejście filtrów przez Base64, hex, UnicodeKażdy system z filtrami wejścia
danJailbreaki DAN i podobneSystemy z ograniczeniami treści
promptinjectWstrzyknięcie instrukcjiSystemy przetwarzające zewnętrzne dane
leakreplayWyciek danych treningowychModele trenowane na wrażliwych danych
goodsideTechniki Riley GoodsideZaawansowane testowanie injection
grandmaManipulacja emocjonalnaChatboty obsługi klienta
xssGenerowanie XSS przez LLMSystemy renderujące odpowiedzi w HTML
continuationProblematyczne kontynuacje tekstuSystemy generujące treści

Pełny skan (wszystkie dostępne testy):

bash
garak --target_type openai --target_name gpt-4o

Pełny skan może trwać godziny i generować znaczące koszty API. Zacznij od wybranych kategorii istotnych dla twojego przypadku użycia.

Skanowanie własnego API

Masz własny endpoint z modelem? Garak obsługuje dowolne REST API:

bash
garak --target_type rest \
  --target_name "https://twoj-serwer.pl/api/chat" \
  --probes promptinject

Dla bardziej złożonych konfiguracji użyj pliku YAML:

yaml
# config.yaml
target:
  type: rest
  uri: https://twoj-serwer.pl/api/chat
  headers:
    Authorization: "Bearer ${API_KEY}"
  request_template: |
    {"message": "$INPUT"}
  response_path: "$.response"

Uruchom z konfiguracją:

bash
garak --config config.yaml --probes encoding,dan

Interpretacja wyników

Garak generuje raport w formacie JSON i HTML. Kluczowe metryki:

Pass rate – procent testów, które model przeszedł (zablokował atak). Chcesz jak najwyżej.

Fail rate – procent udanych ataków. To jest twoje ASR (Attack Success Rate).

Przykładowy wynik:

encoding.InjectBase64: 85% passed (17/20)
dan.Dan_11_0: 95% passed (19/20)
promptinject.HijackHateHumansMini: 60% passed (12/20)

W tym przykładzie prompt injection to problem – 40% ataków przechodzi. Czas na dodatkowe zabezpieczenia.

Interpretacja wyników Garak
95%", "Dobry", "Monitoruj, testuj regularnie"]} />
Pass rateOcenaDziałanie
80-95%Wymaga uwagiZidentyfikuj słabe kategorie
<80%KrytycznyWstrzymaj deployment, napraw

Integracja z CI/CD

Garak można uruchamiać automatycznie przy każdej zmianie promptu systemowego:

yaml
# .github/workflows/ai-security.yml
name: AI Security Scan
on:
  push:
    paths:
      - "prompts/**"
      - "config/ai/**"

jobs:
  garak-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Garak
        run: pip install -U garak
      - name: Run security scan
        run: |
          garak --target_type rest \
            --target_name $secrets.AI_ENDPOINT \
            --probes encoding,promptinject \
            --report_prefix security-scan
      - name: Upload results
        uses: actions/upload-artifact@v4
        with:
          name: garak-report
          path: security-scan*

Teraz każda zmiana w konfiguracji AI automatycznie uruchamia testy bezpieczeństwa.

Więcej o procesie testowania AI znajdziesz w przewodniku po testowaniu bezpieczeństwa. A jeśli interesują cię realne ataki, które Garak pomaga wykrywać – sprawdź przegląd incydentów 2023-2025.

Platformy takie jak OpenClaw implementują wiele zabezpieczeń domyślnie, ale niezależne testowanie narzędziami takimi jak Garak to najlepsza praktyka dla każdego wdrożenia produkcyjnego.