code scanning と CodeQL について
CodeQL は、セキュリティ チェックを自動化するために GitHub が開発した、コード分析エンジンです。 CodeQL を使用してコードを分析し、結果を code scanning アラートとして表示することができます。
code scanning に対して CodeQL 分析を使用する方法には、主に 2 通りあります。
-
CodeQL ワークフローをご利用のリポジトリに追加します。 これにより、github/codeql-action を使用して、CodeQL CLI が実行されます。 詳しくは、「About code scanning with CodeQL」を参照してください。
-
外部 CI システムで CodeQL CLI CLI を直接実行し、その結果を GitHub にアップロードします。 詳しくは、「既存の CI システムでコード スキャンを使用する」を参照してください。
code scanning アラートについては、「Code scanningアラートについて」をご覧ください。
CodeQL について
CodeQL はコードをデータのように扱い、コードの潜在的な脆弱性を従来の静的分析よりも高い精度で見つけることができます。
- ご利用のコードベースを表現する CodeQL データベースを生成します。
- 次に、そのデータベースに対して CodeQL クエリを実行して、コードベース内の問題を特定します。
- CodeQL を code scanning で使用すると、クエリ結果は GitHub AE に code scanning アラートとして表示されます。
CodeQL ではコンパイルおよびインタープリタ言語の両方がサポートされていて、サポートされている言語で記述されたコードの脆弱性とエラーを見つけることができます。
- C/C++
- C#
- Go
- Java
- JavaScript/TypeScript
- Python
- Ruby
注:
- Ruby の CodeQL 分析は、現在ベータ版です。 ベータ版の間、Ruby の分析は他の言語の CodeQL 分析ほど包括的ではありません。
javascript
を使用して、JavaScript、TypeScript、またはその両方で記述されたコードを分析します。
詳細については、CodeQL Web サイトのドキュメント「サポートされている言語とフレームワーク」を参照してください。
CodeQL クエリについて
GitHub 専門家、セキュリティ研究者、およびコミュニティの貢献者は、code scanning に使用される既定の CodeQL クエリを作成して維持します。 クエリは、分析を改善し、誤検知の結果を減らすために定期的に更新されます。 クエリはオープン ソースであるため、github/codeql
リポジトリ内のクエリを表示して投稿できます。 詳細については、CodeQL Web サイトの CodeQL に関するページを参照してください。 自分で独自のクエリを記述することもできます。 詳細については、CodeQL ドキュメントにある CodeQL クエリに関するページを参照してください。
詳細設定または外部 CI システムを使用してコードをスキャンする場合は、分析の一部として追加のクエリを実行できます。
実行したいクエリは、リポジトリ内の QL パックに属していなければなりません。 クエリは、標準ライブラリ (クエリの import LANGUAGE
ステートメントによって参照されるライブラリ)、またはクエリと同じ QL パック内のライブラリにのみ依存している必要があります。