CodeQL の結果を理解する
前のユニットでは、データベースを作成し、コードから抽出されたファイルをスキャンしました。 これで、結果を表示し、対処するセキュリティの脆弱性があるかどうかを判断できます。
CodeQL 分析からコード スキャンの結果を表示する
解釈されたクエリ結果は、VS Code の CodeQL 拡張機能のソース コードに自動的に表示されます。 CodeQL CLI で生成される出力結果は、さまざまなツールで使用できるさまざまな形式にすることができます。
クエリの select
ステートメントを変更することで、ソース コードでの分析結果の表示方法を制御できます。 クエリの開発中に他のユーザーが理解できるように、結果を明確にし、簡単にすることができます。 クエリ コンソールまたは VS Code の CodeQL 拡張機能で独自のクエリを記述する場合、選択できる内容に制約はありません。
GitHub コード スキャンでアラートを作成するクエリを使用する場合、または CodeQL CLI を使用して有効な分析結果を生成する場合は、 select
ステートメントレポートの結果を必要な形式にする必要があります。
コード スキャンアラートに対処する
コード スキャンを設定して、リポジトリ内のコードを確認できます。 既定の CodeQL 分析、Microsoft 以外の分析、またはその他の種類の分析を使用できます。 結果のアラートは、リポジトリ内で互いに並んで表示されます。
GitHub の既定の CodeQL 分析には、Microsoft 以外のツールやカスタム クエリの結果よりも多くのアラートのプロパティが含まれる場合があります。 既定のワークフローでは、コード スキャンによって、既定のブランチとプル要求中にコードが定期的に分析されます。
各アラートには、次の情報が含まれています。
- コードに関する問題と、それを識別したツールの名前
- アラートをトリガーしたコード行
- アラートのプロパティ (重大度など)
- セキュリティの重大度
- 問題が提示されたとき
- 問題の性質
また、CodeQL 分析でアラートが識別されたときに問題を解決する方法についても説明します。 さらに、CodeQL を使用したコード スキャンでは、コード内のデータ フローの問題を検出できます。
データ フロー アラート
データ フロー分析では、次のようなコード内の潜在的なセキュリティの問題が検出されます。
- セキュリティを侵害する方法でデータを使用する。
- 関数に危険な引数を渡す。
- 機密情報の漏洩。
GitHub では、コード スキャンがデータ フロー アラートを報告するときに、コード内でデータがどのように移動するかを示します。 これらのデータ フロー アラートを使用して、機密情報を漏えいさせるコードの領域を特定できます。 この知識は、悪意のあるユーザーによる攻撃のエントリ ポイントを特定するのに役立ちます。
重大度レベル
重大度が Error
のコード スキャン結果では、既定でチェック エラーが発生します。 アラートの重大度レベルは、 Error
、 Warning
、および Note
です。 コード スキャン アラートをトリガーするプル要求が失敗する重大度レベルを指定できます。
セキュリティの重大度レベル
コード スキャンによって生成されるセキュリティ クエリでは、アラートのセキュリティ重大度レベルが表示されます。 セキュリティの重大度レベルは、 Critical
、 High
、 Medium
、および Low
です。 GitHub では、Common Vulnerability Scoring System (CVSS) データを使用して、アラートのセキュリティ重大度を計算します。
セキュリティの重大度が Critical
または High
のコード スキャンの結果では、既定でチェック エラーが発生します。 コード スキャン結果のチェック エラーを引き起こすセキュリティの重大度レベルを指定できます。
コード スキャン アラートを閉じる
アラートを閉じる方法は 2 つあります。
- コードの問題を修正します。
- アラートを無視または削除します。
コード スキャン アラートを無視する
アラートを無視することは、修正する必要がないと思われるアラートを閉じる方法です。 1 つの例として、テストにのみ使用されるコード内のエラーがあります。 また、エラーを修正するために必要な作業が、コードを改善する潜在的な利点を超える場合は、アラートを無視することもできます。
アラートは、コード内のコード スキャン注釈から、または [セキュリティ ] タブの概要リストから無視できます。一覧からアラートを閉じるには、[ アラートの無視 ] メニューを選択し、無視の理由を選択して、[ アラートの無視 ] ボタンを選択します。
アラートを却下すると:
- それはすべてのブランチで却下されます。
- プロジェクトの現在のアラートの数から削除されます。
- アラートの概要の [終了] リストに移動されます。 必要に応じて、ここから再度開くことができます。
- アラートを閉じた理由が記録されます。
- 次回コード スキャンを実行しても、同じコードではアラートは生成されません。
コード スキャン アラートを削除する
リポジトリの管理者アクセス許可がある場合は、アラートを削除できます。 アラートの削除は、次の場合に役立ちます。
- コード スキャン ツールを設定しますが、後で削除することにします。
- 引き続き使用するよりも大規模なクエリ セットを使用して CodeQL 分析を構成しました。
- ツールからいくつかのクエリを削除しました。
- コード スキャンの結果をクリーンアップする必要があります。
アラートは、[ セキュリティ ] タブの概要リストから削除できます。
アラートを削除する場合:
- すべてのブランチで削除されます。
- プロジェクトの現在のアラートの数から削除されます。
- アラートの概要の [終了] リストには追加されません。
- アラートを生成したコードが同じままで、構成を変更せずに同じコード スキャン ツールが再度実行される場合は、分析結果にアラートが再び表示されます。