流出したキーの警報ベルに: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 のサインイン情報を集めるマルウェア入りのリリースを配布しました。
注目すべきは最後の件です。トークンを公開リポジトリに push した人はいません。コーディングエージェントがコマンドを実行し、そのコマンドがトークンを表示し、会話の記録がそれを残しただけです。会話の記録に入ったものはすでに AI プロバイダに送られており、Mac の上にも平文で残っています。しかも、認証情報を盗むマルウェアが探す場所を知っているフォルダにです。
KeyRotate はもともと、流出した「後」のためのツールでした。キーを置き換え、それを使っていたファイルをすべて更新し、古いキーは不要になるまで生かしておく。10 月 24 日ビルドの新しいバージョンは、その「前」を加えます。キーが紛れ込みやすい場所を見張り、あなたのキーがそこに現れたら知らせます。
ガード:すべての警告をひとつの画面に
新しいガードの画面は、キーが他人の手に渡ったおそれを示すサインを、深刻な順にまとめます。警告にはそれぞれ「今すぐローテーション」「キーを開く」「非表示」などの操作が 1 つ付くので、次に何をすべきか迷いません。情報源は次のとおりです。
- AI ツールのログ(今回の新機能)
- Enfour の署名付きフィードによるベンダの侵害アドバイザリ
- 使用状況ウォッチ:Mac 上の何にも当てはまらない使われ方をしたキーを検知します。
- 毎日のキー確認:ベンダは、GitHub のシークレットスキャンなどで流出が報告されたキーを失効させます。ベンダが突然受け付けなくなったキーは、それ自体が手がかりです。
- フォルダとその git 履歴を調べるリークスキャン
- リモートリポジトリ(これも新機能)
サイドバーのバッジが警告の数を示し、概要画面のボックスには、ほかのボックスが扱わない警報が表示されます。
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 ルートにあり、実行されないファイル(
.env、.json、.sql、バックアップ、ログ):誰でもダウンロードできます。 - スクリプトとページ:訪問者全員のブラウザに送られます。
- PHP などのサーバ側コード:ハードコードされた状態です。公開はされませんが、コピー・バックアップ・リポジトリのたびに一緒に持ち運ばれます。
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 の中で完結する仕組み
- Mac の外に出るものはありません。例外は、選んだベンダと git ホストへのリクエストと、設定した場合の自前の ntfy/Gotify サーバへの通知だけです。アドバイザリの取得はダウンロードです。
- 結果にシークレットは残りません。記録するのは場所と日時、マスクしたプレビューだけで、シークレットそのものは保存しません。
- ログはその場で読みます。KeyRotate は AI の会話記録をコピーも送信もしません。リポジトリのコピーは Mac 上の KeyRotate の保存領域に置かれます。
できないこと
- 見張るのは動いている間だけです。ウインドウを閉じても KeyRotate はメニューバーに残り、15 分ごとと Mac のスリープ解除時に確認します。終了すると確認も止まります。ガードの「ログイン時に開く」で、Mac の起動とともに動かせます。
- ローテーションしても履歴は消えません。リポジトリの履歴や AI の会話記録にあるキーは、ローテーションの後もそこに残ります。無害にするのは、ほかに使っている所がないと確認してから、ベンダで古いキーを失効させることです。
- AI プロバイダはすでに受け取っています。会話の記録に現れたキーは、書かれた時点でプロバイダに送られています。Mac で見つけることはローテーションの合図にはなりますが、取り戻すことはできません。
- 見えるのは追加したものだけです。追加していないフォルダ・ログ・リポジトリはスキャンしません。使い始める前にほかへコピーされたキーは、その使われ方からしか分かりません。対応ベンダでの使用状況ウォッチと、ベンダ自身による拒否です。
はじめ方
- Mac App Store で KeyRotate をアップデートし、ガードを開きます。
- AI ツールのログの最初の確認が終わるのを待ちます。2 回目以降は新しい行だけを読みます。ほかに AI ログのフォルダがあれば追加します。
- リモートリポジトリでアカウントを追加し(トークンは KeyRotate の保管庫に保存)、見張るリポジトリを選びます。
- Web プロジェクトを追加するか、Pancake Stack や FrontierStack のサイトで「KeyRotate で監視…」を押します。
- スキャンが一覧にした
.envファイルを片付け、「ログイン時に開く」をオンにします。
あとは、ガードが知らせたキーごとに、ローテーションし、古いキーを使っている所がなくなったら失効させてください。KeyRotate でできることもご覧ください。
すべてをひとつの Mac アプリで。
FrontierStack は、ローカルでもフリート全体でも、スタック全体のインストール・監視・保護をひとつのネイティブ macOS アプリで行います。パスワードも鍵も AI には見せないから、安全で安心です。
FrontierStack をダウンロードApple 公証済み · 安全・安心 · macOS 13 Ventura 以降
