お問い合わせ

Home/Blog/技術ブログ/AI・テクノロジー

毎朝7時に「セキュリティ担当のAI社員」が出社してくる仕組みを作って、プロンプトごと社内に配った話

SI事業本部 部長

お疲れ様です!SI事業本部部長の島田です。

今回は、毎朝 AI に脆弱性情報を集めてもらって、社員に配る仕組みを作った話です。作った経緯と、AI に何を任せて何を任せなかったかを、私見を交えて言葉にしてみます。

「ものづくり」から「メンテ」の局面へ

ここ数日、PHP の脆弱性がニュースで連日取り上げられてます。シスナビでも自社のサイトを夜なべで更新しましたし、受託でお預かりしているお客様のシステムも急ぎで確認しました。

X でも見かけたのですが、IT 業界は「ものづくり」から「メンテ」の局面に移ったんじゃないか、という感覚があります。これから先、脆弱性が見つかって急いで対応しないといけないケースは、たぶん「頻度高く」起きる。

シスナビは SES がメインの会社ですので、客先に常駐して開発・QA・テストをやっているメンバーがたくさんいます。あわせて、受託案件と内製サービスも運用しております。お客様から「このニュース、うちは大丈夫?」と聞かれたときに、現場のメンバーが根拠つきで答えられる状態にしておきたい。自社や受託のシステムの穴も、なるべく早く見つけたい。

ですが、、、シスナビには専任のセキュリティ担当がいるわけではないのです。毎朝 JPCERT や IPA の注意喚起を全部読んで、自社のシステムと突き合わせる、、、人の手でやると絶対に続かんやつですよね。

AIに渡したのは「役割」と「禁止事項」

ということで、Claude に「株式会社シスナビの情報セキュリティ担当AI社員」という役割を与えて、毎朝7時に動くようにしました。

やってもらうことは大きく2つです。

  • 全社員向け: JPCERT/CC、IPA、CISA の悪用確認済みカタログ(KEV)、主要ベンダーの告知から、決めた基準で脆弱性を拾って Slack の公開チャンネルに配る
  • 社内限定: 受託案件と内製サービスのリポジトリを読み取り専用で取得して、本番で動いているバージョンと突き合わせ、影響があるかを判定して私にだけ送る

セキュリティ担当AI社員の毎朝7時の仕事。全社員向けは、公開されている脆弱性情報を集め、基準で1日最大10件に絞り、客先での伝え方をつけてSlackの公開チャンネルに配り、現場のメンバーが客先で根拠つきで話す。社内限定は、リポジトリを読み取り専用で取得し、本番の版数と照らし合わせて影響を判定し、島田にだけ届くレポートにまとめ、代表が承認して人が対応する。AIは認証情報を読まない、スキャンしない、コードを直さない、個人情報を書かない

拾う基準は、次の優先順で1日最大10件です。

  1. 悪用が確認されている
  2. CVSS 9.0 以上
  3. 広く使われる製品で 7.0 以上
  4. 生成AI・AIエージェント関連

全社員向けの配布には、1件ずつ「客先での伝え方」を1行で付けてもらってます。たとえば PHP の件なら「PHP で動く公開サーバがあれば、本番の版数を今日確認しましょう」。現場のメンバーがそのまま口に出せる言い方にしてもらうのがミソです。

プロンプトで一番行数を使ったのは、実は「やらないこと」の方でした。

  • 認証情報の中身は読まない、出さない(.env が Git で追跡されていないかは、ファイル名の存在だけ確認する)
  • 本番・テスト環境にスキャンや総当たりはしない(WAF に止められたり、通報されたりしますからね)
  • コードの修正、コミット、デプロイはしない。結果は報告だけ
  • 個人情報やお客様の情報はレポートに書かない
  • 対応するかどうかは、代表の承認を得て人がやる

AI に任せるのは「読む・突き合わせる・まとめる」まで。直すかどうか、正しいかどうかの判断は人間がやる。ここは今までの記事で書いてきたことと同じです。

前準備は「AIが読む資料」を置くこと

照合を毎日やってもらうには、エージェントが「このサービスは何で動いてるのか」を知っている必要があります。そこで朝イチで、各リポジトリの作業場にいる Claude に、こう頼んで回りました。

別のエージェントに毎日セキュリティチェックしてもらうから、技術スタックをまとめてリポジトリに登録しておいてほしい。

まとめてもらったのは、本番ブランチ、サーバー環境、暫定対策、ロックファイルに出てこないライブラリ、攻撃を受けうる箇所。これを docs/security/tech_stack.md という同じ名前で、受託案件1つと社内ツール3つに置きました。

4つで約20分です。人の手でまとめてたら、1つ半日はかかってたかもしれないですね。

初回は16件拾って、10件を配った

初回の配布では、直近1週間を対象に16件を拾い、上限の10件を配りました(悪用確認済み8件+広く使われる製品2件。残り6件は件数だけ)。PHP、国内で広く使われている WAF、VPN 装置、メールゲートウェイ、Chrome、Java など、客先で話題になりそうなものがちゃんと並んでました。

Slackの全社員向けチャンネルに届いた初回の配布。PHPとSiteGuard Server Editionの脆弱性について、CVE番号とCVSS、何が起きるか、対策、客先での伝え方、根拠のURLが1件ずつ並んでいる

1件ずつ「何が起きるか・対策・伝え方・根拠」が同じ型で並びます。根拠には JPCERT/CC やベンダーの告知の URL が付くので、客先で聞かれたらそのまま見せられます。

私にだけ届く社内限定のレポートは、こんな形です。お客様のシステムの構成や、攻撃が届く経路まで書いてあるので、ここでは書式がわかる部分だけ抜き出して、固有の値は黒く塗っています。

社内限定のリポジトリ照合レポートの抜粋。サービス名や対象、到達経路、推奨対応などの値は黒く塗りつぶしている。受託案件の指摘は重大度・対象・根拠・到達経路・回避策の有無・推奨対応・前回からの変化の順に並び、内製ツールのNext.jsの指摘は「解消」になっている

指摘ごとに「重大度・対象・根拠・到達経路・回避策の有無・推奨対応・前回からの変化」を揃えて書いてもらっています。毎日同じ型で出てくるので、直したものは翌朝のレポートで「解消」として上がってきます。

全社員向けのチャンネルは公開チャンネルにして、社内の全体チャンネルで仕組みとプロンプトをまるごと共有しました。「個人でも参考にして活用してみてください」と添えて。

今回のポイント

  • 役割と目的を先に書く。 「誰のために、何ができる状態にするか」(今回は「客先で根拠つきで話せる」)を書くと、出力の書き方まで揃う
  • 「やらないこと」を一番丁寧に書く。 読む・突き合わせる・まとめるまで。直す・送る・判断するは人
  • AIが読む資料を、リポジトリに同じ名前で置く。 エージェントを増やしても、読む場所が決まっていれば迷わない

まだテスト運用中なので、話半分に。ここから育てていきます。

脆弱性対応に迷っているお知り合いがいらっしゃったら、気軽に相談してください。それでは、また現場に出てきます!

技術ブログの一覧へ

Contact

まずは、話を
聞かせてください。

開発のご相談、協業、採用。どんなことでもお気軽にお問い合わせください。

お問い合わせ