リアルタイムシークレット検出
Live Secret Detection 機能では、露出したシークレットがまだ有効かどうかを確認し、潜在的なリスクを評価します。結果に応じて、問題の重大度が上がるか下がるかします。
ユースケース
- コードリポジトリ内の有効なシークレットを識別してフラグを付けます。
- もはや有効ではないシークレット(例: すでにローテーション済み)のノイズを減らします
- 露出したシークレットに付与された権限の範囲を確認します。
- 危険なシークレットを即時対応対象としてマークすることで、セキュリティを強化します。
Live Secret Detection の仕組み
識別と検証
Aikido は露出したシークレットを安全なエンドポイントに送信し、まだ有効かどうかを確認します。そのため、ログに Aikido から来た IP が表示される場合があります。以下は Aikido の IP 一覧です:
- 52.214.244.18
- 18.202.209.180
- 52.50.198.227
- 52.51.98.186
権限を評価する
Aikido はさらに一歩進んで、有効なシークレットの権限も確認します。それに基づいて、重大度の引き上げにおいて追加の区別を行います。以下を確認します。
- 期限切れのシークレット
- 読み取り専用スコープ
- 書き込み/削除スコープ
プロバイダーごとに異なるチェックを行います(例: GitHub Access Token、Sendgrid トークンなど)。確認してほしいシークレットがある場合はご連絡ください。
Secrets Detection における誤検知
テストファイル、モックデータ、サンプル設定を除外することで誤検知を最小限に抑えるよう努めていますが、それでも正当なシークレットに見えるものが誤ってフラグ付けされることがあります。これは、特定のパターンをプログラムで見分けることが不可能だからです。
よくある誤検知のシナリオ
ドキュメントやコメント内のシークレット例 開発者は、実際のシークレットとまったく同じパターンに一致するサンプルの API キーを、コードコメントやドキュメントに含めることがあります:
- 実際のシークレット:
SENDGRID_API_KEY = “SG.actualR3alK3y_1234567890abcdef” - サンプルのシークレット:
SENDGRID_API_KEY = “SG.exampleK3y_1234567890abcdef”
どちらも同じ形式に従っているため、検証なしにどちらが本物かをパターン認識で判断することはできません。
無効化またはローテーション済みのシークレット Live Secret Detection は、シークレットがまだ有効かどうかを確認することでこれらを減らすのに役立ちますが、検証が不可能な例外的なケースもあります。
テスト環境のシークレット テスト環境専用で使用され、プロダクションのパターンには一致するものの、実際のセキュリティリスクはないシークレットです。
できること
誤検知に遭遇した場合:
- 文脈を確認する - これはテストファイル、ドキュメント、またはサンプルコード内にありますか?
- 関連する API やその他の方法を使って、そのシークレットが有効かどうかを確認する
- 誤検知だと確認できた場合は、今後のアラートを防ぐために問題を無視できます
できます UI で問題を無視する または コードコメントを使ってシークレットを無視する.