GitHub can now auto-block commits containing API keys, auth tokens
2022/04/04 BleepingComputer — 月曜日に GitHub は、GitHub Advanced Security の顧客向けに、コード・ホスティング・プラットフォームのシークレット・スキャン機能を拡張し、秘密漏えいを自動的にブロックすると発表した。 シークレット・スキャンは、GitHub Enterprise Cloud を Advanced Security ライセンスで使用している組織が、リポジトリのスキャンに追加できる高度なオプションである。
この機能は、組織が定義したパターンや、パートナーやサービス・プロバイダーが提供するパターンとの、マッチングにより動作する。それぞれのマッチングは、セキュリティ・アラートとして、レポートのセキュリティ・タブ上で報告され、パートナーのパターンにマッチした場合にはパートナーに報告される。
偶発的な機密漏洩を自動ブロック
このプッシュ・プロテクションとして提供される新機能は、リモート・リポジトリにコードをコミットする前に、誤って認証情報が公開されることを防ぐためのものだ。この新機能は、開発者のワークフロー内にシークレット・スキャンを組み込み、偽陽性を低減した上で、検出可能な 69種類のトークン (APIキー/認証トークン/アクセス・トークン/管理証明書/資格情報/プライベート・キー/秘密キーなど) に対応する。
GitHub は、「プッシュ・プロテクションを用いることで、開発者がコードをプッシュする際にシークレットの有無をチェックし、シークレットが確認された場合はプッシュをブロックする。開発の生産性を阻害することなく、それを実現するために、プッシュ保護は正確に検出できるトークン・タイプのみをサポートする」と述べている。
コードをプッシュする前に、GitHub Enterprise Cloud がシークレットを特定した場合には、git プッシュがブロックされ、開発者がリモート・リポジトリにプッシュするコードから、シークレットがレビューされ削除されるようになる。また、開発者は、これらのセキュリティ警告を誤検出/テストケースとしてタグ付けすることも可能であり、また、その後に修正するようマークすることもできる。
シークレット・スキャンのプッシュ保護を有効にする方法
GitHub Advanced Security を導入している組織は、リポジトリと組織の両方のレベルで、API/UI からワンクリックでシークレット・スキャンに関するプッシュ保護機能を有効できる。それぞれの組織が、プッシュ保護を有効にするための詳細な手順は、以下のとおりである。
- GitHub.com で、組織のメインページにナビゲートする。
- 組織名の下にある、Settings をクリックする。
- サイドバーの Security セクションで、Code security and analysis をクリックする。
- Code security and analysis の下の GitHub Advanced Security を選ぶ。
- Secret scanning の Push protection を Enable all に設定する。
- オプションの Automatically enable for private repositories added to secret scanning をクリックする。
また、リポジトリの Settings > Security & analysis > GitHub Advanced Security ダイアログで ON を選ぶことで、個々のレポジトリに対して有効を設定することも可能だ。

シークレット・スキャン機能についての、詳しい情報についてはココで参照できる。また、コマンドラインからプッシュ保護を設定する場合や、シークレットの一部に対してプッシュを許可する方法については、ココで参照できる。
GitHub は、「GitHub Advanced Security のシークレット・スキャンを利用して、現在までに数千のプライベート・リポジトリで、70万以上のシークレットを検出した。また、すべてのパブリック・リポジトリで、我々のパートナーのパターンをスキャンしている (無償)。今日、GitHub Advanced Security の顧客向けに、git push を受け入れる前にシークレット・スキャンを実施することで、リークを完全に防ぐオプションを追加した」と付け加えている。
以前に BleepingComputer が報告したように [1, 2, 3]、暴露された認証情報やシークレットによる、深刻な侵害が生じている。したがって、コードをコミットする前に、自動シークレット・スキャンを有効にすることで、組織は偶発的な漏洩から身を守り、サプライチェーン・セキュリティの向上に、一歩近づくことが可能となる。
3月4日の「GitHub 調査:不適切なソースコード管理によりパスワードなどの機密情報が漏洩」に、「GitHub へのコミットされた 1,000件のうち3件が機密情報を流出させ、その頻度は2020年より 50% ほど高いことが分かった。ここで言う機密情報の半分以上は、データストレージ・サービス/クラウド・プロバイダー/秘密暗号鍵/開発ツールにアクセスするための認証情報であり・・・」と記されていました。また、1月9日には、「GitHub の秘密のスキャンが PyPI や RubyGems の安全性を護る」という記事もありました。おそらく、目視では追いつかない領域で、今日の記事にあるような自動化が必要なのでしょう。