ホーム › ブログ › 流出したキーの警報ベルに:KeyRotate が AI のログ、リポジトリ、Web ルートを見張るようになりました

流出したキーの警報ベルに:KeyRotate が AI のログ、リポジトリ、Web ルートを見張るようになりました

公開 2026-10-24

2026 年 10 月は、キーを管理する人にとって厳しい月になりました。Railway では、顧客の環境変数を保管するシステムに攻撃者が侵入し、その一部が復号されました。OpenCode Console では、旧システムへの侵入者が、ユーザが登録した OpenAI・Anthropic・Google のキーを読み取った可能性があります。STUDIO は、顧客が保存した API キーを第三者に読まれた可能性があると公表しました。お名前.com デスクトップクラウドでは、サーバに保存されていた取引口座のログイン情報が盗まれました。そして攻撃者は、Claude Code の出力を記録したログから見つけた GitHub トークンで LiteLLM のリリースパイプラインを乗っ取り、Claude・Codex・Gemini・Cursor のサインイン情報を集めるマルウェア入りのリリースを配布しました。

Black October10 月の PHP の重大な脆弱性は話の半分にすぎません。攻撃者が侵入したサーバで狙うのは、そこに保存された AI のキーです。 動画:Nate B Jones(AI News & Strategy Daily) · YouTube で見る

注目すべきは最後の件です。トークンを公開リポジトリに push した人はいません。コーディングエージェントがコマンドを実行し、そのコマンドがトークンを表示し、会話の記録がそれを残しただけです。会話の記録に入ったものはすでに AI プロバイダに送られており、Mac の上にも平文で残っています。しかも、認証情報を盗むマルウェアが探す場所を知っているフォルダにです。

KeyRotate はもともと、流出した「後」のためのツールでした。キーを置き換え、それを使っていたファイルをすべて更新し、古いキーは不要になるまで生かしておく。10 月 24 日ビルドの新しいバージョンは、その「前」を加えます。キーが紛れ込みやすい場所を見張り、あなたのキーがそこに現れたら知らせます。

ガード:すべての警告をひとつの画面に

新しいガードの画面は、キーが他人の手に渡ったおそれを示すサインを、深刻な順にまとめます。警告にはそれぞれ「今すぐローテーション」「キーを開く」「非表示」などの操作が 1 つ付くので、次に何をすべきか迷いません。情報源は次のとおりです。

サイドバーのバッジが警告の数を示し、概要画面のボックスには、ほかのボックスが扱わない警報が表示されます。

AI ツールのログ

KeyRotate は Claude Code・Codex・Gemini CLI・Qwen Code・OpenCode・Goose・Cline・Roo Code の会話ログと、AI プロキシのリクエストログなど、追加した任意の AI ログのフォルダを読みます。確認は 1 時間ごとで、最初の 1 回の後は新しい行だけを読みます。

保存済みのキーは値の完全一致で照合します。会話の記録の中で JSON エスケープされたパスワードの形にも対応します。それ以外のシークレットらしきものは Gitleaks のルールで見つけます。保存済みのキーが見つかった値をまだ使っていれば警報となり、ローテーションされるまで毎日繰り返します。ntfy や Gotify を設定していれば、スマートフォンにも届きます。

私たちはまず自分たちのマシンで試しました。Claude Code のログには、Anthropic・OpenAI・AWS・Stripe のキーや秘密鍵が残っていました。コーディングエージェントを毎日使っているなら、あなたのログにもあると考えておくのが無難です。

リポジトリ:すべてのブランチとタグまで

GitHub、Gitea/Forgejo(Codeberg や自前のサーバを含む)、GitLab、Bitbucket のアカウントを追加して見張るリポジトリを選ぶか、任意の HTTPS の git サーバのアドレスを指定します。KeyRotate は各リポジトリの全履歴(すべてのブランチとタグ)を Mac 上の自分の保存領域にコピーします。git のプロトコルを自前で話すので git のインストールは不要で、サンドボックスで動く App Store アプリにはこれが欠かせません。コピーはリークスキャンで検索し、最初のコピーの後は 1 日 1 回、変更分だけを取得します。

GitHub では、GitHub のシークレットスキャンのアラートも読み、GitHub が見つけたシークレットがまだ有効なら知らせます。アカウントへの接続に使うトークンも他のキーと同じく、KeyRotate の保管庫に保存します。

リポジトリの履歴にあなたのキーがあれば警報です。非公開のリポジトリならクローンできる全員が、公開リポジトリなら誰でも、そのキーを読めます。

Web プロジェクトと、ローテーションから漏れる .env

リークスキャンのフォルダを Web プロジェクトとして扱えるようになりました。「Web プロジェクトを追加…」には ~/Sites、/Library/WebServer/Documents、MAMP の htdocs、Herd へのショートカットがあり、Pancake Stack と FrontierStack では各サイトやバーチャルホストに新しい「KeyRotate で監視…」ボタンが付きました。Web プロジェクトで見つかったものは、Web サーバがそのファイルをどう扱うかで判断します。

Web プロジェクトは毎日再スキャンします。ほかのフォルダも「毎日再スキャン」で同じようにできます。

フォルダをスキャンするたびに、KeyRotate のターゲットになっていない .env ファイル、つまりローテーションで取り残されるコピーも一覧にします。「キーを読み込んでターゲットにする…」はキーを取り込み、各ファイルをターゲットにするので、次のローテーションでそのファイルも書き換わります。「古いキーを更新…」は古いコピーを現在のキーで上書きします。変えるのはその行だけで、バックアップも残します。

リリースを待たずに届く侵害アドバイザリ

Enfour はアプリのリリースとは別に署名付きのアドバイザリを公開しており、KeyRotate はアプリに組み込まれた鍵で署名されたものだけを受け付けます。10 月 24 日公開のアドバイザリ #4 は、LiteLLM 1.107.0、GitLab の CVE-2026-110264、Node.js の 10 月のセキュリティリリース、お名前.com デスクトップクラウド、FXTF、外為ファイネスト、ThreeTrader、SBI証券によるパスキー乗っ取りの注意喚起、インドステイト銀行のデータ流出、DigiD の予防的な PHP 停止を扱っています。それぞれが概要画面にチェックリスト付きのカードとして表示され、そのサービスにどのキーを保存していたかを尋ねます。このうち 2 件は詳しく書きました:お名前.com デスクトップクラウドの不正アクセスと STUDIO の不正アクセスです。

Mac の中で完結する仕組み

できないこと

はじめ方

  1. Mac App Store で KeyRotate をアップデートし、ガードを開きます。
  2. AI ツールのログの最初の確認が終わるのを待ちます。2 回目以降は新しい行だけを読みます。ほかに AI ログのフォルダがあれば追加します。
  3. リモートリポジトリでアカウントを追加し(トークンは KeyRotate の保管庫に保存)、見張るリポジトリを選びます。
  4. Web プロジェクトを追加するか、Pancake Stack や FrontierStack のサイトで「KeyRotate で監視…」を押します。
  5. スキャンが一覧にした .env ファイルを片付け、「ログイン時に開く」をオンにします。

あとは、ガードが知らせたキーごとに、ローテーションし、古いキーを使っている所がなくなったら失効させてください。KeyRotate でできることもご覧ください。

すべてをひとつの Mac アプリで。

FrontierStack は、ローカルでもフリート全体でも、スタック全体のインストール・監視・保護をひとつのネイティブ macOS アプリで行います。パスワードも鍵も AI には見せないから、安全で安心です。

FrontierStack をダウンロード

Apple 公証済み · 安全・安心 · macOS 13 Ventura 以降