code scanning からのアラートについて
code scanning を構成して、既定の CodeQL 解析、サードパーティーの解析、または複数の種類の解析を使ってリポジトリのコードをチェックできます。 解析が完了すると、解析によるアラートがリポジトリのセキュリティビューに隣り合わせで表示されます。 サードパーティツールまたはカスタムクエリの結果には、GitHub のデフォルト CodeQL 解析により検出されたアラートで表示されるプロパティの一部が含まれていない場合があります。 詳細については、「About code scanning alerts」を参照してください。
デフォルトでは、code scanning はプルリクエスト中にデフォルトブランチのコードを定期的に解析します。 pull request のアラートの管理については「Pull RequestでCode scanningアラートをトリアージする」を参照してください。
GitHub ツールを使用して、code scanning アラートに応答して実行されたアクションを監査できます。 詳しくは、「セキュリティ アラートの監査」を参照してください。
アラートの詳細について
各アラートはコードの問題と、それを特定したツールの名前を表示します。 アラートをトリガーしたコード行と、アラートのプロパティ (アラートの重要度、セキュリティの重要度、問題の性質など) を確認できます。 アラートは、問題が最初に発生したときにも通知します。 CodeQL 解析で特定されたアラートについては、問題を解説する方法についての情報も表示されます。
[アラート] ページのステータスと詳細は、他のブランチにアラートが存在する場合であっても、リポジトリの既定のブランチに対するアラートのステータスを反映するのみです。 既定以外のブランチのアラートの状態は、[アラート] ページの右側にある [影響を受けるブランチ] セクションで確認できます。 既定のブランチにアラートが存在しない場合、アラートの状態は、[in pull request] または [in branch] として、グレー表示されます。
CodeQL を使って code scanning を構成した場合、コード中のデータフローの問題も見つけることができます。 データフロー解析は、データを安全でない方法で利用する、関数に危険な引数を渡す、機密情報を漏洩するなど、コードにおける潜在的なセキュリティ問題を検出します。
code scanning がデータフローアラートを報告すると、GitHub はデータがコードを通してどのように移動するかを示します。 Code scanning を使うと、機密情報を漏洩し、悪意のあるユーザーによる攻撃の入り口になる可能性があるコードの領域を特定できます。
重要度について
アラートの重要度レベルは、Error
、Warning
、または Note
です。
pull request のチェックとしてcode scanningが有効化されている場合、重要度が error
の結果が検出されると、チェックは失敗します。 チェック エラーの原因となる code scanning アラートの重要度レベルを指定できます。 詳しくは、「コード スキャンの詳細設定を行う」を参照してください。
セキュリティ重要度について
Code scanning は、セキュリティ クエリによって生成されたアラートのセキュリティ重大度レベルを表示します。 セキュリティ重大度レベルは、Critical
、High
、Medium
、Low
のいずれかになります。
アラートのセキュリティ重要度の計算には、共通脆弱性評価システム(CVSS)のデータを使用しています。 CVSSはソフトウェアの脆弱性の性格と重要度を伝えるためのオープンフレームワークで、アラートのスコアリングのために他のセキュリティ製品で広く使われています。 重要度レベルの計算方法の詳細については、こちらのブログ記事を参照してください。
既定では、セキュリティ重要度が Critical
または High
の code scanning の結果があれば、チェックは失敗します。 code scanningの結果でチェックの失敗を引き起こすセキュリティ重要度は指定できます。 詳しくは、「コード スキャンの詳細設定を行う」を参照してください。
分析元について
リポジトリでコード分析の複数の構成を実行し、さまざまなツールを使用して、さまざまな言語またはコード領域をターゲットにすることができます。 code scanning の各構成は、それにより生成されるすべてのアラートの分析元です。 たとえば、GitHub Actions で既定の CodeQL 分析を使用して生成されたアラートには、外部で生成されて、code scanning API を介してアップロードされたアラートとは異なる分析元があります。
複数の構成を使用してファイルを分析した場合、同じクエリによって検出された問題が、複数の分析元があるアラートとして報告されます。 アラートの分析元が複数ある場合、アラート ページの右側にある [影響を受けるブランチ] セクションで、該当するブランチの横に アイコンが表示されます。 アイコンの上にカーソルを合わせると、各分析元の名前とその分析元のアラートの状態を確認できます。 また、各分析元でいつアラートが発生したかの履歴を、アラート ページのタイムラインに表示することもできます。 アラートに分析元が 1 つしかない場合、アラート ページに分析の発生元に関する情報は表示されません。
注: 場合によっては、code scanning アラートが 1 つの分析元について修正済みとして表示されていても、2 つ目の分析元については解決されていないことがあります。 これを解決するには、2 番目の code scanning 構成を再実行して、その分析元のアラートの状態を更新します。
アプリケーションコード中には見つからないアラートのラベルについて
GitHub AEは、アプリケーションコード中に見つからないアラートに対し、カテゴリラベルを割り当てます。 ラベルは、アラートの場所に関連づけられます。
- [生成済み] : ビルド プロセスによって生成されたコード
- [テスト] : テスト コード
- [ライブラリ] : ライブラリまたはサードパーティのコード
- [ドキュメント] : ドキュメント
Code scanning は、ファイルをファイル パスによって分類します。 手動でソースファイルを分類することはできません。
この例のアラートは、code scanning アラート リストで "テスト" コードとしてマークされています。
クリックしてアラートの詳細を表示すると、ファイル パスが "テスト" コードとしてマークされていることがわかります。