コンテンツにスキップ

Live Secret Detection

Live Secret Detection 機能は、露出したシークレットが現在も有効かどうかを確認し、その潜在的なリスクを評価します。結果に応じて、issueの深刻度が引き上げられたり引き下げられたりします。

  • コードリポジトリ内の有効なシークレットを特定してフラグを立てる
  • 既にローテーション済みなど、もはや有効でないシークレットに関するノイズを削減する
  • 露出したシークレットに付与されている権限の範囲を確認する
  • 危険なシークレットに即時対応が必要な旨のマークを付け、セキュリティを強化する

特定と検証

Aikido は露出したシークレットを安全なエンドポイントに送信し、それが現在も有効かどうかを確認します。その結果、ログにAikidoからのIPアドレスが記録されることがあります。以下にAikidoのIPアドレスの一覧を示します。

  • 52.214.244.18
  • 18.202.209.180
  • 52.50.198.227
  • 52.51.98.186

権限の評価

Aikido はさらに一歩進んで、有効なシークレットの権限を確認します。これに基づいて、深刻度の引き上げにさらに細かな区別を設けています。以下を確認します。

  • 期限切れのシークレット
  • 読み取り専用スコープ
  • 書き込み/削除スコープ

プロバイダーごとに異なるチェックを行っています(例: GitHub Access Tokens、Sendgrid tokensなど)。確認してほしいシークレットがあればお問い合わせください。

シークレット検出における誤検知

Section titled “シークレット検出における誤検知”

テストファイル、モックデータ、設定例をフィルタリングして誤検知を最小限に抑えるよう努めていますが、一見本物に見えるシークレットが誤ってフラグ付けされることがあります。これは、特定のパターンがプログラム的には判別不可能であるために発生します。

ドキュメントやコメント内のシークレット例 開発者がコードコメントやドキュメントに、実際のシークレットと全く同じパターンに一致するAPIキーの例を含めることがあります。

  • 実際のシークレット: SENDGRID_API_KEY = “SG.actualR3alK3y_1234567890abcdef”
  • 例のシークレット: SENDGRID_API_KEY = “SG.exampleK3y_1234567890abcdef”

どちらも同じフォーマットに従っているため、パターン認識だけでは検証なしにどちらが本物かを判断できません。

無効化・ローテーション済みのシークレット Live Secret Detection は、シークレットが現在も有効かどうかを確認することでこれらを減らす助けになりますが、検証が不可能なエッジケースも存在します。

テスト環境のシークレット テスト環境でのみ使用され、本番環境のパターンに一致するものの、実際のセキュリティリスクは無いシークレットです。

誤検知に遭遇した場合は次のようにしてください。

  1. コンテキストを確認する - テストファイル、ドキュメント、サンプルコード内のものか
  2. 関連するAPIなどの方法でシークレットが有効かどうかを検証する
  3. 誤検知であることが確認できた場合は、今後のアラートを防ぐためにissueをignoreできます

UIでissueをignoreする方法、またはコードコメントを使ってシークレットをignoreする方法があります。