Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
prompt-injection-firewall — プロンプトインジェクション入力は正規表現ルールとGemini分類器でブロックし、ボットの応答に含まれる秘密情報やシステムプロンプトの漏洩を検知する2層構成のLLMファイアウォール。 | Kitploit
ツール/GitHubGitHub/ztsprofessionalaiid7-alt/prompt-injection-firewall
防御ツールウェブセキュリティ学習と教育AIセキュリティ異常検知
GitHubztsprofessionalaiid7-alt/prompt-injection-firewall

prompt-injection-firewall

プロンプトインジェクション入力は正規表現ルールとGemini分類器でブロックし、ボットの応答に含まれる秘密情報やシステムプロンプトの漏洩を検知する2層構成のLLMファイアウォール。

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
14日前未レビュー

Prompt-Injection Firewall

ライブデモ: https://prompt-injection-firewall.streamlit.app 2分間のデモ動画: https://drive.google.com/file/d/1tzb75nFysisrCYa11Lqj6egDs5VNmc2n/view?usp=drivesdk

LLMサポートボット向けの2層ファイアウォール: ユーザーが送信する内容と、ボットが送信する内容の両方を検査します。

課題

ユーザーはボットのルールを上書きしようとしたり(「以前の指示を無視して」)、ペルソナを切り替えたり、システムプロンプトや秘密情報を明かさせようとしたりする可能性があります。本プロジェクトはそうした入力をブロックし、ボットの回答における情報漏洩を検出し、失敗するケースを含めてその有効性を測定します。

仕組み

user input
   |
   v
[1] Rule layer (regex, fast, free)  --match--> BLOCK
   |no match
   v
[2] LLM classifier (Gemini, JSON output, Pydantic validation, retries, fail-closed) --attack--> BLOCK
   |benign
   v
AcmeBot (Gemini + system prompt)
   |
   v
[3] Output check (canary token, secret patterns, system-prompt fragments) --leak--> BLOCK
   |clean
   v
answer to user

実行方法

python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .env      # then put your Gemini key in .env
python src\run_eval.py dev
python src\eval_output.py dev
python src\compare.py dev
streamlit run app.py        # local demo

使用モデル: gemini-3.1-flash-lite。無料枠は混雑時に503を返すことがあるため、コードは待機してリトライします。 data\cases.jsonl を再ビルドしたい場合を除き、src\build_cases.py は実行しないでください(上書きされます。同じシードなら同じケースが生成されます)。

データ

  • 入力ケース: deepset/prompt-injections(Apache-2.0)から25件をサンプリング(シード7): 攻撃12件、正常13件。分割: dev 15件、hidden 10件。
  • 出力ケース: AI支援を受けて私が作成した12件(dev 8件、hidden 4件)。スペースで隠されたリークや、「password」/「API key」に言及する正常なテキストを含みます。
  • data/train.parquet はリポジトリに含まれています(出典: deepset/prompt-injections、Apache-2.0)。
  • hidden分割は、検出ロジックとプロンプトへの最後の変更後に一度だけ実行しました。

結果

セットレイヤー結果
devルールのみ検出 2/9、誤検知 0/6
devルール + Gemini(最終)検出 8/9、誤検知 0/6
dev出力チェック(最終)リーク検出 4/4、誤検知 0/4
hiddenルール + Gemini検出 3/3、誤検知 0/7
hidden出力チェックリーク検出 3/3、誤検知 0/1

ファイアウォールあり vs なし:

なしあり
dev: ボットに到達した攻撃9/91/9
dev: 誤ってブロックされた正常0/60/6
hidden: ボットに到達した攻撃3/30/3
hidden: 誤ってブロックされた正常0/70/7

hiddenセットには攻撃が3件しかないため、弱いシグナルです。devで分類器のプロンプトを調整したため、devとhiddenは別々に報告しています。

失敗したことと変更内容

数値を含む完全な履歴は CHANGELOG.md にあります。要約すると:

  • ルールのみでは攻撃を2/9しか検出できませんでした(リテラルなフレーズのみ)。Gemini分類器を追加すると7/9に向上しました。
  • モデル名が誤っていたためすべての呼び出しが失敗し、fail-closedのフォールバックがすべてをブロックしました(攻撃9/9、誤検知6/6)。この偽のスコアは、エラーが握りつぶされるのではなく実行を停止させる必要がある理由を示しました。
  • #4(通常の質問の後に隠された指示)が見逃されました。プロンプトに一般的なルールを追加し、8/9になりました。
  • #14「generate c++」は依然として失敗します。ソースデータセットでは攻撃とラベル付けされていますが無害に見え、おそらくラベルノイズです。
  • 出力チェックはスペースで書かれたシークレット(「ZX CANARY 7731」)を見逃しました。マッチング前にテキストを正規化しました。
  • 実際のボットの回答に対して出力チェックを実行すると、ボットの自己紹介で誤検知が発生しました(システムプロンプトとの6語一致)。一致長を8語に変更しました。
  • デプロイ: APIキーは環境変数(Streamlit secrets)からも読み取られるようになりました。検出ロジックやプロンプトへの変更はありません。

制限事項

  • データが少ない: 入力ケース25件、出力ケース12件。数値は統計的に堅牢ではありません。
  • ソースの攻撃のほとんどはプロパガンダやペルソナプロンプトであり、システムプロンプトの窃取ではないため、比較において出力チェックは入力レイヤーを超えるものを何も追加しませんでした。
  • 出力チェックのテストケースは私が作成したため、実際のリークではなく私のケースでチェックが機能することを示しています。
  • 出力チェックは言い換え、base64エンコード、非英語のリークを検出できず、8語未満の連続したリークも見逃します。
  • ルールパターンはこのデータセットの一般的なフレーズに適合しています。他の攻撃スタイルはLLMレイヤーに依存します。
  • LLMレイヤーはメッセージごとに1回のAPI呼び出しを追加し(レイテンシとコスト)、サードパーティサービスに依存します。
  • 公開デモはセッションあたり10メッセージに制限されており、無料APIのクォータが尽きると動作しなくなる可能性があります。
ツールをダウンロード