Guards guarding a castle

GitHub Advanced Security のスキャン結果をレビューする

Nick Liffen
Nick Liffen // Director, GitHub Advanced Security // GitHub

現在、GitHub Advanced Security が Juice Shop リポジトリで実行されており、既にいくつかの結果を得ています。それを見る前に、さらに結果をいくつか生成するステップを実行してみましょう。これにより、動作状態にある GitHub Advanced Security の保護機能を確認できます。その後、前出のスキャン結果をレビューし、それに応じて実行できるアクションのいくつかを解説していきます。

TELUS が再びベスト プラクティスを共有します。


このガイドの学習内容

  • Dependabot、コード スキャン、シークレット スキャンの結果を表示する方法

  • シークレット スキャンで偽陽性の結果を無視する方法

  • Dependabot を使用して脆弱性に自動的にパッチを適用する方法


1. 無効なシークレットを Juice Shop リポジトリに追加する。

README.md ファイルを Juice Shop リポジトリから開きます。 

次のシークレットをドキュメント内の任意の場所に貼り付けます (すでに無効になっており動作しないので、ご安心ください)。

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

Screenshot of secret in Readme.md file

変更をコミットします。

「シークレットが検出されました」というメッセージが表示され、シークレットのプッシュ保護によってファイルの特定の行に GitHub 個人用アクセス トークンが見つかったことが通知されます。

コミットをキャンセルするか、次の 3 つのオプションのいずれかを選択してシークレットを許可します。

  • テストで使用する

  • 偽陽性

  • 後で修正する

Screenshot of secret detected message

これらのオプションを使用すると、プッシュ保護が潜在的なシークレットを検出した場合でも、先に進むことができます。シークレットをコミットした場合は、ここで選択した理由が今後のレビューのために記録されます。

シークレット スキャンで生成されるアラートを表示したいので、[後で修正する] を選択してから [シークレットを許可] を選択します。変更をコミットします。

[後で修正する] オプションは、使うとしても控えめにしましょう。シークレットをコミットする理由を入力するよう促され、その理由を後でレビューできるようにログが作成されます。GitHub では、コミット作者やリポジトリ管理者、セキュリティ管理者、メール アラートを希望した利用者に対して、シークレット スキャンとメールの両方でアラートを送信します。

Justin Watts
Justin Watts // Director, Engineering Productivity // TELUS

2. Dependabot アラートを表示する。

Juice Shop リポジトリの GitHub.com ページで、リポジトリ名の下にある [設定] をクリックします。[セキュリティ] タブが表示されない場合は、[...] ドロップダウン メニューを選択し、[セキュリティ] をクリックします。

サイドバーの [Dependabot] セクションをクリックします。

Screenshot of alerts with the one highlighted, Authorization bypass in express-jwt

結果のリストが表示され、最も重要なアラートが一番上に表示されます。

これらの結果は、パッケージ、エコシステム、マニフェスト、重大度でフィルタリングしたり、優先度、日付、重大度などで並べ替えたりできます。さまざまなビューを作成し、URL をブックマークしておけば、再度アクセスできます。

ただし、開発者が本当に知りたいのは、問題を修復する方法です。[jsonwebtoken の検証バイパス] アラートをクリックします。

[セキュリティ アップデートを確認] ボタンは、この脆弱性に対するパッチが利用可能であることを意味します。これをクリックすると、問題を解決するためのプルリクエストが自動的に作成されます。

Screenshot of error with  Review security update button highlighted

3. コード スキャンの結果を表示する。

Juice Shop リポジトリの GitHub.com ページで、リポジトリ名の下にある [セキュリティ] をクリックします。[セキュリティ] タブが表示されない場合は、[...] ドロップダウン メニューを選択し、[セキュリティ] をクリックします。

サイドバーの [コード スキャン] をクリックします。

このページの上部には、ツールが動作していることを知らせるステータス通知が表示されます。

Dependabot の結果と同様に、脆弱性のリストが重要度順に表示されます。また、言語、ツール、ブランチなどのいくつかの基準に基づいてフィルタリングまたは並べ替えたり、作成日や更新日に基づいて並べ替えたりできます。

最初の [コード挿入] アラートをクリックします。

このアラートのページでは、全てが修復を念頭に置いて設計されており、問題の説明と推奨される修正方法が、言語固有のコード例と共に記載されています。

[パスを表示] リンクをクリックします。これにより、脆弱性がどこから始まり、どこで終わるのかを示すエンドツーエンドのデータ フローが表示されます。

Screenshot of the alert with Show paths link highlighted

4. シークレット スキャンの結果を表示する。

Juice Shop リポジトリの GitHub.com ページで、リポジトリ名の下にある [セキュリティ] をクリックします。[セキュリティ] タブが表示されない場合は、[...] ドロップダウン メニューを選択し、[セキュリティ] をクリックします。

サイドバーの [シークレット スキャン] をクリックします。

前に説明した、無効な GitHub 個人用アクセス トークンに関するアラートが 1 つだけ表示されます。ご覧のとおり、結果にはシークレットが見つかったことだけでなく、シークレットの具体的な種類も表示されます。

このアラートをクリックします。

アラート ページには、シークレットが見つかった場所 (この場合は README.md ファイル内) に関する情報と、問題を修復するための推奨事項が記載されています。

このシークレットをクリックします。ここでは、このシークレット アラートが以前に回避されたことと、いつ回避されたかが分かります。

6. セキュリティの概要を表示する。

GitHub.com の組織ページに移動し、[セキュリティ] タブをクリックします。[セキュリティ] タブが表示されない場合は、[...] ドロップダウン メニューを選択し、[セキュリティ] をクリックします。

ここから、組織内の全てのリポジトリの Dependabot、コード スキャン、シークレット スキャンからのアラートを確認できます。アラートは、リスク レベル別、またはアラートを生成したツール別に表示できます。また、現在 GitHub Advanced Security によって保護されているリポジトリと保護されていないリポジトリを確認したり、平均修復時間 (MTTR) やブロックまたはバイパスされたシークレットの数などのメトリクスを確認したりすることもできます。

次の項目: GitHub Advanced Security の基礎モジュールのまとめ

ここまで学んできたことを復習し、GitHub Advanced Security で他に何ができるかを見てみましょう