Skip to main content

CodeQL 分析用の C および C++ クエリ

default または security-extended クエリ スイートを選択時、CodeQL が C または C++ のコード分析に使用するクエリについて詳しく見てみましょう。

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

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

CodeQL には、C および C++ コードを分析するための多くのクエリが含まれています。 default クエリ スイート内のすべてのクエリは、既定で実行されます。 security-extended クエリ スイートを使用する場合は、追加のクエリが実行されます。 詳しくは、「CodeQL クエリ スイート」を参照してください。

C および C++ 分析用の組み込みクエリ

次の表に、最新リリースの CodeQL アクションと CodeQL CLI で使用できるクエリを示します。 詳細については、CodeQL ドキュメントにある CodeQL クエリに関するページを参照してください。

クエリ名関連する CWE既定値Extended
範囲チェック前に使用される配列オフセット120, 125
スプーフィングによる認証バイパス290
整数加算のオーバーフローに対する不適切なチェック190, 192
不適切な制限付き書き込み120, 787, 805
memset の呼び出しが削除される可能性がある14
ループ内の alloca の呼び出し770
宣言されたパラメーターよりも少ない引数を持つ関数の呼び出し234, 685
HRESULT とブール型の間のキャスト253
char* から wchar_t* へのキャスト704
証明書がチェックされていない295
証明書の結果のコンフレーション295
クロスサイト スクリプティングに対する CGI スクリプトの脆弱性079
SQLite データベース内の機密情報のクリア テキスト ストレージ313
バッファー内の機密情報のクリア テキスト ストレージ312
ファイル内の機密情報のクリア テキスト ストレージ260, 313
機密情報のクリア テキスト送信319, 359
誤解を招くインデントの前のコンマ1078, 670
ループ条件における狭い型と広い型の比較190, 197, 835
'cin' の危険な使用676
承認されていない制御領域へのシステム データの露出497
HTTPS URL を使用できない319, 345
アクセス許可を制限せずに作成されたファイル732
O_CREAT フラグを使用して開かれたファイル (mode 引数なし)732
'not' 演算子の使用法が正しくない480
不適切な割り当てエラー処理570, 252, 755
'scanf' のような関数の戻り値チェックが正しくない253
無効なポインタ逆参照119, 125, 193, 787
書き込みをオーバーランする可能性があります120, 787, 805
new/free または malloc/delete の不一致401
'scanf' のような関数の戻り値チェックがない252, 253
乗算結果を大きな型に変換190, 192, 197, 681
ゼロ終端文字を入れるスペースがない131, 120, 122
非定数書式指定文字列134
ポインター型の配列に割り当てられたメモリが不足している131, 122
ポインター型に割り当てられたメモリが不足しているす131, 122
CreateProcess の呼び出しで引用符で囲まれていないパスを持つ NULL アプリケーション名428
制御されていない割り当てサイズのオーバーフロー190, 789
オーバーランの書き込み119, 131
ポインター オーバーフロー チェック758
文字列コピーのバッファー サイズが間違っている可能性がある676, 119, 251
二重開放の可能性415
機密システム データが許可されていない制御領域にさらされる可能性497
開放後に使用する可能性がある416
snprintf へのオーバーフローの可能性がある呼び出し190, 253
書き込みをオーバーランする可能性がある120, 787, 805
float を使用した書き込みを文字列変換にオーバーランする可能性がある120, 787, 805
初期化されていない可能性のあるローカル変数665, 457
安全でない可能性がある strncat への呼び出し788, 676, 119, 251
strcat の安全でない可能性がある使用676, 120, 251
以前の逆参照による冗長 null チェック476
スタックに割り当てられたメモリを返す825
SECURITY_DESCRIPTOR で DACL を NULL に設定する732
符号付きオーバーフロー チェック128, 190
静的配列アクセスによってオーバーフローが発生する可能性がある119, 131
疑わしい 'sizeof' の使用467
sizeof を使用した疑わしい追加468
疑わしいポインターのスケーリング468
疑わしいポインターの void へのスケーリング468
チェック時間と使用時間のファイルシステムの競合状態367
書式設定関数の引数が少なすぎる234, 685
無制限の書き込み120, 787, 805
算術式の制御されないデータ190, 191
SQL クエリの制御されないデータ089
OS コマンドで使用される制御されていないデータ078, 088
パス式で使用される制御されないデータ022, 023, 036, 073
制御されないフォーマット文字列134
制御されないプロセス操作114
コンストラクターでの this の安全でない使用670
ゼロと比較した符号なし差分式191
終端化されていない可変個引数呼び出し121
条件に対する信頼されていない入力807
アップキャストされた配列がポインター算術で使用119, 843
破損あるいは危険な暗号化アルゴリズムの使用327
不十分なキー サイズでの暗号化アルゴリズムの使用326
Heartbleed での OpenSSL のバージョンの使用327, 788
危険な機能の使用242, 676
期限切れのスタック アドレスの使用825
潜在的に危険な機能の使用676
有効期間終了後の文字列の使用416, 664
有効期間終了後の一意のポインターの使用416, 664
書式設定関数の引数の型が正しくない686
XML 外部エンティティの拡張611