本文へスキップ

シークレット混入スキャン

Secret Scanner

貼り付けたコード・ログ・設定から、APIキー・トークン・秘密鍵をエントロピーの目安で洗い出します。

鍵はコミットされ、課題に貼り付けられ、ログに書き出されます。そうなった瞬間、誰かが気づいたかどうかに関わらず、それは公開されています。ここでは貼り付けたコード、ログの吐き出し、設定ファイルを読み、資格情報らしき文字列を指し示します。まず既知の提供元ごとの形式で、次に、形式のまったくないものについてはエントロピーで探します。

🔒 ブラウザの中だけで動きますsecretsscanapi-keyaudit
検査

入力している間、このタブのワーカーが検査します。

高エントロピー検出
1文字あたり 4.0ビット

英語の散文は文書全体で見ると 4.0 前後、単語ひとつなら 3.0 を下回ります。16 進数は構造上 4.0、base64 はおよそ 5.5、62 文字の無作為な文字集合は 5.95 に近づきます。

24

16 が下限です。それより短いものは色コードや UUID の断片で、見つける価値のある資格情報がそこまで短いことはありません。

提供元のパターン 48個は常に有効で、AWS・Google Cloud・GitHub・Slack・Stripe・OpenAI・Anthropic・Twilio・SendGrid・npm・PyPI、秘密鍵、データベース URI、Kakao、Naver、Toss Payments を見ます。

このタブから出るものは何もありません。とくに、ここで見つかった鍵が生きているかどうかを提供元に問い合わせることはしません。それはソースにあるすべての資格情報を、あなたの端末から第三者に渡す行為であり、秘密情報スキャナーが防ぐために存在する被害そのものです。オフラインの検算はここでの計算だけです。提供元が公開している形式を読み、GitHub のトークンなら GitHub がトークンに埋め込んだチェックサムまで確かめます。結果には伏せ字のプレビューしか出ないので、そのままチケットに貼っても安全です。

使い方

  1. テキストを貼るか、ファイルを置きます

    テキストならどれでも構いません。ソース、`.env`、CIのログ、設定の吐き出しです。ワーカーの中で走るので、大きな貼り付けでもページは固まりません。

  2. まず形式で一致したものを読みます

    既知の接頭辞に当たったもの、`AKIA…`、`ghp_…`、`sk-…`、PEMブロックのヘッダーは、ほぼ確実です。何よりも先に手を打つべきはそれらです。

  3. エントロピーで当たったものは候補として扱います

    見覚えのある形を持たない、エントロピーの高い文字列です。鍵かもしれませんし、ハッシュ、UUID、圧縮された資産、base64の画像かもしれません。どの規則が反応したのかを表示するので、自分で判断できます。

  4. 差し替えてから、片づけます

    漏れた鍵は漏れています。コミットを消してもログを直しても、公開されたという事実は取り消せません。まず失効させて発行し直し、履歴の整理はそのあとです。

よくある質問

何も出なければ、秘密は入っていないということですか。

いいえ。そして、これが理解しておく価値のある限界です。見つけられるのは、知っているパターンと、無作為に見える文字列だけです。エントロピーの低い社内独自の鍵の形式、単語のように読めるパスワード、2つの変数に分けて書かれた資格情報は、どれもそのまま素通りします。

その鍵がまだ使えるかどうかも確かめますか。

確かめられませんし、確かめるつもりもありません。鍵の有効性を確かめるとは、提供元に対してその鍵を使ってみることであり、あなたの資格情報を第三者に送ることです。このページの目的とは正反対です。鍵が生きているかどうかを言えるのは、それを発行した側だけです。

コードはアップロードされますか。

いいえ。走査はブラウザの中のワーカーで行われます。秘密がいちばん入っていそうなファイルを出してくれと頼む道具が、それをどこかへ送ってもいるべきではありません。

圧縮したバンドルの中身が全部引っかかります。

圧縮された出力は密で、作りからして無作為に見えます。エントロピーの規則が反応するのは、まさにそこです。ビルドの成果物ではなくソースを走査するか、形式にもとづく規則だけに絞ってください。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。