2026年10月のPHP脆弱性「php2shell」について、Wizは、遠隔でコードを実行されなくても、PHPのプロセスのメモリからパスワード、トークン、APIキーなどの機密情報を読み出せることを示したと書いています。サーバーに置いたAPIキーは、そのサーバーの外にあるクラウドやSaaSへの鍵です。AIエージェントや業務システムの連携が増えるほど、こうした鍵は社内のあちこちに置かれていきます。

この記事の要点

  • php2shellでは、コード実行に至らなくてもメモリからAPIキーやトークンを読み出せることが示された
  • GitHubによると、漏れたシークレットを手作業で無効化するまでの平均は約40日、5件に1件は90日を超えた
  • 鍵の一覧、期限、持ち主、止め方を決めておくと、漏れたときに止めるまでの日数を縮められる

鍵はどこに置かれているか

  • サーバーの設定ファイルや環境変数: Webアプリケーションが外部のサービスを呼ぶためのキー
  • AIエージェントの設定: 社内のデータやSaaSにつなぐためのトークン
  • CI/CDの仕組み: クラウドへ自動で配布するための認証情報
  • ソースコードと履歴: 開発中に書き込まれ、そのまま残ったもの

GitHubのドキュメントは、リポジトリにコミットされたシークレットはGitの履歴の一部になり、最新のコミットから削除した後でもアクセスできるままになると説明しています。資格情報の漏えいへの対処には、ファイルを消すだけでなく、資格情報を取り消して置き換えることが必要だ、とも書いています。

漏れてから止めるまでの日数

GitHubは2026年10月7日のブログで、公開リポジトリへのpushが2026年第2四半期に5億7,400万件に達し、その0.47%でシークレットが検出されたと書いています。割合は大きく上がっていない一方、活動が倍になれば漏えいの件数も倍になります。そのうえで、シークレットを手作業で無効化するまでの平均は約40日で、およそ5件に1件は90日を超えた、と報告しています。開発者に「もっと注意して」と言うだけでは、この問題は解決できないとも書いています。

攻撃者にとっては、漏れた鍵が有効な期間が、使える期間です。漏えいを完全に防げない前提に立つと、止めるまでの日数を縮めることが現実的な対策になります。

AIエージェントに渡す鍵の考え方

英国NCSCは2026年5月のブログで、エージェント型AIについて、必要最小限のアクセスを必要な最短の時間だけ与えること、長く有効な認証情報を避けて可能な限り一時的な認証情報を使い、作業が終われば昇格したアクセスを取り消すことを挙げています。AIエージェントに渡す鍵は、人のアカウントより数が増えやすく、誰の持ち物かも曖昧になりがちです。

  1. 一覧にする: どのシステムとエージェントが、どの外部サービスの鍵を持っているか
  2. 持ち主を決める: 鍵ごとに、発行した人と、止める権限を持つ人を決める
  3. 期限を付ける: 期限のない鍵を減らし、作業ごとの一時的な鍵に置き換える
  4. 止め方を用意する: 漏れたと分かったときに、どの画面で、誰が無効化するかを手順にする

盗まれた鍵は、別の場所からの通信として表れる

盗まれた鍵が使われると、普段と違う場所や時間帯からの通信として表れることがあります。社内からの外向きの通信を観測しておくと、サーバーやAIエージェントが普段つながらない宛先へ通信し始めたことにも気づきやすくなります。当社の透過型UTM「ForceUTM」は、端末ごとの接続先を見える化し、AIエージェントの外向き通信を観測から始めて、許可した宛先以外へ段階的に絞る出口制御を備えています。拠点や中小規模のオフィスに置くことを想定した製品です。

参考資料

サーバーとAIエージェントの通信を見える状態にする

拠点や中小規模のオフィスで、サーバーやAIエージェントの外向き通信を観測し、絞っていく方法をご相談ください。

製品の詳細はForceUTMのサイトでご覧いただけます。

まずは相談する

相談無料・オンライン可・検討前でも大丈夫です