
MicrosoftのGitベースのソフトウェア開発者向けオープンソースインターネットホスティングサービスは、シークレットスキャンパートナープログラムを拡張します。これまでこのサービスはGitHub Advanced Securityユーザーのみに提供されていましたが、今回の拡張により、すべてのパブリックリポジトリに無料で提供されるようになります。
このプログラムは、200種類以上のトークン形式をリポジトリでスキャンし、開発者がGitHubの公開リポジトリで公開されている秘密情報を追跡できるようにします。今年、このプログラムはリポジトリ全体で9,400万人以上の開発者を対象とし、170万件以上の潜在的な秘密情報が漏洩していることを確認しました。
GitHubはブログで、データ漏洩の最も一般的な原因である漏洩した秘密情報や認証情報は、特定されるまでに平均327日間滞留すると述べた。
GitHub のプロダクト マネージャーである Mariam Sulakian 氏は、GitHub は常にすべてのパブリック リポジトリをスキャンしてシークレットを探し、検出結果をデフォルトでパートナーに送信すると説明しました。
「お客様は、製品内でシークレットスキャン機能を有効にして、公開リポジトリにおけるあらゆる漏洩への対策状況を追跡できるようになりました」と彼女は述べています。「ユーザーは、リポジトリのセキュリティタブで検出されたシークレットに関するアラートを確認できます。各アラートには、侵害されたシークレットに関する情報(推奨される対策手順、シークレットの場所、アラートに基づいて実行されたアクションのタイムラインなど)が含まれます。」
彼女はさらに、GitHub はパブリック リポジトリで漏洩した可能性のある秘密を毎日 4,500 件以上検出し、その検出結果を 100 社以上のサービス プロバイダー パートナーに送信していると付け加えました。
「現在、私たちはそれらの調査結果を公開し、ユーザーが自分のリポジトリで露出を追跡できるようにしています」と彼女は語った。
参照:採用キット: Python 開発者(TechRepublic Premium)
Sulakian 氏によると、漏洩はさまざまな方法で発生する可能性がある。
- 秘密は、たとえば開発者がデバッグのための簡単なテストに資格情報を使用した後、コードをコミットしてプッシュする前にそれらの資格情報を削除するのを忘れた場合など、偶然に漏洩する可能性があります。
- 秘密情報はgitのコミット履歴に残ることもあります。管理者が漏洩を「修復」するためにメインブランチから秘密情報を削除したとしても、gitの履歴全体を削除しなかった場合を考えてみましょう。
- 秘密は意図的に漏洩することがあります。「学生や初心者の開発者が、漏洩が及ぼす潜在的な影響を知らずに、秘密をソースコードに残してしまうことを想像してみてください」と彼女は言います。
すべてのパブリックリポジトリでシークレットスキャンが無料
現在、GitHubはサービスプロバイダーと提携し、シークレットスキャンパートナープログラムを通じて、すべての公開リポジトリにおける漏洩した認証情報にフラグを立てています。今回のリリースでは、オープンソース開発者がコード内の漏洩したシークレットに関するアラートに無料でアクセスできるようになり、漏洩元を特定し、アラートを容易に追跡して対策を講じることが可能になります(図A)。
図A

GitHubは今月、パブリックリポジトリ向けのシークレットスキャンをベータ版としてリリースしました。ユーザーはプラットフォームのセキュリティ設定でこの機能を有効にする必要がありますが、サービスの展開は段階的に行われ、2023年1月末までに全ユーザーに完全に利用可能になる予定です。
カスタムパターンのプッシュ保護
GitHubは2022年4月、GitHub Advanced Securityのお客様向けにプッシュ保護を導入しました。これは、シークレットがコミットされる前にスキャンすることで、漏洩を事前に防止するものです。Sulakian氏とMalik氏は、この機能がそれ以来、100種類のシークレットで8,000件以上の漏洩を防いだと改めて述べています(図B)。
図B

GitHubによると、カスタムパターンを定義した組織は、それらのパターンに対してプッシュ保護を有効にできるようになりました。カスタムパターンのプッシュ保護は、パターンごとに設定できると説明されています。
「どのパターンを公開するか(そしてどのパターンをドラフトモードで最初に改良するか)を既に選択できるのと同じように、誤検知に基づいてどのパターンをプッシュ保護するかを決定できます」と同社は述べています。
参照:商用ソフトウェアアプリケーションのオープンソースコードは広く普及しているが、リスクも存在する(TechRepublic)
この新しい機能により、GitHub Advanced Security を導入している組織は、多くの場合最も重要な秘密パターン (組織内でカスタマイズされ、定義されたパターン) をさらに保護できるようになります。
この新しいプログラムにより、サービスプロバイダーはGitHubと提携し、秘密トークンフォーマットをスキャンによって保護することができます。スキャンは、秘密フォーマットの偶発的なコミットを検出し、サービスプロバイダーの検証エンドポイントに送信します。
GitHub でのシークレットとトークンの仕組み
GitHubでは、「シークレット」を使用することで、開発者はワークフローの実行を認証できます。開発者がGitHubプロジェクトを開始すると、GitHubは自動的に固有のGITHUB_TOKEN「シークレット」を作成します。これにより、開発者は開発者のリポジトリにインストールされているGitHubアプリにアクセスできるようになります。GITHUB_TOKENは、ジョブの完了時、または最大24時間後に期限切れになります。GitHubプロジェクトが外部サービスと通信する場合、オーナーは認証にトークンまたは秘密鍵を使用する場合があります。
トークンと秘密鍵はどちらも、サービスプロバイダーが発行できるシークレットです。ユーザーがリポジトリにシークレットをチェックインすると、リポジトリへの読み取りアクセス権を持つユーザーは誰でも、そのシークレットを使用して、ユーザーの権限で外部サービスにアクセスできるようになります。GitHubでは、シークレットをプロジェクトのリポジトリ外にある専用の安全な場所に保存することを推奨しています。
Sulakian 氏は、GitHub プロジェクトは無数の外部サービスに接続でき、ほとんどのプロジェクトは 1 つまたは複数のサービスに接続していると説明しました。
「例えば、開発者はSlackトークンを使って、プロセスの自動化に役立つボットを作成するかもしれません」と彼女は述べた。「もしこれらのトークンが漏洩した場合、不正なユーザーがトークンに関連付けられたSlackアプリにアクセスできるようになる可能性があります。私たちは、開発者やチームが利用するすべてのサービスを保護することを目指しており、共通のユーザーの安全確保に貢献してくれるパートナーを常に歓迎しています。」
ゲーム開発のためのコーディング理解に向けて次のステップを踏み出してみませんか? 「The Ultimate Learn to Code Training」をご覧ください。
GitHub について詳しくは、TechRepublic Academy の「Complete Git and GitHub for Beginners Bootcamp Bundle」をご覧ください。