0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【技術深掘り】Claude Code × Sysdig リモートMCPで「ランタイム脅威の調査→対処」を回す

0
Last updated at Posted at 2026-06-16

はじめに

Claude Code に追加された Sysdig Secure のリモート MCP サーバと、プラグインとして配布されるAgent Skill を使って、ランタイム脅威の 調査(investigate)→ 対処(remediate) を実際に回してみました。

本記事は「動かしてみた」体験記の技術深掘り版です。実際に呼ばれた MCP ツール、SysQL、API レスポンス、そしてエージェントが内部で行っている可用性プリフライトブラストradius解析のロジックまで踏み込みます。

対象読者:

  • MCP(Model Context Protocol)でセキュリティ製品を AI エージェントに繋ぐ構成に興味がある人
  • AI に「本番環境への対処」をどこまで・どう安全に任せられるか気にしている人
  • Sysdig の Response Actions / Threats Engine / SysQL を API レベルで知りたい人

1. アーキテクチャ全体像

今回の登場要素は、大きく 「ローカル」「リモート」 の2領域に分かれます。

architecture.drawio.png

ポイントは、MCP サーバがリモート(Sysdig がホスト) であること。ローカルで stdio プロセスを起動する従来型ではなく、https://secure.sysdig.com/mcp/secure という HTTP エンドポイントに OAuth で認証して繋ぎます。スキル本体はプラグインとしてローカルにあり、MCP 経由で Sysdig の実データを読み・対処を実行します。


2. investigate スキルの内部動作

ユーザーがやることは、たった一言 「ランタイムの脅威を調べて」 とお願いするだけです。あとはスキルが、人間のアナリストが手でやるような調査を、順番に自動で進めてくれます。その流れは大きく4ステップ。

  1. 準備(Preflight) — ちゃんと Sysdig に繋がっているか確認する
  2. 洗い出し(Surface) — いま起きている脅威を一覧にする
  3. 深掘り(Investigate) — 選んだ脅威の「攻撃の流れ」を組み立てる
  4. 報告(Report) — 読めるレポートにまとめる

以下、それぞれの裏側で何が起きているかを、順に見ていきます。

ステップ1:準備 — 「そもそも繋がってる?」を確かめる

調査を始める前に、スキルはまず 「Sysdig にちゃんとログインできているか」 を確認します。ここが面白くて、わざわざ問い合わせを送らずに判定します。

仕組みはこうです。Sysdig に未ログインだと、スキルから見える道具(ツール)は「ログイン用の道具」だけ。ログイン済みになって初めて、「顧客設定を読む」「脅威を一覧する」といった本来の道具一式が見えるようになる。つまり、今どの道具が手元にあるかを眺めるだけで、ログイン状態がわかるわけです。本物のデータには一切触れずに前提チェックを済ませる、行儀のよい設計です。

次にスキルは 「前回の調査の続きはある?」 と自分のメモ帳を確認します。今回は初回なので、メモは空っぽ。スキルは「まっさらな状態から始めよう」と判断して先へ進みます。

💡 このメモ帳(共有ステート)は、過去に調べた事案や「報告先は Jira がいい」といったユーザーの好みを覚えておく仕組みです。2回目以降はここを読んで、いちいち同じことを聞かずに済ませます。

ステップ2:洗い出し — いま起きている脅威を新しい順に

スキルは Sysdig に 「今ひらいている脅威を、新しい順に5件見せて」 と頼みます。返ってきたのは5つの脅威グループ。ここでスキルが気を利かせます。

5つのうち4つが、5月29日の同じ数時間内・同じクラスタ・同じコンテナイメージで起きていました。バラバラのアラートに見えても、時間と場所と道具立てが揃っていれば、それはひとつの攻撃キャンペーンの別々の場面である可能性が高い。スキルはこれらを束ねて「ひとつのインシデント」として扱うことにしました。アラートを「点」ではなく「線」で読む、アナリストの第一歩です。

ステップ3:深掘り — 「攻撃の流れ」を組み立てる

ここからが本番。スキルは束ねた脅威グループについて、**「このインシデントに関わったリソースは?」「具体的にどんな脅威が含まれる?」**と Sysdig に細部を問い合わせ、現場の輪郭を描いていきます。判明したのは次のような事実でした。

項目 これは何か
クラスタ takao-ocp-pov(OpenShift) 攻撃が起きた Kubernetes 環境
namespace sysdig-dr-test その中の区画。名前からして検証用
関与した Pod drift-sandbox / crypto-test 攻撃の舞台になった2つのコンテナ
イメージ nicolaka/netshoot:latest ネットワーク調査用の万能ツール箱イメージ
クラウド AWS(東京リージョン) 土台になっているクラウド環境

攻撃の流れを組み立て、いまの状況まで押さえる

スキルは、複数の手がかりを突き合わせて攻撃のストーリーを組み立てます。検知ルールの構成と、Sysdig の AI が残してくれていた自然言語の振る舞い説明(例:「curlxmrig をダウンロードした」)。これらを重ね合わせることで、「何が・どの順で・どこで起きたか」がくっきりと浮かび上がります。

さらにスキルは、過去の再構成だけで満足せず、「この攻撃、今もまだ続いてる?」という確認も入れます。直近7日間に高重大度のイベントが出ていないかを調べたところ、結果はゼロ件。つまりこの攻撃は5月29日のひと吹きで、すでに沈静化していると裏付けが取れました。過去の再構成と現在の状況、その両方を押さえる手堅さが頼もしい。

攻撃に「名前」を付ける(MITRE ATT&CK)

最後にスキルは、検知ルールと振る舞いから、この攻撃が攻撃手法の世界標準カタログ「MITRE ATT&CK」のどれに当たるかを割り当てます。今回の主役は Impact(T1496:リソース乗っ取り=クリプトマイニング)、脇を固めるのが Execution(T1059:/tmp への不正バイナリ投下・実行)。この“ラベル”が、関連する別の攻撃を探す手がかりにもなります。

組み上がった攻撃フロー

こうして再構成された攻撃の流れが、下の図です。横軸が MITRE ATT&CK のフェーズ(①初期アクセス・実行 → ②ツール転送 → ③実行・防御回避 → ④影響)縦の2レーンが攻撃の舞台になった2つの Pod。外部インフラからダウンロードした道具を /tmp で実行し、最終的に暗号通貨マイナー xmrig を動かす——という一連の流れが、時間軸に沿って追えます。

attack-flow.drawio.png

Time (UTC) Where Action
03:50:21 drift-sandbox Attach/Exec Pod + Terminal shell
03:50:21 drift-sandbox Ingress Remote File Copycurlbusybox 取得
03:50:23 drift-sandbox Drop and Execute /tmp Binary(HC) + Execution from /tmp
04:01–04:09 drift-sandbox Binary Drift ×8 (Crit)
06:11:16 crypto-test Attach/Execcurlxmrig 取得
06:11:16.9 crypto-test Malware Detection + Binary Drift

いちばん感心した「誠実さ」

この調査でいちばん感心したのは、スキルがアラートを鵜呑みにしなかったことです。

実は Sysdig の AI は、/tmp バイナリ投下の方に 「正規のテスト活動を検出(Legitimate Testing Activity Detected)」 という、むしろ良性寄りの注釈を残していました。区画の名前は sysdig-dr-test、コンテナ名は drift-sandboxcrypto-test。どう見ても**検証・デモのために意図的に作られた“攻撃のリハーサル”**です。

スキルはここを見抜き、レポートにこう書きました——「検知そのものの正確さは満点(5/5)。ただし、これが本物の攻撃者である確からしさは低い」。真っ赤なアラートに飛びつかず、状況証拠から温度を補正する。誤報対応に消耗しがちな現場で、これがどれだけありがたいか。

報告:そのまま使える2つのレポート

最後にスキルは、調査結果を2つのファイルに書き出しました。チケットにそのまま貼れる Markdown 版と、ブラウザで開くと先ほどの攻撃フロー図が絵として表示される HTML 版です。チャットに出すのは2段落の要約だけで、長い証拠や表はファイル側へ。**「人が読むのは要約、深掘りはファイル」**という割り切りが心地よい。

そして調査の記録を自分のメモ帳に保存し、次の「対処」担当へバトンを渡します。ここからが第2幕です。


3. remediate スキルの内部動作

調査が終わると、バトンを受け取った「対処」スキルが動き出します。ここでのユーザーの役割は、提案された対処を承認するか断るかを選ぶこと。スキルは決して、勝手にコンテナを止めたり消したりはしません。いきなり手を出さず、まず現場を調べ、できることを並べ、ひとつずつ許可を取る——この慎重さが最大の特徴です。

まず「自分に何ができるか」を確かめる

対処を提案する前に、スキルは Sysdig に **「この環境で打てる対処アクションの一覧」**を尋ねます。返ってきたのは全部で 24種類。これらは効く場所によって3つに分かれます。

効く場所 アクションの例 ざっくり言うと
ホスト(サーバ単位) プロセス強制終了、コンテナの kill / 一時停止、不審ファイルの隔離 動いている“もの”を直接止める
クラスタ(Kubernetes 単位) Pod 削除、ワークロード再起動、ネットワーク隔離 K8s のレイヤーで封じ込める
クラウド(AWS 単位) IAM ユーザ/ロールの隔離、公開リソースの非公開化 クラウドの権限・露出を絞る

ただし「一覧に載っている=今すぐ実行できる」ではありません。スキルはここでも楽観しません。たとえば、ログ取得などの一部アクションは保存先ストレージが設定済みでないと動きません。確認すると、この環境ではストレージが未設定。スキルは「これらは出しても失敗する」と判断し、提案の段階で候補から外しました。さらに過去の実行履歴もゼロだったため、「本当に動くかは実際に試すまで断定しない」と慎重に構えます。

真骨頂:「壊す前に、対象が生きているか確かめる」

ここが対処スキルの白眉です。破壊的な操作をする前に、読み取り専用で現場を偵察します。

最初の確認は 「自分の手元の操作対象が、本当に正しいクラスタを向いているか」。調べると、ローカルの接続先は調査対象の takao-ocp-pov とは別のクラスタでした。スキルは即座に「これで kubectl を動かしたら、無関係なクラスタを誤操作してしまう」と察し、kubectl を使う許可は求めませんでした。事故の芽を自分から摘む判断です。

次に、Sysdig のデータベースに **「攻撃当時の Pod は今も存在する?」と問い合わせます。ここで Sysdig 独自の問い合わせ言語の書き方が少し特殊で、最初の2回は文法エラーで弾かれました。スキルは無理に手書きを続けず、「自然言語から正しい問い合わせ文を生成してくれる補助機能」**に正しい形を作らせ、それで取得に成功——いわば、道具の使い方を道具自身に教わったわけです。

返ってきた答えが決定打でした。現在その区画にいる Pod は media-sandboxshell-sandbox の2つ。攻撃に使われた drift-sandboxcrypto-test も、もう存在しない。攻撃当時のコンテナはとっくに撤去され、別の検証用 Pod に入れ替わっていたのです。

結論:「直すものは無い」と言い切る

対象が消えている以上、何を実行しても意味がありません。スキルは、提案候補を一つひとつ正直に×にしていきました。

対処の分類 判定 理由
コンテナを止める/隔離する系 ❌ 実行不能 止めたいコンテナがもう存在しない
Pod 削除・ネットワーク隔離系 ❌ 実行不能 対象の Pod が存在しない
ログ・キャプチャ取得系 ❌ 実行不能 保存先ストレージが未設定
クラウド権限の隔離系 ⚠️ 見送り 隔離すべき具体的な不正アカウントが特定できていない

そしてスキルは、破壊的な対処を1つも実行せずにクローズしました。多くのツールは「とりあえず押せるボタン」を並べたがりますが、このスキルは違います。空振りに終わる操作を提案しない。対象が無ければ「無い」と言い切る。 地味ですが、これは高度な振る舞いです。

最後に残した助言も的確でした——「対処より、整理を」。これは検証環境の意図的なリハーサルなのだから、該当の脅威を整理(アーカイブ)するか、この区画を「検証用」として通常の監視対象から外せばいい、と。本物のインシデントなら同じ流れで封じ込めまで走れる。“ただの演習”なら、無駄に手を動かさず片付け方を教えてくれる。この使い分けの賢さこそが価値でした。


4. 技術的に良くできていると感じた設計

最後に、エンジニア視点で「うまい」と思った設計上の工夫を5つ挙げておきます。

  • 問い合わせゼロで前提チェック:ログイン状態を、実際にAPIを叩かず「今どの道具が見えているか」だけで判定する。副作用なしで安全に確認できる。
  • 情報源を柔軟に使い分ける:検知ルール・AIの振る舞い説明・自動生成された問い合わせなど、複数のデータソースを突き合わせて結論まで到達する。
  • 「できること」を実行前に確定:打てる対処・過去の実行履歴・ストレージ設定を事前に照合し、失敗するアクションを最初から提案しない。
  • 承認の粒度が細かい:調べるだけ(読み取り)はノーゲート、環境を変える操作は1件ごとに明示的なYeskubectl やクラウドの許可もその場限りで、保存しない。
  • 推測より証拠:Pod が生きているかを推測せず問い合わせで確認し、対処が打てるかも楽観せず確認する。Evidence > assumptions を徹底している。

5. まとめ

今回の検証は、**「AI エージェントにセキュリティ運用をどこまで・どう安全に任せられるか」**の良いケーススタディになりました。

  • investigate は読み取り専用で深く調べ、文脈で温度を補正し、再利用可能なレポート(Markdown / Mermaid 入り HTML)を残す。
  • remediate は破壊する前に偵察し、能力を事前確定し、「直す対象が無い」なら正直にそう言う

派手なアクションは1つも実行されていません。それでも、「これはキャンペーンだ/これは検証環境だ/もう対象は無い」という判断こそが、現場の時間を最も節約します。AI エージェント × セキュリティの価値は、実行力よりも安全装置付きの判断力にある——そう実感した2連発でした。


環境:Claude Code + Sysdig Secure リモート MCP サーバ(secure.sysdig.com/mcp/secure)/ プラグイン sysdig-secure v0.3.0

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?