Skip to main content

Code scanningアラートについて

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

Code scanning は、GitHub.com のすべてのパブリック リポジトリに使用できます。 Code scanning は、GitHub Enterprise Cloud を使用していて GitHub Advanced Security のライセンスを持つ Organization によって所有されるプライベート リポジトリでも使用できます。 詳しくは、「GitHub Advanced Security について」を参照してください。

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] として、グレー表示されます。

code scanning アラートの要素を示すスクリーンショット。左側にはアラートのタイトルと関連するコード行が表示され、右側には重大度レベル、影響を受けるブランチ、脆弱性が表示されています。 CodeQL を使って code scanning を構成した場合、コード中のデータフローの問題も見つけることができます。 データフロー解析は、データを安全でない方法で利用する、関数に危険な引数を渡す、機密情報を漏洩するなど、コードにおける潜在的なセキュリティ問題を検出します。

code scanning がデータフローアラートを報告すると、GitHub はデータがコードを通してどのように移動するかを示します。 Code scanning を使うと、機密情報を漏洩し、悪意のあるユーザーによる攻撃の入り口になる可能性があるコードの領域を特定できます。

重要度について

アラートの重要度レベルは、ErrorWarning、または Note です。

pull request のチェックとしてcode scanningが有効化されている場合、重要度が error の結果が検出されると、チェックは失敗します。 チェック エラーの原因となる code scanning アラートの重要度レベルを指定できます。 詳しくは、「をカスタマイズして、コード スキャンの詳細設定を行う」を参照してください。

セキュリティ重要度について

Code scanning は、セキュリティ クエリによって生成されたアラートのセキュリティ重大度レベルを表示します。 セキュリティ重大度レベルは、CriticalHighMediumLow のいずれかになります。

アラートのセキュリティ重要度の計算には、共通脆弱性評価システム(CVSS)のデータを使用しています。 CVSSはソフトウェアの脆弱性の性格と重要度を伝えるためのオープンフレームワークで、アラートのスコアリングのために他のセキュリティ製品で広く使われています。 重要度レベルの計算方法の詳細については、こちらのブログ記事を参照してください。

既定では、セキュリティ重要度が Critical または High の code scanning の結果があれば、チェックは失敗します。 code scanningの結果でチェックの失敗を引き起こすセキュリティ重要度は指定できます。 詳しくは、「をカスタマイズして、コード スキャンの詳細設定を行う」を参照してください。

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

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

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

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

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

GitHubは、アプリケーションコード中に見つからないアラートに対し、カテゴリラベルを割り当てます。 ラベルは、アラートの場所に関連づけられます。

  • [生成済み] : ビルド プロセスによって生成されたコード
  • [テスト] : テスト コード
  • [ライブラリ] : ライブラリまたはサードパーティのコード
  • [ドキュメント] : ドキュメント

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

この例のアラートは、code scanning アラート リストで "テスト" コードとしてマークされています。

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

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

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

注: code scanning の試験的なアラートは、CodeQL アクションの実験テクノロジを使用した JavaScript のベータ リリースで利用できました。 この機能は非推奨となり、廃止されました。 詳細については、「CodeQL code scanning により ML を利用したアラートが廃止される」を参照してください。