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 クエリに関するページを参照してください。

注: code scanning の GitHub の自動修正はベータ版です。 機能とドキュメントテーションは変更される場合があります。 このフェーズでは、機能は、CodeQL によって識別される JavaScript、TypeScript、Python、Java アラートに制限されます。 エンタープライズ アカウントがあり、GitHub Advanced Security を使用している場合、エンタープライズはベータ版にアクセスできます。

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