最近、不正アクセスが流行ってる。

世の中に脅威検知とか脆弱性検知とかのソリューションは山ほどあるけれど、全ての組織でそれらの恩恵に与るわけじゃない。 導入の手間とか、コスト面とか、データポリシーとか、まぁそこらへんの色々。

というわけで、最低限何かしらのLLMは使用するものの、今現在使っているツールを使って、システムに不審な点がないかをチェックする仕組みを考えてみる。

とはいっても物自体はシンプルで、手持ちのツールで以下のパイプラインを組むだけ。

  1. スクリプトなどでシステムのイベントや状態を収集する
  2. 収集結果を外部ストレージに退避する
  3. 定期的にログを取得し、AIに不審な点を分析させる
  4. 分析レポートを作成し、社内に共有する

なお、対象はクラウドプラットフォームに限ってない。

状態収集

まず、「1. スクリプトなどでシステムのイベントや状態を収集する」について。

例えば、ホストなら以下のようなものを集計する。

すでに集計済みのものであれば、 それももちろん使える。
bpftrace とか使うと、もっと細かいログとかも残せそう(ログ容量やばいかもだけど)

退避

後処理するために、「収集結果を外部ストレージに退避する」。

S3とか、Google Cloud Storageとか、そういうオブジェクトストレージとかを想定。 独自のログ基盤があるなら、そこに送るでもいいし、ホストと隔離されていればどこでもいい。

「3. 定期的にログを取得し、AIに不審な点を分析させる」で扱いやすいところに置くのがポイントかなぁ。

分析

「3. 定期的にログを取得し、AIに不審な点を分析させる」ということで、↑で退避した収集結果を、どこか隔離された環境でダウンロードして、そこでLLM使って分析する。

定期的、なので、LLM自体に高度な自律性は必要ない。

GitHub Actionsでもいいし、既存のワークフロー基盤でもいいし、どっかのホストのcronとかでもいい。

できれば、ダウンロードしてきた収集結果だけではなく、システムを構成するコードベースやアーキテクチャが理解できる資料やIaCコードがあると望ましい。

報告

そして、「4. 分析レポートを作成し、社内に共有する」。

LLMに分析した結果を何かしらのドキュメント形式にアウトプットさせて、それをSlackとかメールとかドキュメンテーションツールとかに投稿させる。 これによって、分析結果を人間が確認して、追加のアクション可否を判断する。

脅威度にラベルをつけさせて、一定以上だったら担当者に通知、みたいなこともして良いかもしれない。 これはtool callingより、ハーネス側の実装として組み込みたい。
(= LLMエージェントが通知APIをcallするのではなく、レポート内容を見てHarness側が決定的手法で判断する)

大体、こんな感じ。

課題

もちろん、この程度の仕組みだと課題は少なくない。

あとまぁ、他にも色々。

おわりに

これで完全とは思ってない。でも、何もやらないよりはマシ。何か気になることがあった時に毎度調査するのも手間だし。

むしろ、今まで見えてなかったものがAIを活用することによって見えてくるかもしれない。 調査スクリプト自体をAIが診断してもいいし、どのような監視項目が欠けているかのアドバイスを求めてもいい。

仮に攻撃する側がAIを活用しているとしたら、防御側でもAIを活用することで対抗しないとやられるだけになってしまう。 この流れは一過性ではないはず。

いきなり大掛かりにせず、こんな感じの小さなAI活用から始めてみて、実際にAIを活用する防御がどんなもんかの知見を集めていくのがええんちゃうかなぁ。