secure-ai について
secure-aiは、LLMアプリケーション向けのセキュリティスキルで、入力の分離から出力検証までの防御パターンを扱います。エージェント、MCPツール、AIサプライチェーンを対象とし、OWASPとNISTのフレームワークに沿っています。
主な機能
- 01プロンプトインジェクション対策と入力分離
- 02モデル出力の検証とフィルタリング
- 03エージェントの最小権限と人間の承認
- 04MCPツールの許可リストと検証
- 05モデルの来歴とサプライチェーンの確認
活用シーン
- 01LLMアプリのプロンプトインジェクションリスクの確認
- 02下流で使う前のモデル出力の検証
- 03エージェントとMCPツールの権限制限
- 04モデル、データセット、依存関係の来歴調査
MCP 対応
ツールの許可リスト、入出力の検証、最小権限の適用など、MCPツール連携の保護方法を説明します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill secure-aiインストール後、Claude Code で/secure-aiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/agentic-security-zero-trust.mdoutput-validation.mdprompt-injection-defense.mdsecure-server-actions.mdsecurity-audit-protocols.mdsupply-chain-mcp.md詳細
セキュア AI
概要
多層防御、構造的な分離、ゼロトラストのオーケストレーションによって、AI 統合レイヤーを保護します。プロンプトインジェクション対策、モデル出力の検証、エージェントセキュリティ、安全なサーバーアクション、サプライチェーンの完全性、MCP ツールのセキュリティ、LLM と連携するアプリケーション向けの監査プロトコルを扱います。
OWASP Top 10 for LLM Applications 2025 および NIST AI Risk Management Framework(AI RMF 1.0)に準拠しています。10 項目すべての OWASP LLM リスクを、具体的な防御パターンで網羅します。
使用する場面: LLM を活用した機能をプロンプトインジェクションから保護する場合、後続処理で使用する前にモデル出力を検証・サニタイズする場合、自律型エージェントにゼロトラストを実装する場合、AI エンドポイント向けのサーバーアクションを強化する場合、MCP ツールの統合を保護する場合、AI サプライチェーンのリスクを管理する場合、AI のアクセスパターンを監査する場合。
使用しない場面: AI コンポーネントを含まない一般的なウェブアプリケーションのセキュリティ、フロントエンドのみのセキュリティ上の懸念、AI を含まない API の強化、AI が関与しない基本的な認証や認可。
クイックリファレンス
| パターン | アプローチ | 重要なポイント |
|---|---|---|
| 構造的な分離 | システム/ユーザーメッセージのロールを分ける | 指示とユーザーデータを1つの文字列に混在させない |
| 入力境界 | マーカーでユーザーデータを区切る | 信頼できないデータの開始位置と終了位置をモデルが識別しやすくする |
| ガーディアンモデル | 高速な分類器で入力を事前スキャンする | メインの推論モデルが処理する前にインジェクションのパターンを検出する |
| 出力の検証 | LLM の出力を信頼できない入力として扱う | コンテキストに応じたエンコード、パラメーター化クエリ、CSP ヘッダー |
| 最小権限 | サブタスクごとに機能ベースのスコープを設定する | エージェントには現在の作業に必要なツールのみを付与する |
| 人間による確認 | 破壊的な操作には人間の承認を必須とする | 金融関連またはデータを変更するイベントには承認が必要 |
| 非人間アイデンティティ | OIDC ベースのエージェント認証 | すべてのエージェントに検証可能な ID を付与し、キーを定期的にローテーションする |
| サーバー専用の AI ロジック | すべての AI コードで server-only をインポートする | キーと推論がクライアントバンドルに漏えいしない |
| 入力の検証 | AI を使用するすべてのサーバーアクションに Zod スキーマを適用する | 生のユーザー入力を AI サービスに渡さない |
| レート制限 | Redis を使用してユーザー/IP ごとにトークン予算を設定する | AI エンドポイントに対するウォレット枯渇攻撃を防ぐ |
| ストリームのスクラビング | AI 出力ストリームから機密文字列をフィルタリングする | クライアントに届く前に内部 ID や秘密情報を削除する |
| MCP ツールのセキュリティ | ツールを許可リストに登録し、入力/出力を検証する | MCP サーバーを信頼できないものとして扱い、最小権限を徹底する |
| サプライチェーンの完全性 | モデルの来歴を検証し、AI-BOM を維持する | チェックサムを使ってモデル、データセット、依存関係を追跡する |
| シークレット管理 | CI で漏えいをスキャンしつつ環境変数を使用する | コミットされたシークレットを防ぐため、CI で gitleaks を使用する |
中核となるセキュリティ原則
- 分離は絶対です -- ユーザーデータをシステム指示として扱ってはなりません
- LLM の出力は信頼できません -- モデルの応答はすべて、後続処理で使用する前に悪意のある入力の可能性があるものとして扱います
- エージェントには最小権限を適用します -- 現在のサブタスクに必要なツールのみを付与し、完了後に取り消します
- 破壊的操作には人間による検証が必要です -- 破壊的な操作や取り消し不能な操作には、人間の署名を必須とします
- クライアントに秘密情報を置きません -- すべての AI ロジックとキーはサーバー専用の環境に配置します
- 敵対的な姿勢を保ちます -- ユーザーとエージェントの双方がルールを回避しようとすると想定します
- 多層防御を適用します -- ある層が回避されてもシステムが侵害されないよう、防御を重ねます
- サプライチェーンを検証します -- すべてのモデル、データセット、AI ツールの出所と完全性を検証します
OWASP LLM Top 10(2025)への対応
| OWASP リスク | 参照 |
|---|---|
| LLM01 プロンプトインジェクション | プロンプトインジェクション対策 |
| LLM02 機密情報の漏えい | セキュアなサーバーアクション(ストリームのスクラブ、出力フィルタリング) |
| LLM03 サプライチェーン | サプライチェーンと MCP のセキュリティ |
| LLM04 データおよびモデルのポイズニング | サプライチェーンと MCP のセキュリティ |
| LLM05 不適切な出力処理 | 出力の検証とエンコーディング |
| LLM06 過剰なエージェンシー | エージェント型ゼロトラストセキュリティ(最小権限、HITL) |
| LLM07 システムプロンプトの漏えい | プロンプトインジェクション対策(抽出できないプロンプト) |
| LLM08 ベクトルおよび埋め込みの脆弱性 | 出力の検証とエンコーディング(RAG のサニタイズ) |
| LLM09 誤情報 | 出力の検証とエンコーディング(セマンティックフィルタリング) |
| LLM10 無制限の消費 | セキュアなサーバーアクション(レート制限、トークン予算) |
よくある間違い
| 間違い | 適切なパターン |
|---|---|
| 同じプロンプトフィールドでユーザー入力とシステム指示を混在させる | システムメッセージとユーザーメッセージの役割を分け、構造的に分離します |
| LLM の出力を信頼し、そのまま exec、eval、SQL に渡す | モデルの出力はすべて信頼できないものとして扱い、パラメーター化クエリとコンテキストを考慮したエンコーディングを使用します |
| すべてのタスクでエージェントに無制限のツールアクセスを与える | ケイパビリティベースのスコープを適用し、サブタスクごとに必要なツールのみを許可します |
| AI サービスの認証に静的な API キーを使用する | 動的なキーのローテーションと有効期間の短いトークンを備えた OIDC を使用します |
| 出所を確認せずにサードパーティ製モデルを読み込む | モデルのチェックサムを検証し、署名付きアーティファクトを使用して、AI-BOM を維持します |
| 検証せずに MCP サーバーに広範な権限を付与する | MCP ツールを許可リストに登録し、すべての入力と出力を検証して、機密性の高い操作には人間の承認を必須にします |
| 生のユーザー入力を AI サービスに直接渡す | AI による処理の前に、すべての入力を Zod スキーマで検証します |
| 出力をフィルタリングせずに AI の応答をストリーミングする | 機密文字列をストリームから除去してから、クライアントに渡します |
主要なフレームワーク
- OWASP Top 10 for LLM Applications 2025 -- LLM の脆弱性分類に関する業界標準
- NIST AI Risk Management Framework (AI RMF 1.0) -- AI リスクに対応する 4 機能のフレームワーク(Govern、Map、Measure、Manage)
- NIST Cybersecurity Framework Profile for AI (NISTIR 8596) -- 安全な AI 導入のためのガイドライン
- OWASP MCP Security Cheat Sheet -- サードパーティ製 MCP サーバーとの統合を保護するための実践的なガイド
- CycloneDX 1.6 / SPDX 3.0 -- AI 部品表(ML-BOM)を支援する標準
委任
- プロンプトインジェクションの脆弱性についてコードベースをスキャンする:
Exploreエージェントを使用して、ユーザーデータがシステムプロンプトに渡される箇所や、検証されていない入力を検索します - ゼロトラストのエージェントオーケストレーションを実装する:
Taskエージェントを使用して、ID 検証、サンドボックス化、人間による承認ゲートを追加します - モデル出力の処理を監査する:
Exploreエージェントを使用して、サニタイズせずに LLM の出力をexec、eval、SQL に渡す箇所や、HTML としてレンダリングする箇所を見つけます - MCP ツールの設定をレビューする:
Exploreエージェントを使用して、MCP サーバーの権限、ツールの許可リスト、認証の設定を確認します - 安全な AI 統合アーキテクチャを設計する:
Planエージェントを使用して、信頼境界、エージェントのスコープ、監査要件を整理します - サプライチェーンのリスクを評価する:
Exploreエージェントを使用して、来歴記録とともにサードパーティ製モデル、データセット、MCP サーバーを一覧化します - セキュリティ監視を設定する:
Taskエージェントを使用して、監査ログ、異常検知、インシデント対応アラートを設定します
アプリケーション全般のセキュリティ(OWASP Top 10、認証パターン、セキュリティヘッダー、入力検証)には、
application-securityスキルを使用してください。データベース層のセキュリティ(RLS ポリシー、監査証跡、Postgres の強化)には、database-securityスキルを使用してください。
参考資料
- プロンプトインジェクション対策 -- 多層の分離、ガーディアンモデル、入力境界、間接的なインジェクション
- 出力の検証とエンコーディング -- ゼロトラストの出力処理、コンテキストを考慮したエンコーディング、RAG のサニタイズ
- エージェント型ゼロトラストセキュリティ -- 非人間ID、リソースの分離、異常検知
- 安全なサーバーアクション -- サーバー専用パターン、入力検証、レート制限、ストリームセキュリティ
- サプライチェーンと MCP のセキュリティ -- モデルの来歴、AI-BOM、MCP ツールの強化、データポイズニング対策
- セキュリティ監査プロトコル -- エージェントの動作監視、コンプライアンスチェックリスト、インシデント対応