Skip to main content

Code scanningアラートについて

様々な種類のCode scanningアラートと、それぞれのアラートが示す問題の理解に役立つ情報について学んでください。

この機能を使用できるユーザーについて

書き込み アクセスを持つユーザー

Code scanning は、次のリポジトリの種類で使用できます。

  • GitHub.com 上のパブリックリポジトリ
  • GitHub Team、GitHub Enterprise Cloud、または GitHub Enterprise Server 上の組織所有リポジトリ。 GitHub Advanced Security が 有効になっています。

メモ

この機能を使用するには、サイト管理者が code scanning を有効にする必要があります。 詳しくは、「アプライアンス用コードスキャンの構成」をご覧ください。

Enterprise の所有者が Enterprise レベルで GitHub Advanced Security ポリシーを設定している場合、code scanning を有効または無効にできない場合があります。 詳しくは、「エンタープライズのコード セキュリティと分析のためのポリシーの適用」をご覧ください。

          code scanningからのアラートについて

既定のcode scanning分析、サードパーティ分析、または複数の種類の分析を使用して、リポジトリ内のコードを確認するようにCodeQLを構成できます。 解析が完了すると、解析によるアラートがリポジトリのセキュリティビューに隣り合わせで表示されます。 サード パーティ製ツールまたはカスタム クエリからの結果には、 GitHubの既定の CodeQL 分析によって検出されたアラートに対して表示されるすべてのプロパティが含まれていない場合があります。 詳細については、「コード スキャンの既定セットアップの構成」および「コード スキャンの詳細設定を構成する」を参照してください。

既定では、 code scanning は、既定のブランチとプル要求中にコードを定期的に分析します。 pull request のアラートの管理については、「AUTOTITLE」を参照してください。

          code scanning分析からのCodeQLアラートの場合は、セキュリティの概要を使用して、組織全体のリポジトリのプル要求でCodeQLがどのように実行されているかを確認したり、アクションを実行する必要があるリポジトリを特定したりできます。 詳しくは、「[AUTOTITLE](/code-security/concepts/code-scanning/pull-request-alert-metrics)」をご覧ください。

GitHub ツールを使用して、code scanning アラートに応答して実行されたアクションを監査できます。 詳しくは、「セキュリティ アラートの監査」をご覧ください。

アラートの詳細について

各アラートはコードの問題と、それを特定したツールの名前を表示します。 アラートをトリガーしたコード行と、アラートのプロパティ (アラートの重要度、セキュリティの重要度、問題の性質など) を確認できます。 アラートは、問題が最初に発生したときにも通知します。 CodeQL分析によって識別されるアラートについては、問題を解決する方法に関する情報も表示されます。

[アラート] ページのステータスと詳細は、他のブランチにアラートが存在する場合であっても、リポジトリの既定のブランチに対するアラートのステータスを反映するのみです。 既定以外のブランチのアラートの状態は、[アラート] ページの右側にある [影響を受けるブランチ] セクションで確認できます。 既定のブランチにアラートが存在しない場合、アラートの状態は、[in pull request] または [in branch] として、グレー表示されます。 [Development] セクションには、アラートを修正するリンク ブランチと pull request が表示されます。

アラート タイトル、左側に関連するコード行、右側にメタデータが表示されている code scanning アラートのスクリーンショット。

          code scanningを使用してCodeQLを構成する場合は、コードでデータ フローの問題を見つけることもできます。 データフロー解析は、データを安全でない方法で利用する、関数に危険な引数を渡す、機密情報を漏洩するなど、コードにおける潜在的なセキュリティ問題を検出します。

データ フロー アラート code scanning 報告すると、 GitHub はコード内でのデータの移動方法を示します。 Code scanning を使用すると、機密情報を漏えいさせるコードの領域を特定でき、それが悪意のあるユーザーによる攻撃のエントリ ポイントになる可能性があります。

複数の構成からのアラートについて

リポジトリでコード分析の複数の構成を実行し、さまざまなツールを使用して、異なる複数の言語またはコード領域をターゲットにすることができます。 code scanningの各構成では、一意のアラート セットが生成されます。 たとえば、既定の CodeQL 分析と GitHub Actions を使用して生成されたアラートは、外部で生成され、 code scanning API を介してアップロードされたアラートとは異なる構成で生成されます。

複数の構成を使用してファイルを分析した場合、同じクエリによって検出された問題が、複数の構成によって生成されたアラートとして報告されます。 複数の構成にアラートが存在する場合、構成の数は、アラート ページの右側にある [影響を受けるブランチ] セクションのブランチ名の横に表示されます。 アラートの構成を表示するには、[影響を受けるブランチ] セクションでブランチをクリックします。 そのブランチのアラートを生成する各構成の名前が表示されている [構成の分析] モーダルが表示されます。 各構成の下に、その構成のアラートが最後に更新された日時が表示されます。

アラートには、さまざまな構成のさまざまな状態が表示される場合があります。 アラートの状態を更新するには、使われていない構成を再び実行します。 または、ブランチから古い構成を削除して、使われていないアラートを削除することもできます。 前の構成とアラートの削除の詳細については、「AUTOTITLE」を参照してください。

アプリケーションコード中には見つからないアラートのラベルについて

          GitHub は、アプリケーション コードに見つからないアラートにカテゴリ ラベルを割り当てます。 ラベルは、アラートの場所に関連づけられます。
  • [生成済み] : ビルド プロセスによって生成されたコード

  • [テスト] : テスト コード

  • [ライブラリ] : ライブラリまたはサードパーティのコード

  • [ドキュメント] : ドキュメント

            Code scanning は、ファイルをファイル パス別に分類します。 手動でソースファイルを分類することはできません。
    

この例では、アラートは、 code scanning アラートの一覧の "テスト" コードでマークされます。

code scanning リストでのアラートのスクリーンショット。 タイトルの右側の [テスト] ラベルが、濃いオレンジ色の枠線で強調されています。

クリックしてアラートの詳細を表示すると、ファイル パスが "テスト" コードとしてマークされていることがわかります。

アラートの詳細を示すスクリーンショット。 ファイル パスと [テスト] ラベルが、濃いオレンジ色の枠線で強調されています。

アラートの重大度とセキュリティの重大度レベルについて

          code scanning アラートの重大度レベルは、問題がコードベースに追加するリスクの量を示します。

* 重大度。 すべての code scanning アラートには、 ErrorWarning、または Noteのレベルがあります。 * セキュリティの重大度。 CodeQLを使用して検出された各セキュリティ アラートには、CriticalHighMedium、またはLowのセキュリティ重大度レベルもあります。

アラートにセキュリティの重大度レベルがある場合は、 code scanning が表示され、 severityに優先してこのレベルが使用されます。 セキュリティの重大度レベルは、業界標準の共通脆弱性スコアリング システム (CVSS) に従います。これは、 GitHub Advisory Databaseのアドバイザリにも使用されます。 詳細については、「CVSS: 定性重要度評価スケール」を参照してください。

セキュリティの重大度レベルの計算

セキュリティ クエリを CodeQL Default または Extended クエリ スイートに追加すると、 CodeQL エンジニアリング チームは、セキュリティの重大度を次のように計算します。

  1. 新しいセキュリティ クエリに関連付けられている 1 つ以上の CWE タグが割り当てられている、すべての CVE を検索します。
  2. それらの CVE の CVSS スコアの 75 パーセンタイルを計算します。
  3. クエリのセキュリティ重大度としてスコアを定義します。
  4. クエリで検出されたアラートを表示する際、CVSS 定義を使用して、数値スコアを CriticalHighMedium、または Low に変換します。

詳細については、CWE カバレッジについて、CodeQLドキュメント サイトのCodeQLを参照してください。

プルリクエストのアラートについて

          Code scanning アラートは、確認結果と注釈としてプル要求に表示できます。 これは、次のいずれかを code scanning リポジトリで発生します。
  • プル要求チェックとして構成されます (既定では、これは既定のブランチを対象とする pull request に限定されます)
  • コードがプッシュされるたびにスキャンするように構成されている (結果は開いているプル要求にマップされます)

アラートが特定したすべてのコード行がプル リクエスト差分に存在する場合のみ、プル リクエストにアラートが表示されます。

分岐保護ルールによっては、"Code scanning 結果" チェックが必須のチェックとなり、それが合格するまでプルリクエストのマージを防ぐ場合があります。