CodeQL の結果を理解する

完了

前のユニットでは、データベースを作成し、コードから抽出されたファイルをスキャンしました。 これで、結果を表示し、対処するセキュリティの脆弱性があるかどうかを判断できます。

CodeQL 分析からコード スキャンの結果を表示する

解釈されたクエリ結果は、VS Code の CodeQL 拡張機能のソース コードに自動的に表示されます。 CodeQL CLI で生成される出力結果は、さまざまなツールで使用できるさまざまな形式にすることができます。

クエリの select ステートメントを変更することで、ソース コードでの分析結果の表示方法を制御できます。 クエリの開発中に他のユーザーが理解できるように、結果を明確にし、簡単にすることができます。 クエリ コンソールまたは VS Code の CodeQL 拡張機能で独自のクエリを記述する場合、選択できる内容に制約はありません。

GitHub コード スキャンでアラートを作成するクエリを使用する場合、または CodeQL CLI を使用して有効な分析結果を生成する場合は、 select ステートメントレポートの結果を必要な形式にする必要があります。

コード スキャンアラートに対処する

コード スキャンを設定して、リポジトリ内のコードを確認できます。 既定の CodeQL 分析、Microsoft 以外の分析、またはその他の種類の分析を使用できます。 結果のアラートは、リポジトリ内で互いに並んで表示されます。

GitHub の既定の CodeQL 分析には、Microsoft 以外のツールやカスタム クエリの結果よりも多くのアラートのプロパティが含まれる場合があります。 既定のワークフローでは、コード スキャンによって、既定のブランチとプル要求中にコードが定期的に分析されます。

各アラートには、次の情報が含まれています。

  • コードに関する問題と、それを識別したツールの名前
  • アラートをトリガーしたコード行
  • アラートのプロパティ (重大度など)
  • セキュリティの重大度
  • 問題が提示されたとき
  • 問題の性質

また、CodeQL 分析でアラートが識別されたときに問題を解決する方法についても説明します。 さらに、CodeQL を使用したコード スキャンでは、コード内のデータ フローの問題を検出できます。

CodeQL 分析アラートを示すスクリーンショット。

データ フロー アラート

データ フロー分析では、次のようなコード内の潜在的なセキュリティの問題が検出されます。

  • セキュリティを侵害する方法でデータを使用する。
  • 関数に危険な引数を渡す。
  • 機密情報の漏洩。

GitHub では、コード スキャンがデータ フロー アラートを報告するときに、コード内でデータがどのように移動するかを示します。 これらのデータ フロー アラートを使用して、機密情報を漏えいさせるコードの領域を特定できます。 この知識は、悪意のあるユーザーによる攻撃のエントリ ポイントを特定するのに役立ちます。

重大度レベル

重大度が Error のコード スキャン結果では、既定でチェック エラーが発生します。 アラートの重大度レベルは、 ErrorWarning、および Noteです。 コード スキャン アラートをトリガーするプル要求が失敗する重大度レベルを指定できます。

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

コード スキャンによって生成されるセキュリティ クエリでは、アラートのセキュリティ重大度レベルが表示されます。 セキュリティの重大度レベルは、 CriticalHighMedium、および Lowです。 GitHub では、Common Vulnerability Scoring System (CVSS) データを使用して、アラートのセキュリティ重大度を計算します。

セキュリティの重大度が Critical または High のコード スキャンの結果では、既定でチェック エラーが発生します。 コード スキャン結果のチェック エラーを引き起こすセキュリティの重大度レベルを指定できます。

コード スキャン アラートを閉じる

アラートを閉じる方法は 2 つあります。

  • コードの問題を修正します。
  • アラートを無視または削除します。

コード スキャン アラートを無視する

アラートを無視することは、修正する必要がないと思われるアラートを閉じる方法です。 1 つの例として、テストにのみ使用されるコード内のエラーがあります。 また、エラーを修正するために必要な作業が、コードを改善する潜在的な利点を超える場合は、アラートを無視することもできます。

アラートは、コード内のコード スキャン注釈から、または [セキュリティ ] タブの概要リストから無視できます。一覧からアラートを閉じるには、[ アラートの無視 ] メニューを選択し、無視の理由を選択して、[ アラートの無視 ] ボタンを選択します。

アラートを無視するためのドロップダウン メニューとボタンを示すビデオ。

アラートを却下すると:

  • それはすべてのブランチで却下されます。
  • プロジェクトの現在のアラートの数から削除されます。
  • アラートの概要の [終了] リストに移動されます。 必要に応じて、ここから再度開くことができます。
  • アラートを閉じた理由が記録されます。
  • 次回コード スキャンを実行しても、同じコードではアラートは生成されません。

コード スキャン アラートを削除する

リポジトリの管理者アクセス許可がある場合は、アラートを削除できます。 アラートの削除は、次の場合に役立ちます。

  • コード スキャン ツールを設定しますが、後で削除することにします。
  • 引き続き使用するよりも大規模なクエリ セットを使用して CodeQL 分析を構成しました。
  • ツールからいくつかのクエリを削除しました。
  • コード スキャンの結果をクリーンアップする必要があります。

アラートは、[ セキュリティ ] タブの概要リストから削除できます。

アラートを削除する場合:

  • すべてのブランチで削除されます。
  • プロジェクトの現在のアラートの数から削除されます。
  • アラートの概要の [終了] リストには追加されません。
  • アラートを生成したコードが同じままで、構成を変更せずに同じコード スキャン ツールが再度実行される場合は、分析結果にアラートが再び表示されます。