code scanning からのアラートについて
code scanning を構成して、既定の CodeQL 解析、サードパーティーの解析、または複数の種類の解析を使ってリポジトリのコードをチェックできます。 解析が完了すると、解析によるアラートがリポジトリのセキュリティビューに隣り合わせで表示されます。 サードパーティツールまたはカスタムクエリの結果には、GitHub のデフォルト CodeQL 解析により検出されたアラートで表示されるプロパティの一部が含まれていない場合があります。 詳細については、「コード スキャンの既定セットアップの構成」および「コード スキャンの高度なセットアップの構成」を参照してください。
デフォルトでは、code scanning は pull request 中にデフォルトブランチのコードを定期的に解析します。 pull request のアラートの管理については「pull request で Code scanning アラートをトリアージする」を参照してください。
GitHub Copilot Autofix を使用すると、code scanning アラート(CodeQL アラートを含む)から自動的に修正プログラムを生成できます。 詳しくは、「コード スキャン アラートの解決」を参照してください。
GitHub ツールを使用して、code scanning アラートに応答して実行されたアクションを監査できます。 詳しくは、「セキュリティ アラートの監査」を参照してください。
アラートの詳細について
各アラートはコードの問題と、それを特定したツールの名前を表示します。 アラートをトリガーしたコード行と、アラートのプロパティ (アラートの重要度、セキュリティの重要度、問題の性質など) を確認できます。 アラートは、問題が最初に発生したときにも通知します。 CodeQL 解析で特定されたアラートについては、問題を解説する方法についての情報も表示されます。
[アラート] ページのステータスと詳細は、他のブランチにアラートが存在する場合であっても、リポジトリの既定のブランチに対するアラートのステータスを反映するのみです。 既定以外のブランチのアラートの状態は、[アラート] ページの右側にある [影響を受けるブランチ] セクションで確認できます。 既定のブランチにアラートが存在しない場合、アラートの状態は、[in pull request] または [in branch] として、グレー表示されます。
CodeQL を使って code scanning を構成した場合、コード中のデータフローの問題も見つけることができます。 データフロー解析は、データを安全でない方法で利用する、関数に危険な引数を渡す、機密情報を漏洩するなど、コードにおける潜在的なセキュリティ問題を検出します。
code scanning がデータフローアラートを報告すると、GitHub はデータがコードを通してどのように移動するかを示します。 Code scanning を使うと、機密情報を漏洩し、悪意のあるユーザーによる攻撃の入り口になる可能性があるコードの領域を特定できます。
複数の構成からのアラートについて
リポジトリでコード分析の複数の構成を実行し、さまざまなツールを使用して、異なる複数の言語またはコード領域をターゲットにすることができます。 code scanning の各構成では、アラートの一意のセットが生成されます。 たとえば、GitHub Actions で既定の CodeQL 分析を使用して生成されたアラートは、外部で生成されて、code scanning API を介してアップロードされたアラートとは異なる構成によるものです。
複数の構成を使用してファイルを分析した場合、同じクエリによって検出された問題が、複数の構成によって生成されたアラートとして報告されます。 複数の構成にアラートが存在する場合、構成の数は、アラート ページの右側にある [影響を受けるブランチ] セクションのブランチ名の横に表示されます。 アラートの構成を表示するには、[影響を受けるブランチ] セクションでブランチをクリックします。 そのブランチのアラートを生成する各構成の名前が表示されている [構成の分析] モーダルが表示されます。 各構成の下に、その構成のアラートが最後に更新された日時が表示されます。
アラートには、さまざまな構成のさまざまな状態が表示される場合があります。 アラートの状態を更新するには、使われていない構成を再び実行します。 または、ブランチから古い構成を削除して、使われていないアラートを削除することもできます。 古い構成とアラートの削除について詳しくは、「コード スキャン アラートの解決」を参照してください。
アプリケーションコード中には見つからないアラートのラベルについて
GitHubは、アプリケーションコード中に見つからないアラートに対し、カテゴリラベルを割り当てます。 ラベルは、アラートの場所に関連づけられます。
- [生成済み] : ビルド プロセスによって生成されたコード
- [テスト] : テスト コード
- [ライブラリ] : ライブラリまたはサードパーティのコード
- [ドキュメント] : ドキュメント
Code scanning は、ファイルをファイル パスによって分類します。 手動でソースファイルを分類することはできません。
この例のアラートは、code scanning アラート リストで "テスト" コードとしてマークされています。
クリックしてアラートの詳細を表示すると、ファイル パスが "テスト" コードとしてマークされていることがわかります。
注: code scanning の試験的なアラートは、CodeQL アクションの実験テクノロジを使用した JavaScript の パブリック プレビュー リリースで利用できました。 この機能は 廃止 でした。 詳細については、「CodeQL code scanning により ML を利用したアラートが廃止される」を参照してください。
アラートの重大度とセキュリティの重大度レベルについて
code scanning アラートの重大度レベルは、問題がコードベースに追加するリスクの程度を示します。
- [重要度]。 すべての code scanning アラートには、
Error
、Warning
、またはNote
レベルがあります。 - セキュリティの重要度。 また、CodeQL を使用して検出された各セキュリティ アラートには、セキュリティの重大度レベル
Critical
、High
、Medium
またはLow
があります。
アラートにセキュリティ重大度レベルがある場合、code scanning が表示され、このレベルが severity
よりも優先して使用されます。 セキュリティの重大度レベルは、業界標準の共通脆弱性スコアリング システム (CVSS) に従います。このシステムは、GitHub Advisory Database のアドバイザリにも使用されます。 詳細については、「CVSS: 定性重要度評価スケール」を参照してください。
code scanning アラートの pull request チェック失敗
ルールセットを使用すると、次のいずれかの条件が満たされたときに pull request がマージされないようにできます。
-
必要なツールで、ルール セットで定義している重大度の code scanning アラートが見つかりました。
-
必要な code scanning ツールはまだ分析中です。
-
必要な code scanning ツールはリポジトリ用に構成されていません。
詳しくは、「コード スキャンのマージ保護を設定します」を参照してください。 ルールセットについて一般的な情報は、「ルールセットについて」をご覧ください。
セキュリティの重大度レベルの計算
セキュリティ クエリを CodeQL Default または Extended クエリ スイートに追加すると、CodeQL エンジニアリング チームは、セキュリティの重大度を次のように計算します。
- 新しいセキュリティ クエリに関連付けられている 1 つ以上の CWE タグが割り当てられている、すべての CVE を検索します。
- それらの CVE の CVSS スコアの 75 パーセンタイルを計算します。
- クエリのセキュリティ重大度としてスコアを定義します。
- クエリで検出されたアラートを表示する際、CVSS 定義を使用して、数値スコアを
Critical
、High
、Medium
、またはLow
に変換します。
詳しくは、CodeQL ドキュメント サイトの「CodeQL CWE カバレッジ」をご覧ください。