Githubに含まれていたシークレットをリストアップする

kakeru kikuchi


kakeru kikuchi
背景
2022年末にCircleCIのインシデントが発生してしまい、Github上のprivate repositoryコードが流失した可能性がある https://circleci.com/ja/blog/january-4-2023-security-alert/
じゃぁ、仮にコードが流失したとしてコードに含まれていたかもしれないシークレットをどうやって一覧にするのか?となったので調べて実践した
使用ツール
gitLeaksというgolangのシークレットの検出・防止ツールが使えるので使ってみた
Jitを使用してコードベースを保護し、世界最高の OSS セキュリティ ツールを使用して完全に自動化されたフルスタックの継続的なセキュリティを実現します。
どうやらセキュリティツールとしての立ち位置はしっかりしていそう
使用方法
1. gitleaksをbrewなどでinstall
$ brew install gitleaks
2. 手元に対象のrepositoryをclone
3. main等の一番進んでいるbranchの最新をpull
4. gitleaksのdetectチェックで確認
$ gitleaks detect --source . -l trace -r leak-report.json --log-opts="--all "(git rev-list --max-parents=0 HEAD)".."(git rev-parse HEAD)""
5. リークしてある情報を出力jsonで確認する
使用感
jqを駆使すれば割と有用な情報が出力できそうなのと高速に動作するのでCIに組み込む用途でも機能しそうと感じる
ただし、概ね[Generic API Key]と判定されてしまうと「これはなんのシークレットだ…?」となるので結局ちゃんとローテートさせるか そもそもシークレットをcommitするなんてことをさせない運用にしたら良いんだけど、初期コスト的にシード期のスタートアップはcommitさせてしまうんだろうな…と悲しい気持ちになった