mcpField
A
AI & LLM Security

AI & LLM Security

github.com/masriyanセキュリティ535111 回インストール1 週間前に更新
リポジトリ

AI & LLM Security について

Claude向けのAI・LLMアプリケーションのセキュリティ評価スキルです。チャットボット、RAG、エージェント、ツール連携を対象に、OWASP Top 10 for LLM ApplicationsとMITRE ATLASに基づく再現可能なテストと緩和策を提示します。

主な機能

  1. 01AI脅威モデリングとリスク対応付け
  2. 02プロンプトインジェクションと脱獄テスト
  3. 03RAGとベクトルストアのレビュー
  4. 04エージェント、ツール、MCPの安全性確認
  5. 05モデルサプライチェーンと出力のレビュー
  6. 06注入テストとモデルスキャン用スクリプト

活用シーン

  1. 01チャットボットやRAGアプリのリスク評価
  2. 02間接プロンプト注入とツール悪用のテスト
  3. 03MCPサーバーとエージェント権限の確認
  4. 04モデルファイルの危険なデシリアライズ検査

MCP 対応

MCPサーバーとツール連携の評価・強化に対応し、クライアント認証、リソース範囲、レート制限、呼び出しログを確認します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/masriyan/claude-code-cybersecurity-skill --skill ai-&-llm-security

インストール後、Claude Code で/ai-&-llm-securityを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

examples/
example_usage.md
scripts/
prompt_injection_tester.py
model_supply_chain.py

詳細

AI と LLM のセキュリティ

目的

Claude が、チャットボット、RAG パイプライン、自律型エージェント、ツールを使用するシステムなど、AI/LLM を活用したアプリケーションのセキュリティを評価できるようにします。Claude は、検出事項を OWASP Top 10 for LLM Applications (2025) および MITRE ATLAS の敵対的機械学習ナレッジベースに対応付け、再現可能な攻撃事例を作成し、具体的な緩和策(入力/出力のガードレール、最小権限のツールスコープ、コンテンツの来歴)を推奨します。

許可が必要です:ご自身が所有する、または評価の明示的な許可を得ている AI システムのみをテストしてください。第三者の AI サービスに対するプロンプトインジェクションやデータ流出のテストは、利用規約や現地の法律に違反する可能性があります。実施前に、書面で範囲を確認してください。


起動条件

次のような内容をユーザーが尋ねた場合に、このスキルが起動します。

  • プロンプトインジェクション(直接的または間接的)、ジェイルブレイク、システムプロンプトの抽出
  • OWASP LLM Top 10、MITRE ATLAS、AI/ML の脅威モデリング
  • RAG パイプライン、ベクトルデータベース、検索レイヤーの保護
  • LLM エージェント/ツール使用/関数呼び出しのセキュリティと、混乱した代理人のリスク
  • ガードレール、コンテンツフィルター、モデル出力検証の設計
  • モデルからの機密情報の開示や学習データの漏えい
  • モデル/ML サプライチェーンのセキュリティ(モデルファイル、pickle、モデルレジストリ)
  • AI のレッドチーム演習、ジェイルブレイク用コーパス、自動化された敵対的プロンプトの生成
  • MCP(Model Context Protocol)サーバーとツール連携の保護

前提条件

pip install requests pyyaml rich

任意の拡張機能:

  • garak — LLM 脆弱性スキャナー(NVIDIA)
  • promptfoo — プロンプト/レッドチーム評価ハーネス
  • 対象の LLM エンドポイント用 API キー(テスト環境のみ)
  • modelscan / picklescan — ML モデルファイルの安全性スキャン

主な機能

1. 脅威モデリング(OWASP LLM Top 10 — 2025)

AI アプリケーションの脅威モデリングを求められた場合、各カテゴリに照らしてシステムを評価し、該当するリスクを記録します。

IDリスク確認事項
LLM01プロンプトインジェクション信頼できないテキストがプロンプトに到達していないか(直接的なもの、および RAG/ウェブ/メール経由の間接的なもの)
LLM02機密情報の開示プロンプト、出力、学習データ内の個人識別情報(PII)/シークレット、システムプロンプトの漏えい
LLM03サプライチェーン信頼できないモデル、LoRA アダプター、データセット、プラグイン、pickle のデシリアライズ
LLM04データとモデルの汚染汚染された学習/ファインチューニング/RAG データ、バックドア
LLM05不適切な出力処理LLM の出力がサニタイズされずに SQL、シェル、ブラウザー(XSS)、または eval に渡されていないか
LLM06過剰な自律性広すぎるツールスコープ、自律的な副作用、ヒューマン・イン・ザ・ループの欠如
LLM07システムプロンプトの漏えいシステムプロンプトに埋め込まれたシークレット/認可ロジック
LLM08ベクトルと埋め込みの弱点RAG のアクセス制御のバイパス、埋め込みの反転、テナント間の漏えい
LLM09誤情報セキュリティ/安全性の判断がハルシネーションに依存していないか
LLM10無制限の消費トークンの大量投入、モデル抽出、ウォレット枯渇によるコスト増大/DoS

カテゴリごとに、次の項目を含む表を作成します。リスクの有無(あり/なし/一部)→ 証拠 → 深刻度 → 緩和策。

2. プロンプトインジェクションとジェイルブレイクのテスト

直接インジェクション — 指示を上書きするユーザー入力です。テスト対象の種類:

  • 指示の上書き(「以前の指示を無視して……」)
  • ロールプレイ/ペルソナからの脱却(DAN 形式、仮定の枠組み)
  • エンコード/難読化(Base64、ROT13、リートスピーク、ホモグリフ、ゼロ幅文字)
  • トークンの密輸とプロンプト境界の混同(偽の区切り文字、偽のシステムタグ)
  • Many-shot ジェイルブレイク(従順さを促す偽の対話を長いコンテキストで与える)
  • クレッシェンド/複数ターンで段階的にエスカレーションする攻撃

間接インジェクション — 取得/処理したコンテンツ(ウェブページ、PDF、メール、RAG ドキュメント、ツール出力)を介してペイロードが届きます。これはエージェントにとって最も影響の大きい種類です。取得したテキストがコマンドを発行したり、コンテキストを流出させたり、ツールを実行させたりできないことをテストしてください。

各テストについて、ペイロード、チャネル(直接/間接)、目的(上書き/流出/ツールの悪用)、結果(ブロック/一部成功/成功)を記録してください。scripts/prompt_injection_tester.py を使用してコーパスを実行し、結果をスコアリングしてください。

拒否品質に関する注意: 拒否が一度あっただけでは合格になりません。制御が有効と判断する前に、同じ目的を異なる表現や難読化で ≥3 回再テストしてください。

3. RAG とベクトルストアのセキュリティ

RAG パイプラインをレビューする際は、次の点を確認してください。

  1. 取得時のアクセス制御 — ベクトルクエリがアプリケーションだけでなく、呼び出し元の権限でフィルタリングされていることを確認してください。テナント間/ユーザー間でのドキュメント漏えいをテストしてください。
  2. 間接インジェクションの攻撃対象領域 — 取り込むすべてのドキュメントを攻撃者が制御できるものとして扱い、取得したチャンクが明確に区切られ、指示として実行されないことを確認してください。
  3. 埋め込みの反転/メンバーシップ — 埋め込みから機密のソーステキストが部分的に復元される可能性があります。ベクトル DB に暗号化されずに保存された PII にフラグを立ててください。
  4. チャンクの汚染 — 悪意のあるドキュメント 1 つで取得結果が支配される可能性があります。ランキング/重複排除とソースの許可リストを確認してください。
  5. 引用の完全性 — 注入された主張を追跡できるよう、出力には取得したソースを引用させてください。
4. エージェントとツール使用(関数呼び出し/MCP)のセキュリティ

エージェントは混乱した代理人です。ユーザーにはない権限を持っています。次の点をレビューしてください。

  • 最小権限のツール — 各ツールの操作を必要最小限に限定してください。任意のホストに対する広範な execute_shell/http_request は許可しないでください。
  • 取り消し不能な操作/外部送信操作(支払い、メール送信、ファイル削除、デプロイ)には人間による確認ゲートを設けてください。
  • 引数の検証 — ツールの引数はモデルが生成するものであり、信頼できません。サーバー側で検証し、許可リストを適用してください。
  • インジェクションからツール実行への連鎖 — 取得したコンテンツ/間接コンテンツがツール呼び出しを引き起こせないことを確認してください(例:ウェブページがエージェントにメモリをメールで外部送信するよう指示する)。
  • MCP サーバーの強化 — クライアントを認証し、リソースの範囲を制限し、レート制限を適用し、すべてのツール呼び出しを記録してください。リソースの読み取りを通じて秘密情報を決して公開しないでください。
  • メモリの汚染 — エージェントの永続メモリに悪意のある指示が仕込まれ、後のターンで実行される可能性があります。
5. モデルと ML のサプライチェーン
  • モデルアーティファクトに危険なデシリアライズがないかスキャンしてください。pickle/.pt/.bin は読み込み時にコードを実行する可能性があります。safetensors を優先してください。scripts/model_supply_chain.py または modelscan を実行してください。
  • モデルの来歴、ハッシュ、署名を検証し、信頼できるレジストリのバージョンを固定してください。
  • ファインチューニング/LoRA アダプターとデータセットに、ポイズニングやライセンスの問題がないかレビューしてください。
  • サードパーティ製プラグイン/MCP サーバーは、信頼できない依存関係として扱ってください(レビューしてバージョンを固定)。
6. 出力処理とガードレール
  • LLM の生の出力を eval、SQL、シェル、innerHTML に決して渡さないでください。出力先でエンコード/パラメーター化してください(LLM05)。
  • 多層のガードレール:入力フィルター → システムプロンプト内のポリシー → 出力分類器 → 出力先に応じたサニタイズ。単一の層はどれも回避される可能性があるため、多層防御を採用してください。
  • 厳格なスキーマに照らして構造化出力を検証し、解析に失敗した場合は拒否してください。
  • 注入されたエージェントが攻撃者の URL にアクセスできないよう、外向き通信を制御してください。

出力基準

構造化された AI セキュリティ評価を作成してください。

# AI/LLM Security Assessment — [Application]
Date: [Date] | Scope: [Endpoints/Models] | Model: [name/version] | Analyst: [Name]

## Executive Summary
[2-3 sentences: overall posture, highest risks]

## OWASP LLM Top 10 Coverage
| ID | Risk | Exposure | Severity | Evidence |
|----|------|----------|----------|----------|
| LLM01 | Prompt Injection | Yes | High | [repro] |
...

## Confirmed Findings
### [F-01] Indirect Prompt Injection via RAG → Tool Abuse  (Critical)
- ATLAS: AML.T0051 / OWASP LLM01+LLM06
- Repro: [payload, channel, steps]
- Impact: [data exfil / unauthorized action]
- Mitigation: [least-privilege tool scope + retrieved-content isolation + HITL]

## Guardrail Bypass Matrix
| Goal | Direct | Encoded | Multi-turn | Indirect | Result |

## Recommendations (Prioritized)
1. ...

スクリプトのリファレンス

prompt_injection_tester.py
# Run the built-in injection/jailbreak corpus against an endpoint
python scripts/prompt_injection_tester.py --url https://app.test/api/chat --field message --output results.json

# Use a custom payload corpus and a refusal-detection keyword set
python scripts/prompt_injection_tester.py --url ... --corpus payloads.txt --judge-keywords refusals.txt
model_supply_chain.py
# Scan a model directory/file for unsafe pickle opcodes and risky imports
python scripts/model_supply_chain.py --path ./models/model.pt
python scripts/model_supply_chain.py --path ./models/ --recursive --output scan.json

スキルの統合

次のステップ条件対象スキル
アプリシェルの Web/API 脆弱性テストアプリが Web/API サーフェスを公開している→ スキル 09
モデルをホストするクラウド/インフラモデルが AWS/Azure/GCP/K8s で提供されている→ スキル 10
プロンプトインジェクションの試みに対する検知ルールSIEM によるカバレッジが必要→ スキル 12
依存関係/モデルパッケージの CVEML ライブラリを使用している→ スキル 02
AI の悪用を組み込んだレッドチームのシナリオエンゲージメント全体→ スキル 14

参考資料

コメント