NVIDIA/garak

the LLM vulnerability scanner

garak – LLM脆弱性スキャナー

何であるか – garak は、大規模言語モデル(LLM)に対する赤チームスタイルのテストを目的としたオープンソースのコマンドラインツールキットです。多数の「プローブ」を実行し、モデルが幻覚を起こす、データを漏洩する、悪意あるプロンプトに従う、有毒または違法なコンテンツを生成するなどの挙動を引き出す試みを行い、組み込みの「検出器」でモデルの失敗を判断します。これは、LLM向けのnmap/Metasploitと捉えることができます。

なぜ重要か – LLMが製品に導入される中で、開発者は悪意あるプロンプトに対するモデルの挙動を把握する必要があります。garakはその発見を自動化し、実世界の攻撃になる前にセキュリティ上の弱点を特定するのをチームに支援します。

対応モデル – 以下のいずれかでアクセス可能な生成モデルであればすべて対応:

  • Hugging Face Hub(ローカルパイプラインまたはInference API)
  • OpenAI、Azure OpenAI、Cohere、Groq、Replicate、AWS Bedrock、NVIDIA NIMなど
  • ローカルのGGUF/llama.cppバイナリ
  • 任意のRESTエンドポイント(小さなYAML設定ファイルで)

インストール方法

# PyPIからの安定版
python -m pip install -U garak

# または最新のGitHub版
python -m pip install -U git+https://github.com/NVIDIA/garak.git@main

開発にはConda環境(Python 3.11–3.13)を推奨します。

スキャンの実行 – 基本コマンドは以下の通りです:

python -m garak --target_type <generator> --target_name <model>
  • --target_type は使用するプラグインを指定します(例:huggingface、openai、bedrock)。
  • --target_name はモデル識別子です(例:gpt2、meta/llama-3.1-8b-instruct)。
  • デフォルトではすべての組み込みプローブが実行されます。--spec probes.<family> または具体的なプローブ(例:--spec probes.dan.Dan_11_0)で範囲を絞ることができます。
  • 結果は各プローブごとのPASS/FAILの表として出力され、詳細なJSONLレポートが後続の分析用にファイルに保存されます。

例 – OpenAIの gpt-5-nano に対して、エンコーディングベースのプロンプトインジェクションをテストする場合:

export OPENAI_API_KEY=sk-…
python -m garak --target_type openai --target_name gpt-5-nano --spec probes.encoding

例 – Hugging Faceの gpt2 モデルに対して、古典的な「DAN」ジャイルブレイクを実行する場合:

python -m garak --target_type huggingface --target_name gpt2 --spec probes.dan.Dan_11_0

プローブカタログ(一部)

プローブ 目的
blank 空のプロンプトを送信 – ベースラインテスト
atkgen 自動的な有毒出力生成(微調整済みGPT-2を使用)
badchars Unicodeの摂動攻撃(非表示文字、同形文字)
dan 「何でも今すぐできる」系のジャイルブレイクプロンプト
encoding MIME/quoted-printableエンコーディングによるプロンプトインジェクション
leakreplay モデルが学習データを再出力するか確認
malwaregen 悪意あるコードの出力を促す試み
promptinject Agency Enterprise PromptInjectフレームワークの実装(NeurIPS 2022賞受賞)
snowball モデルを「雪だるま式幻覚」ループに誘導
xss クロスサイトスクリプティングやデータ漏洩に利用可能な応答の検出

出力とログ

  • garak.log – 実行間で継続的なデバッグログ。
  • 実行ごとのJSONLファイル – 各生成とその評価が記録される。
  • ヒットログ – 検出器がトリガーされた試行のみ。
  • 小さなヘルパー スクリプト(analyse/analyse_log.py)で最も頻出するヒットを要約可能。

garakの拡張 – フレームワークはプラグイン中心です。以下を追加できます:

  • 新しいプローブ(garak.probes.base.TextProbe を継承)。
  • 新しい検出器(garak.detectors.base.Detector を継承)。
  • カスタムAPIやローカルモデル用の新しいジェネレータ。 リポジトリには、プラグインの作成とテストのためのクイックスタートガイドが含まれています。

ドキュメントとコミュニティ

  • 完全なユーザーガイド: https://docs.garak.ai/
  • APIリファレンス: https://reference.garak.ai/
  • Discordチャット、Twitter @garak_llm、DEF CONプレゼンテーションスライドはREADMEからリンクされています。
  • プロジェクトはApache-2.0ライセンスで公開され、PyPIにも登録されています。

使用するタイミング – LLMを搭載したサービスの構築または展開を検討しており、プロンプトインジェクション、幻覚、データ漏洩、悪意ある出力のリスクを自動的に発見したい場合、garakは既存の攻撃セットと体系的なレポート形式を提供します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト