Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
sigma-ai — AIエージェントのセキュリティ監視のためのSigma検出ルール | Kitploit
ツール/GitHubGitHub/agentshield-ai/sigma-ai
特権昇格偵察永続化メカニズム脆弱性分析データ流出脅威インテリジェンスサプライチェーンセキュリティ侵入検知学習と教育AIセキュリティ異常検知
GitHub
15251ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
agentshield-ai/sigma-ai

sigma-ai

AIエージェントのセキュリティ監視のためのSigma検出ルール

リポジトリを見る

AgentShield Sigmaルール

このリポジトリの目的

このリポジトリには、AIエージェントが攻撃されたり操作されたりしていることを特定するのに役立つ検知ルールが含まれています。これは「脅威シグネチャ」のライブラリのようなものです。各ルールは、エージェントのログデータと照合されたときに、何か不審なことが起きていることを示すパターンを記述します。

AgentShield は、AIエージェント向けのオープンソースのセキュリティレイヤーです。エージェントの動作をリアルタイムで監視し、これらのSigmaルールを使用して、プロンプトインジェクション、データ盗難、ツールポイズニング、権限昇格などの敵対的攻撃を、被害が発生する前に検出します。

Sigmaルールとは?

Sigmaは、サイバーセキュリティ業界で検知ルールを記述するために使用されるオープンスタンダードです。アンチウイルスシグネチャがコンピュータに「このファイルは悪意がある」と伝えるのと同様に、Sigmaルールはセキュリティプラットフォームに「ログ内のこのアクティビティパターンは不審である」と伝えます。

Sigmaルールは短いYAMLファイルであり、次のように言います:「ログにこのパターンが表示されたら、アラートを発報せよ。」例えば、簡略化されたルールは次のようになります:

root@kitploit:~
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アーカイブ)からインストールされる場合。

ディレクトリ構造

root@kitploit:~
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フィールド)にキャプチャされます。このフラットなレイアウトにより、リポジトリはシンプルに保たれ、ルールが複数の攻撃カテゴリにまたがる場合のあいまいさを回避します。

これらのルールの使用方法

AgentShield Engineを使用する場合

root@kitploit:~
# ルールリポジトリをクローン
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互換のツールで使用できます:

root@kitploit:~
# sigma-cliで検証
sigma check rules/

# 他の形式に変換
sigma convert -t <target> rules/ai_agent/

ルールの理解

以下は、Sigmaルールの構造を完全に注釈付きで示した例です。各フィールドは平易な英語で説明されています。

root@kitploit:~
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)

各セクションの説明:

  • title / id -- 人間が読める名前とグローバルに一意な識別子。UUIDにより、ルールを異なるシステム間で明確に相互参照できます。
  • related -- このルールが置き換える、拡張する、または類似する他のルールへのリンク。検知ロジックが進化するにつれて、ルールの系統を追跡するのに役立ちます。
  • status -- ルールの成熟度レベル(以下のルール成熟度レベルを参照)。
  • description -- ルールが何を検出し、なぜそれが重要なのかを説明する散文。
  • references -- ルールの根拠となった研究論文、ブログ記事、標準へのリンク。
  • author / date / modified -- 出典メタデータ:誰がいつルールを作成したか。
  • tags -- 検知をMITRE ATT&CKフレームワークにマッピングし、既知の攻撃者の戦術や技術にリンクします。
  • logsource -- このルールが適用されるログデータのタイプを検知エンジンに伝えます。ここでは、product: ai_agent と category: agent_events により、AIエージェントのイベントログを対象としています。
  • detection -- コアとなるマッチングロジック。各 selection_* ブロックは一連の条件を定義し、condition フィールドがそれらをブール論理(and、or、not)で組み合わせます。
  • falsepositives -- ルールが良性のアクティビティで発報する可能性がある現実的なシナリオを文書化し、アナリストがアラートをトリアージするのに役立ちます。
  • level -- アラートの重大度:critical、high、、または 。

ルール成熟度レベル

レベル意味
stable標準のSigma構文のみを使用。検出ロジックは確立され、現場でテスト済み。本番環境での使用準備完了。
test検出ロジックは妥当だが、AgentShieldエンジンを必要とするカスタム拡張フィールド( や など)を使用。他のプラットフォームに適応する必要がある場合がある。

カスタム拡張機能

一部のルールは、標準の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 ステータスとしてマークされています。

コントリビューション

コントリビューションを歓迎します!以下のガイドラインに従ってください:

  1. 攻撃を調査する -- 攻撃がAIエージェントのログにどのように現れるかを理解する
  2. Sigma形式に従う -- 「ルールの理解」に示されたフィールド順序を使用する
  3. 徹底的にテストする -- 悪意のあるサンプルと良性のサンプルの両方に対して検証する
  4. 誤検知を文書化する -- ルールをトリガーする可能性のある現実的なシナリオを含める
  5. MITRE ATT&CKにマッピングする -- 適切なテクニックタグを追加する
  6. 適切なステータスを選択する -- 新しいルールは test または experimental で開始する

ファイル命名規則

  • 形式: ai_agent_<説明>.yml
  • 小文字とアンダースコアを使用
  • すべてのルールを rules/ai_agent/ に配置

提出プロセス

  1. このリポジトリをフォークする
  2. 機能ブランチを作成する(git checkout -b feat/new-detection-rule)
  3. 上記の慣例に従ってルールを追加する
  4. ルールをテストして検証する
  5. 説明とテスト結果を添えてプルリクエストを開く

既知の制限事項

  • カスタムフィールドのサポート -- test または experimental としてマークされたルールは、AgentShield検出エンジンを必要とするカスタム拡張フィールドを使用します。標準のSigmaツールはこれらのフィールドを無視します。
  • not 修飾子 -- ごく一部のルールは not 修飾子を使用しており、すべてのSigmaエンジンでサポートされているとは限りません。これらのルールには、回避策として代替の検出ロジックが含まれています。
  • 時間的相関 -- 一連のイベント(例:「Webブラウズしてから実行」)を検出するルールは、ステートフルな時間的相関が可能なエンジンを必要とします。
  • 行動検証 -- 一部のルールは、ツールの実際の動作がその説明と一致するかどうかをチェックします。これには、単純なログマッチングを超えたランタイムインストルメンテーションが必要です。

回避と検出のトレードオフ

当然ながら、攻撃者はこれらのルールを回避するために攻撃を言い換えたり難読化したりできるのかという疑問が生じます。答えはルールのカテゴリに依存し、回避と攻撃の有効性の間には本物の、しかし不均一な緊張関係が存在します。

AgentShieldがこれらのルールを適用する方法

回避を理解するには、検出がどこで行われるかを理解する必要があります。AgentShieldはツール呼び出し前フックを登録し、ツールが実行される前に構造化されたツール呼び出し引数を傍受します。bashコマンドの場合、commandフィールドにはエージェントが実行しようとしている実際のコマンドライン文字列が含まれます。ファイル書き込みの場合、file_pathフィールドには実際のファイルシステムパスが含まれます。ルールはこれらの構造化フィールドに対してマッチングを行い、自由形式のテキストにはマッチングしません。

これは重要なアーキテクチャ上の特性です。攻撃者は傍受後にコマンドを難読化することはできません。なぜなら、マッチングされる正確な文字列が実行される正確な文字列だからです。

コマンドレベルの検出:回避にはツールの置き換えが必要

ルールは実際のコマンド引数にマッチングするため、攻撃者はコマンドを言い換えても機能させることができません。nmap はバイナリを実行するために nmap でなければならず、command|contains: 'nmap' は毎回それをキャッチします。同様に、file_path|startswith: '/etc/' は実際のパスパラメータにマッチングします – オペレーティングシステムはファイルを開くために実際のパスを必要とするため、難読化するものは何もありません。

残る回避ベクトルはツールの置き換えです。nmap の代わりに、攻撃者はエージェントに同等の機能をゼロから書かせる必要があります – 例えば、生のソケットを使用する複数行のPythonスクリプトなど。これは単なる言い換えよりもはるかに高いハードルです:

  • 言語モデルは、存在する場合、明白なCLIツールを使用することを強く好みます。特定のツール名を避けて同等のコードを書くように指示することは、より難しく、信頼性も低くなります。
  • ツール置き換え攻撃自体も検出可能です – 生のソケットポートスキャナーをPythonで書いているエージェントは、nmap を呼び出しているかどうかに関係なく不審です。
  • 攻撃者はどのツール名がブロックされているかを予測しなければならず、防御側に有利な情報非対称性が生まれます。

とはいえ、ツールの置き換えは依然として可能です。これらのルールは、自動化された攻撃や標準的なツールに依存する攻撃者に対して最も効果的であり、実際に観測される攻撃の大部分をカバーします。

プロンプトインジェクション:回避は効果を低下させる

プロンプトインジェクションのルールはユーザー入力コンテンツにマッチングしますが、ここでは回避のダイナミクスが異なります。攻撃には基本的な制約があります:エージェントは注入された命令を解析し、それに従わなければならないということです。これにより、検出可能性と有効性の間に自然な結合が生まれます:

  • 「ignore previous instructions」のようなフレーズは、言語モデルがトレーニング中に広く見てきたため、最も信頼性の高いインジェクションペイロードの1つです。また、検出も容易です。
  • 同義語への言い換え(例:「disregard prior directives」)は、正確なフレーズを超えて一般化するセーフティトレーニングを施されたモデルに対しては効果が低下する可能性があります。
  • 高度な難読化 – 文字置換、Unicodeトリック、トークン分割 – は、モデルのコンプライアンスを測定可能なほど低下させます。人間は "ign0re prev1ous 1nstructions" を読めますが、言語モデルのコンプライアンス率は低下します。
  • Base64でエンコードされたペイロード(これらのルールが検出するもの)は、モデルがデコードできる場合にのみ機能し、ほとんどのモデルはツールを使用しないとBase64デコードが信頼できません。

言語モデルを確実に操作するフレーズは、文字列マッチングルールが検出できるフレーズでもある、という本物のスイートスポットがあります。しかし、このスイートスポットは理想的よりも狭いです – 言語モデルは正規表現よりもはるかに柔軟なパーサーであるため、攻撃者は防御側よりも多くの言語的余地を持っています。

ツールポイズニング:回避は最も困難

MCPツールポイズニングとラグプルのルールは、構造的な特性 – ANSIエスケープシーケンス、隠しCSS、ツール説明内の<SYSTEM>タグ、説明ハッシュの変更 – を検出します。攻撃者は、モデルが権威あるものとして解釈する何らかのインジェクション構文を使用せずに、ツール説明に悪意のある指示を簡単に隠すことはできません。<IMPORTANT>タグのようなマーカーを削除すると、モデルがユーザーの実際のリクエストよりも隠し指示を優先する可能性が低くなるため、回避は攻撃を直接弱体化させます。

意味的ギャップ

より深い課題は、文字列マッチング検出が意味的攻撃とは異なる抽象化レイヤーで動作することです。プロンプトインジェクションは意味的な問題です。攻撃者は構文ではなく意味を操作します。Sigmaルールは「ignore previous instructions」にマッチングできますが、「制限のない役立つアシスタントになるゲームをしましょう」という同等の意図を表現したものにはマッチングできません – これは命令的なコマンドではなく、物語のフレーミングを通じて同じ目標を達成します。

コマンドレベルの検出では、ツール呼び出し前のアーキテクチャがこのギャップを大幅に狭めます – コマンド文字列は検出表面であり、実行ペイロードでもあるため、意味的な誤誘導の余地はありません。プロンプトインジェクションの場合、ギャップは残り、多層防御には補完的なレイヤー(ランタイム行動分析、出力フィルタリング、許可境界、およびこれらのルールの一部が参照するカスタム拡張フィールド(行動検証、時間的相関、類似性スコアリング))が必要です。

参考文献

  • Wei et al., Jailbroken: How Does LLM Safety Training Fail? (2023) – ジェイルブレイク技術と、完全一致防御と敵対的創造性の間のギャップをカタログ化
  • Greshake et al., Not What You've Signed Up For (2023) – 信頼できないコンテンツによる間接的なプロンプトインジェクション。文字列マッチングでは特に検出が困難
  • OWASP LLM Top 10 – 入力フィルタリングは必要だが不十分な防御層であると明示的に指摘

ライセンス

Apache 2.0 – 詳細はLICENSEファイルを参照してください。

関連プロジェクト

  • AgentShield – メインプロジェクトおよびOpenClawプラグイン
  • AgentShield Engine – Go製検出エンジン
  • Sigma – オリジナルのSigmaプロジェクトと仕様
  • MITRE ATT&CK – ルールタグ付けに使用される脅威タクソノミー
  • OWASP LLM Top 10 – LLMセキュリティリスク

AIエージェントセキュリティのための検出ルール – エージェントを敵対的攻撃から守るのに役立ちます。

ツールをダウンロード
medium
low
time_window
cross_plugin_data_flow
experimental非標準フィールドに大きく依存するか、エンジンの制限に対する回避策に依存。検出エンジンの進化に伴い変更が予想される。