01a. シークレットとクレデンシャルに注意

機密情報がリポジトリにプッシュされないようにするにはどのようにすればよいでしょうか?

これは OWASP Top Ten issuesarrow-up-right の一つであり、 いくつかのバグバウンティの記事がこの種の問題に関連しています。たとえばハードコードされたクレデンシャルが誤ってプッシュされたなどです。

コミットやリポジトリをスキャンして、パスワード、秘密鍵、社外秘などの機密情報を検出する必要があります。 図のようなプロセスに従います。

理想的なアプローチは機密データがリポジトリにヒットする前に露出を検出して防止することです。 なぜならそれらは履歴に表示されるからです。コードホスティングプラットフォームの場合、シークレットはウェブ上に残り、 リポジトリから削除した後でも検索できます。

補完的なアプローチとしてはリポジトリをスキャンして機密情報を探し、それを削除することです。 クレデンシャルが漏洩した場合、それはすでに危険な状態であり、無効にすべきであることに注意してください。

複数の場所でシークレットを検出する

  • 既存のシークレットを検出する リポジトリ内の既存のシークレットを検索します。

  • プレコミットフックを使用する シークレットがコードベースに入ることを防ぐため。

  • パイプラインでシークレットを検出する

なぜシークレットを検出するのか?

  • シークレットがハードコードされていないこと。

  • シークレットが暗号化解除されていないこと。

  • シークレットがソースコードに保存されていないこと。

  • コード履歴に不注意によるシークレットが含まれていないこと。

シークレットをいつどこで検出するか?

Pre Commit

そうですね、最適な場所は pre-commit の場所です。これによりシークレットが実際にコードベースに入る前にインターセプトされ、開発者やコミットした人がメッセージを受け取ることができます。もう一つの場所はビルドサーバーまたは build プロセスです。ビルドサーバーは既にコミットされているソースコードを取得して、ソースコードを解析します。新しいシークレットが含まれていたり、既知のシークレットが含まれていた場合にそのシークレットが実際に妥当性確認や監査されます。


ここではリポジトリを自動的にスキャンして機密情報を探すのに役立つツールを紹介します。 スキャンはパイプラインに直接実装でき、再現性と効率性に優れています。

ツール:

Last updated