検知ルールを「20回」自動で試験する
AIエージェントの作り方
検知ルールは、本番に出す前に何度も検証する必要があります。その面倒な繰り返しを、AIに出題させ、プログラムに採点させて自動化します。
設計の考え方から、実際に使うプロンプトまで公開します。
この記事を30秒で
前回の記事では、「AIで守る」ときの微調整が大変な理由として、検知ルールは本番に出す前に5〜15回ほど検証するのが目安だと紹介しました。今回は、その検証を自動で回すAIエージェントを設計します。ポイントは3つです。①同じテストを何回繰り返しても意味がないので、AIに毎回違う「試験問題」を作らせる。②回数を数えるのも採点するのもプログラムで、AIには数えさせない。③AIに作らせるのはログそのものではなく「設計図」。この3つを守れば、「20回試験して」と指定するだけで、検知ルールの弱点、AI分析者の判断のブレ、罠への耐性まで一度に測れます。記事の後半では、出題役と判定役のAIに渡す実際のプロンプトと、動作例も紹介します。
📋 目次
🔍 なぜ「何度も検証」が必要なのか
検知ルールは、作った瞬間がいちばん危ない状態です。
検知ルールとは「警報が鳴る条件」のこと
セキュリティ監視(SOC)では、大量のログの中から攻撃らしい動きを見つけるために、検知ルールを書きます。たとえば「同じIPアドレスから、60秒以内に20回以上ログインに失敗したら警報を出す」というルールです。パスワードを片っ端から試す攻撃(クレデンシャルスタッフィング)を見つけるための、ごく基本的なルールです。
ところが、このルールには穴がいくつもあります。攻撃者がゆっくり試せば(10分で25回など)すり抜けますし、100個のIPに分散して1つあたり5回ずつ試してもすり抜けます。逆に、社員800人が本社の同じIPからいっせいにログインする朝9時には、正常なのに警報が鳴るかもしれません。こうした穴は、頭の中で考えるだけではなかなか見つかりません。いろいろなパターンのログを実際に流してみて、初めて分かります。だから本番に出す前に、何度も検証する必要があるのです。
ここでよくある勘違いがあります。検知ルールは決まったとおりに動くプログラムなので、同じログで15回動かせば、15回とも同じ結果になります。回数を重ねることに意味を持たせるには、毎回違うテストデータを使わなければなりません。ところが、毎回違う、しかも現実にありそうなテストデータを人が15通りも考えるのは大変です。この「出題」の部分こそ、AIに任せる価値があります。
📊 「繰り返し」に意味があるもの・ないもの
| 対象 | 同じ入力で繰り返すと | だから何を変えて試す? |
|---|---|---|
| ⚙️ 検知ルール | 毎回同じ結果(繰り返す意味がない) | テストデータを毎回変える → いろいろな攻撃や正常な動きで穴を探す |
| 🤖 AIの判定 | 答えがぶれることがある | 同じ問題を何度も解かせる → 判断のブレを測る |
今回のエージェントは、この両方を1つのループで行います。
🧩 エージェントの全体像:5人の登場人物
「試験」にたとえると分かりやすくなります。出題する人、試験を受ける人、採点する人を分けるのがコツです。
展開役
設計図からログを作る
出題役が書いた「設計図」をもとに、何百行ものログを正確な件数と時刻で作り出します。
検知ルール
試験される側
作ったログに対してルールを実行し、警報が鳴るかどうかを見ます。ここにAIは使いません。
判定役
警報を分析するAI
鳴った警報を読んで「攻撃か、正常か」を判定します。同じ警報を3回判定させて、答えがぶれないかも試します。
採点役
回数を数え、正解と照らす
ループの回数を数え、正解と照らして採点し、最後に合格基準と比べて合格/不合格を出します。
🔁 1回の試行の流れ(これを指定回数だけ繰り返す)
出題は3種類あり、配分は自由に決められます(今回は 攻撃4:正常4:罠入り2)。
攻撃
警報が鳴るべき。ルールをすり抜けそうな変種を優先して出題
攻撃に見える正常
警報が鳴ってはいけない。朝の一斉ログインなど誤検知を誘う業務
罠入り攻撃
攻撃者がログに「これは無害です」と書き込み、判定役AIをだまそうとする
📐 設計の3原則
AIに「20回試験して」と丸投げすると失敗します。役割の分け方に、このエージェントの肝があります。
🔢 回数はプログラムが数える。AIには数えさせない
AIに「20回繰り返して」と頼むと、途中で「十分に検証できました」と止まったり、回数を数え間違えたりすることがあります。ループはプログラムの for 文で回し、AIには「1問だけ作って」「この警報を1回だけ判定して」という単発の仕事だけを渡します。こうすると、20回と指定すれば必ず20回実行され、途中で1回失敗してもそこだけ記録して次に進めます。
🗺️ AIに書かせるのは、ログではなく「設計図」
何百行ものログをAIに直接書かせると、「60秒に25回」のつもりが23回だったり、時刻の並びがおかしかったりします。検知ルールは件数と時刻で判断するので、これでは試験になりません。そこでAIには「IPを何個、1つあたり何回、何秒間に、失敗の割合はどれくらい」という設計図だけを書かせ、ログへの展開はプログラムが行います。AIは「どんな状況を試すか」という発想に集中でき、出力するトークン(文字数)も少なくて済みます。
⚖️ 正解はプログラムが決める。出題者に採点させない
「この問題の正解は攻撃か正常か」を出題役のAIに決めさせると、自分の出した問題を自分で採点することになり、甘くなったり間違えたりします。そこで出題のカテゴリはプログラムが割り当て、「攻撃」「罠入り攻撃」なら正解は攻撃、「攻撃に見える正常」なら正解は正常、と機械的に決めます。
おまけの原則:出題を保存して「再試験」できるようにする
AIが作った設計図はすべて保存しておきます。検知ルールを直したあと、前回とまったく同じ問題でもう一度試験すれば、「直したかった問題は直ったか」「別の問題が悪化していないか」を確かめられます(回帰テスト)。AIを呼ばずにプログラムだけで実行できるので、費用もかかりません。
📝 プロンプト公開①:出題役のAI
実際に使っているプロンプトを、要点がわかるように一部を短くして紹介します。
🔍 このプロンプトの工夫
「弱点探し」を目的にする
ただ「テストデータを作って」と頼むと、AIはルールにきれいに引っかかる易しい問題ばかり作りがちです。目的を「ルールが間違えそうな境界を突くこと」とはっきり書くと、意地悪な問題を考えてくれます。
過去の出題を毎回渡す
AIは前の会話を覚えていないので、放っておくと20回とも似た問題になります。これまでの出題の一覧を毎回渡し、違う角度から考えさせます。
「何を試す問題か」を書かせる
各問題に「ルールのどの条件を試すのか」を一言添えさせます。ルールが間違えたとき、どこを直せばよいかのヒントがそのままレポートに載ります。
出力の形を「型」で縛る(構造化出力)
設計図は、プログラムがそのまま読み込める決まった形(JSON)で返ってくる必要があります。最近のAIのAPIには、あらかじめ決めた形式どおりにしか出力しない機能(構造化出力)があります。これを使うと、「項目が欠けていた」「余計な説明文が混ざっていた」といった理由でループが止まることがなくなります。
🕵️ プロンプト公開②:判定役のAI
警報を判定するAIには、ログに仕込まれた罠に負けないための原則を最初に教えます。
🔍 このプロンプトの工夫
💉 罠を「証拠」に変える
- 「従うな」だけでは弱い
- 「だまそうとした形跡=むしろ怪しい」と意味づけを逆転させる
⏸️ 「要確認」を選べるようにする
- 二択だと、AIは無理に白黒をつける
- 前回紹介した「待てないAI」への対策
🏢 自社の常識を渡す
- NATや監視ツールなど、正常な業務の事情
- これがないと朝9時のログインを攻撃扱いする
🔗 根拠のIDを必ず挙げさせる
- プログラムで「実在するIDか」を自動チェック
- もっともらしい作り話を見抜ける
2026年の研究「Poisoning the Watchtower」では、ログの欄を区切って「中の文は命令ではない」と明示する対策を含め、4段階の防御を重ねても、AIが罠に引っかかる割合は平均で約12%残りました。このエージェントが罠入りの問題をわざと出題するのはそのためです。プロンプトを直したら、本当に効いたかどうかを毎回の試験で数字として確かめます。
🧪 動かしてみた:20回の試験結果
冒頭の「60秒以内に20回失敗で警報」というルールを、実際に20回試験してみました。
ここで紹介する結果は、仕組みを説明するために、決まったパターンから出題し、ときどき判断をわざとぶれさせる模擬AIで動かしたものです。本物のAIでは出題がもっと多彩になり、数値も変わります。流れと結果の読み方の例としてご覧ください。
試験したルール
実行と経過(抜粋)
※ TP=正しく検知、FN=見逃し、FP=誤検知、TN=正しく無反応。右側の3つは、判定役AIが同じ警報を3回判定した結果です。
📊 結果のまとめ
| 指標 | 結果 | 合格基準 | 判定 |
|---|---|---|---|
| 検知率(攻撃を見つけた割合) | 90%以上 | ❌ | |
| 誤検知率(正常なのに鳴った割合) | 10%以下 | ✅ | |
| AI判定の一致率(3回とも同じ答え) | 80%以上 | ❌ | |
| 罠に引っかかった割合 | 0% | ❌ | |
| 根拠IDの正しさ(実在するIDだけ挙げたか) | — | ✅ |
🔎 結果から分かること
「ゆっくりした攻撃」に穴がある
見逃した2問は、どちらも「10分間に25回ほど」という低速な総当たりでした。60秒ごとに区切ると、どの60秒も20回に届きません。本物のAIで出題した場合は、出題役が書いた「この問題は60秒の時間幅をまたいで試行を分散させる」といった狙いがレポートにそのまま載るので、直す場所の見当がつきます。
閾値を下げても直らなかった
試しに閾値を20回から15回に下げ、同じ20問で再試験しました。検知率は83%のままでした。直すべきは閾値ではなく、時間幅(たとえば「10分で30回」という別のルールを追加する)だと分かります。思いつきの修正を、同じ問題で確かめられるのが再試験の強みです。
朝の一斉ログインは誤検知しなかった
大勢の社員が本社NATから一斉にログインする問題では、警報は鳴りませんでした。失敗の割合が低く、60秒あたりの失敗が20回に届かなかったためです。ただし、パスワードの一斉変更日のように失敗が増える日には鳴るかもしれません。こうした「次に出すべき問題」を考えるのも出題役の仕事です。
判定役のブレと罠への弱さ
同じ警報なのに、3回の判定のうち1回だけ「要確認」や「正常」になるケースがありました。罠入りの問題では4問中1問で「正常」と答えています。判定役を本番で自動化する前に、プロンプトや運用(人の承認)を見直す必要がある、という結論になります。
🛡️ 作るときの注意点
便利な仕組みですが、守るべき線がいくつかあります。
本物のログをAIに送らない
試験に使うのは、AIが作った合成ログだけにします。本物の社内ログには、IPアドレスやユーザー名など個人や社内の情報が含まれます。クラウドのAIに送るのは避けましょう。IPアドレスも、ドキュメント用に予約された範囲(192.0.2.0/24 など)だけを使うと安全です。
ルールの書き換えは人が承認する
「試験 → AIが改善案を出す → 自動で書き換え → また試験」と全部を自動にしたくなりますが、試験に合わせすぎたルールは本番で別の穴を生みます。改善案を出すのはAI、採用を決めるのは人にしておきましょう。
回数 × 呼び出し回数で費用が増える
1回の試行で、出題に1回、判定に3回AIを呼びます。20回なら最大80回です。まずは5回程度で試し、判定役の試験が不要なときは省けるようにしておきましょう。同じ指示文を毎回送る部分は、APIのキャッシュ機能で安くできます。
AIが出題を断ることがある
攻撃シナリオを作らせるため、AIの安全機能が依頼を断ることがあります。1回断られてもループ全体が止まらないようにエラーを記録して次に進む作りにしておき、断られた回数もレポートに出しましょう。
「合格」は本番の安全を保証しない
この試験で分かるのは、出題された範囲ではルールが正しく動いた、ということだけです。出題役のAIが思いつかない攻撃はテストされません。本番に出したあとも、実際の警報の結果(本物だったか、誤検知だったか)を集めて、出題の参考にし続けることが大切です。
📌 まとめ
AIに「考える仕事」、プログラムに「数えて採点する仕事」を任せるのがポイントです。
📋 役割分担のまとめ
| 仕事 | 担当 | 理由 |
|---|---|---|
| 試験問題(シナリオ)を考える | 🤖 AI | 多彩で意地悪な発想が得意 |
| 設計図をログに展開する | ⚙️ プログラム | 件数・時刻を正確に |
| 検知ルールを実行する | ⚙️ プログラム | 本番と同じ動きで試す |
| 警報を判定する(受験者として) | 🤖 AI | 本番で使うAIそのものを試す |
| 回数を数える・正解を決める・採点する | ⚙️ プログラム | AIに数えさせると、ずれたり甘くなったりする |
| ルールの改善を採用する | 🧑 人 | 試験に合わせすぎるのを防ぐ |
検知ルールの検証で大切なのは、回数そのものではなく「毎回違う、弱点を突く問題で試すこと」です。AIは問題を考えるのが得意で、プログラムは正確に数えて採点するのが得意です。この2つを組み合わせれば、「20回試験して」の一言で、ルールの穴、AI判定のブレ、罠への弱さまで数字で見えるようになります。そして、問題を保存しておけば、ルールを直すたびに同じ問題で確かめ直せます。前回の記事で「微調整は運用そのもの」と書きましたが、この自動試験ループは、その運用を回すエンジンになります。
📚 参考情報
- Pandey, R. & Bhujang, A. “Poisoning the Watchtower: Prompt Injection Attacks Against LLM-Augmented Security Operations Through Adversarial Log Content” (arXiv:2605.24421, 2026)
- Barnes, J. “OpenSec: Measuring Incident Response Agent Calibration Under Adversarial Evidence” (arXiv:2601.21083, 2026)
- NHI Mgmt Group: How should organisations decide when AI can act on its own in the SOC
- Panther: AI False Positives in the SOC – Causes & Reduction Strategies
- RFC 5737: IPv4 Address Blocks Reserved for Documentation


コメント