
AIエージェントのセキュリティ監視のためのSigma検出ルール
このリポジトリには、AIエージェントが攻撃されたり操作されたりしていることを特定するのに役立つ検知ルールが含まれています。これは「脅威シグネチャ」のライブラリのようなものです。各ルールは、エージェントのログデータと照合されたときに、何か不審なことが起きていることを示すパターンを記述します。
AgentShield は、AIエージェント向けのオープンソースのセキュリティレイヤーです。エージェントの動作をリアルタイムで監視し、これらのSigmaルールを使用して、プロンプトインジェクション、データ盗難、ツールポイズニング、権限昇格などの敵対的攻撃を、被害が発生する前に検出します。
Sigmaは、サイバーセキュリティ業界で検知ルールを記述するために使用されるオープンスタンダードです。アンチウイルスシグネチャがコンピュータに「このファイルは悪意がある」と伝えるのと同様に、Sigmaルールはセキュリティプラットフォームに「ログ内のこのアクティビティパターンは不審である」と伝えます。
Sigmaルールは短いYAMLファイルであり、次のように言います:「ログにこのパターンが表示されたら、アラートを発報せよ。」例えば、簡略化されたルールは次のようになります:
IF ログイベントが user_input である
AND メッセージに "ignore previous instructions" が含まれている
THEN プロンプトインジェクションの重大アラートを発報
Sigmaはベンダーニュートラルな標準であるため、これらのルールはAgentShieldだけでなく、Sigma互換のあらゆる検知エンジンで動作します。つまり、セキュリティチームはベンダーロックインなしに、既存のツールに統合できます。
誰かがエージェントの指示を上書きしようとする攻撃 – 直接的に(「ignore previous instructions」と入力する)または間接的に(エージェントが読む文書に指示を隠す)行われます。
エージェントが騙されて機密データを攻撃者に送信する – HTTPアップロード、DNSトンネリング、隠しマークダウン画像、ステガノグラフィー技術などを通じて。
MCPツールの説明に悪意のあるメタデータが隠されている場合、またはツールが信頼された後にその動作を変更する(「ラグプル」攻撃)場合。
エージェントがSSHキー、APIトークン、クラウド認証情報、シークレットを含む環境変数などの機密ファイルにアクセスする場合。
エージェントが意図された以上のアクセス権を取得しようとする – sudo、コンテナエスケープ、クラウドIAM操作、システムファイル改ざんなどを通じて。
攻撃者が長期的なアクセスを維持しようとする – cronジョブ、シェルプロファイルの変更、起動エージェント、エージェントメモリのポイズニングなどを通じて。
エージェントが騙されて悪意のあるスクリプトをダウンロードして実行したり、リバースシェルを確立したり、難読化されたコマンドを実行したりする場合。
エージェントがネットワークスキャンやDNS列挙を実行して、ターゲット環境をマッピングする場合。
エージェントがセキュリティ関連の設定ファイルを変更して防御を弱める – 自動承認設定、MCP設定、AIアシスタントのルールファイルなど。
パッケージやスキルが信頼できないソース(直接URL、GitHubリポジトリ、tarballアーカイブ)からインストールされる場合。
rules/
└── ai_agent/
├── ai_agent_prompt_injection_direct.yml
├── ai_agent_credential_access.yml
├── ai_agent_mcp_tool_poisoning.yml
└── ... (すべてのルールが1つのフラットディレクトリに)
ルールは製品(ai_agent)ごとに整理され、SigmaHQ の慣例に従っています。各ルールの具体的な脅威カテゴリは、ディレクトリ構造ではなく、ルールのYAMLメタデータ(MITRE ATT&CKタグとlogsourceフィールド)にキャプチャされます。このフラットなレイアウトにより、リポジトリはシンプルに保たれ、ルールが複数の攻撃カテゴリにまたがる場合のあいまいさを回避します。
# ルールリポジトリをクローン
git clone https://github.com/agentshield-ai/sigma-ai.git
# AgentShield Engineで使用
export AGENTSHIELD_AUTH_TOKEN="replace-with-at-least-32-characters"
agentshield serve --rules ./sigma-ai/rules --port 8433
# ルールを検証
agentshield rules validate --path ./sigma-ai/rules
これらのルールは標準のSigma形式に従っており、Sigma互換のツールで使用できます:
# sigma-cliで検証
sigma check rules/
# 他の形式に変換
sigma convert -t <target> rules/ai_agent/
以下は、Sigmaルールの構造を完全に注釈付きで示した例です。各フィールドは平易な英語で説明されています。
title: Direct Prompt Injection Attempt # 人間が読める名前
id: eddcdc94-698c-577f-900d-28b1b5491a80 # 一意識別子(UUID v5)
related: # 関連ルールへのリンク
- id: agent-prompt-injection-direct-001 # これが置き換える以前のID
type: obsoletes
status: stable # 成熟度レベル(以下参照)
description: | # このルールが検出する内容
Detects direct prompt injection attempts in AI agent inputs containing
common jailbreak phrases, system override commands, and policy manipulation
structures. These patterns indicate attempts to compromise agent behaviour
through malicious instructions.
references: # 参考文献
- https://owasp.org/www-project-top-10-for-large-language-model-applications/
author: AgentShield # このルールの作成者
date: "2026-02-16" # 最初に作成された日付
modified: "2026-02-24" # 最後に変更された日付
tags: # MITRE ATT&CKマッピング
- attack.initial_access
- attack.t1190
logsource: # 対象となるログ形式
product: ai_agent
category: agent_events
detection: # マッチングロジック
selection_jailbreak_keywords:
event_type: user_input
message|contains:
- 'ignore previous instructions'
- 'developer mode'
condition: selection_jailbreak_keywords
falsepositives: # 既知の良性トリガー
- Legitimate AI safety research
level: critical # 重大度(critical/high/medium/low)
各セクションの説明:
product: ai_agent と category: agent_events により、AIエージェントのイベントログを対象としています。selection_* ブロックは一連の条件を定義し、condition フィールドがそれらをブール論理(and、or、not)で組み合わせます。critical、high、medium、または low。| レベル | 意味 |
|---|---|
| stable | 標準のSigma構文のみを使用。検出ロジックは確立され、現場でテスト済み。本番環境での使用準備完了。 |
| test | 検出ロジックは妥当だが、AgentShieldエンジンを必要とするカスタム拡張フィールド(time_window や cross_plugin_data_flow など)を使用。他のプラットフォームに適応する必要がある場合がある。 |
| experimental | 非標準フィールドに大きく依存するか、エンジンの制限に対する回避策に依存。検出エンジンの進化に伴い変更が予想される。 |
一部のルールは、標準のSigma仕様を超えるフィールドを使用します。これらのフィールドはAgentShield検出エンジンを必要とし、各ルールにインラインコメントで明示的にマークされています。
time_window -- 連続するイベントを相関させるための時間枠(例:'60s')time_between -- 2つの関連イベント間の最大時間cross_plugin_data_flow -- 異なるプラグイン間のデータフローを検出suspicious_data_pattern -- エンジンによって識別された不審なデータパターンをフラグ付けactual_behavior_matches_description -- ツールの実際の動作がその説明と一致するかを検証description_similarity_score -- ツール説明間の類似度スコアdescription_length_ratio -- 新しい説明の長さと元の説明の長さの比率byte_size_to_visible_char_ratio -- バイト/可視文字比率の不一致により隠しコンテンツを検出visibility_analysis -- 隠しテキストのコンテンツを分析query_length -- DNSクエリ文字列の長さsubdomain_count -- DNSクエリ内のサブドメイン数domain_entropy -- ドメイン名のシャノンエントロピーdestination_discovered_recently -- ターゲットホストが最近発見されたかどうかsensitive_files -- 操作に機密ファイルが含まれるかどうかparent_agent_context -- 親エージェントのコンテキストhosts_count -- 操作に関与するホスト数credential_source -- 使用中の認証情報の出所size_increase_ratio -- 変更後のファイルサイズの変化率これらのフィールドを使用するルールは、エンジン固有のサポートが必要であることを示すために、test または experimental ステータスとしてマークされています。
コントリビューションを歓迎します!以下のガイドラインに従ってください:
test または experimental で開始するai_agent_<説明>.ymlrules/ai_agent/ に配置git checkout -b feat/new-detection-rule)test または experimental としてマークされたルールは、AgentShield検出エンジンを必要とするカスタム拡張フィールドを使用します。標準のSigmaツールはこれらのフィールドを無視します。not 修飾子 -- ごく一部のルールは not 修飾子を使用しており、すべてのSigmaエンジンでサポートされているとは限りません。これらのルールには、回避策として代替の検出ロジックが含まれています。当然ながら、攻撃者はこれらのルールを回避するために攻撃を言い換えたり難読化したりできるのかという疑問が生じます。答えはルールのカテゴリに依存し、回避と攻撃の有効性の間には本物の、しかし不均一な緊張関係が存在します。