EN JP CN

DISA STIG バージョン 3 の ID と Klocwork C および C++ チェッカーのマッピング

DISA STIG バージョン 3 の ID と Klocwork C および C++ チェッカーのマッピング

この記事では、DISA Security Technical Implementation Guide バージョン 3 の ID と Klocwork C/C++ チェッカーのマッピングを示します。DISA STIG の詳細については、DISA STIG Web サイトを参照してください。

DISA STIG ID C/C++ チェッカーコードと説明
APP2060.4

MISRA.EXPANSION.UNSAFE 安全ではないマクロの使用

MISRA.INCL.UNSAFE 安全でないヘッダーのインクルード

APP3050

LA_UNUSED  ラベルが使用されていません

UNREACH.GEN  到達不能コード

UNREACH.RETURN  到達不能な void return文

UNREACH.SIZEOF  アーキテクチャに関連した到達不能コード

VA_UNUSED.GEN  値を割り当て後に使用しません

VA_UNUSED.INIT  値を初期化後に使用しません

APP3080

SV.USAGERULES.SPOOFING  スプーフィングの影響を受けやすい関数の使用

APP3100

SV.PCC.CONST  CreateFile の呼び出し時に安全でない (定数) テンポラリファイルの名前が使用されています

SV.PCC.INVALID_TEMP_PATH  CreateFile の呼び出し時に安全でないテンポラリファイルの名前が使用されています

SV.PCC.MISSING_TEMP_CALLS.MUST  CreateFile の呼び出し時に安全なテンポラリファイルの名前が欠落しています

SV.PCC.MISSING_TEMP_FILENAME  CreateFile の呼び出し時にテンポラリファイルの名前が欠落しています

APP3120

CWARN.PASSBYVALUE.EXC  値によって渡された例外オブジェクトが大きすぎます

MISRA.CATCH.ALL try-catch ブロックに省略記号例外ハンドラーがありません

MISRA.CATCH.BY_VALUE クラス タイプの例外オブジェクトが値によってキャッチされています

MISRA.CATCH.NOALL 省略記号例外ハンドラーが try-catch ブロックの最後に置かれていません

MISRA.CATCH.WRONGORD try-catch ブロックで基本例外クラスのハンドラーが派生例外クラスのハンドラーよりも先に置かれています

MISRA.DECL.EXCPT.SPEC 異なる例外指定で関数が宣言されています

MISRA.THROW.EMPTY 空のスロー式が catch ブロックに属していません

MISRA.THROW.NULL NULL が明示的にスローされています

MISRA.THROW.PTR 例外オブジェクトがポインタになっています

SV.INCORRECT_RESOURCE_HANDLING.URH  安全でないリソース処理

SV.INCORRECT_RESOURCE_HANDLING.WRONG_STATUS  安全でないリソース処理

SV.RVT.RETVAL_NOTTESTED  戻り値の無視

APP3150.1

HCC  ハードコードされた資格情報の使用

HCC.PWD  ハードコードされたパスワードの使用

HCC.USER  ハードコードされたユーザー名の使用

RCA  危険な暗号化アルゴリズムが使用されています

RCA.HASH.SALT.EMPTY  空のソルトを持つ一方向性ハッシュの使用

SV.WEAK_CRYPTO.WEAK_HASH  弱ハッシュ関数

APP3330

HCC  ハードコードされた資格情報の使用

HCC.PWD  ハードコードされたパスワードの使用

HCC.USER  ハードコードされたユーザー名の使用

RCA  危険な暗号化アルゴリズムが使用されています

RCA.HASH.SALT.EMPTY  空のソルトを持つ一方向性ハッシュの使用

SV.WEAK_CRYPTO.WEAK_HASH  弱ハッシュ関数

APP3340

HCC  ハードコードされた資格情報の使用

HCC.PWD  ハードコードされたパスワードの使用

HCC.USER  ハードコードされたユーザー名の使用

RCA  危険な暗号化アルゴリズムが使用されています

RCA.HASH.SALT.EMPTY  空のソルトを持つ一方向性ハッシュの使用

SV.WEAK_CRYPTO.WEAK_HASH  弱ハッシュ関数

APP3450.1

SV.BRM.HKEY_LOCAL_MACHINE  レジストリ操作関数の 'hkey' とパラメーターしての HKEY_LOCAL_MACHINE の使用

SV.LPP.CONST  危険な関数についての安全でないマクロの使用

SV.LPP.VAR  危険な関数についての安全でないパラメーターの使用

SV.PIPE.CONST  パイプのハイジャックの可能性

SV.PIPE.VAR  パイプのハイジャックの可能性

SV.USAGERULES.PERMISSIONS  特権の昇給の使用

APP3480.1

SV.BRM.HKEY_LOCAL_MACHINE  レジストリ操作関数の 'hkey' とパラメーターしての HKEY_LOCAL_MACHINE の使用

SV.LPP.CONST  危険な関数についての安全でないマクロの使用

SV.LPP.VAR  危険な関数についての安全でないパラメーターの使用

SV.PIPE.CONST  パイプのハイジャックの可能性

SV.PIPE.VAR  パイプのハイジャックの可能性

SV.USAGERULES.PERMISSIONS  特権の昇給の使用

APP3480.2

SV.BRM.HKEY_LOCAL_MACHINE  レジストリ操作関数の 'hkey' とパラメーターしての HKEY_LOCAL_MACHINE の使用

SV.LPP.CONST  危険な関数についての安全でないマクロの使用

SV.LPP.VAR  危険な関数についての安全でないパラメーターの使用

SV.PIPE.CONST  パイプのハイジャックの可能性

SV.PIPE.VAR  パイプのハイジャックの可能性

SV.USAGERULES.PERMISSIONS  特権の昇給の使用

APP3500

SV.BRM.HKEY_LOCAL_MACHINE  レジストリ操作関数の 'hkey' とパラメーターしての HKEY_LOCAL_MACHINE の使用

SV.LPP.CONST  危険な関数についての安全でないマクロの使用

SV.LPP.VAR  危険な関数についての安全でないパラメーターの使用

SV.PIPE.CONST  パイプのハイジャックの可能性

SV.PIPE.VAR  パイプのハイジャックの可能性

SV.USAGERULES.PERMISSIONS  特権の昇給の使用

APP3510

ABV.TAINTED  未検証の入力によるバッファオーバーフロー

NNTS.TAINTED  未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列

SV.TAINTED.ALLOC_SIZE  メモリ割り当て時の未検証の整数の使用

SV.TAINTED.BINOP  バイナリ演算での未検証整数値の使用

SV.TAINTED.CALL.BINOP  バイナリ演算での未検証整数値の使用

SV.TAINTED.CALL.DEREF  未検証ポインターの逆参照

SV.TAINTED.CALL.INDEX_ACCESS  関数呼び出し時の配列インデックスとしての未検証の整数の使用

SV.TAINTED.CALL.LOOP_BOUND  関数呼び出しのループ条件での未検証の整数の使用

SV.TAINTED.DEREF  未検証ポインターの逆参照

SV.TAINTED.FMTSTR  書式文字列での未検証データの使用

SV.TAINTED.INDEX_ACCESS  配列インデックスとしての未検証の整数の使用

SV.TAINTED.LOOP_BOUND  ループ条件での未検証の整数の使用

SV.TAINTED.PATH_TRAVERSAL  パストラバーサルでの未検証データの使用

SV.TAINTED.SECURITY_DECISION  セキュリティ決定

APP3530

SV.TAINTED.INJECTION  コマンドインジェクション

APP3540.1

SV.TAINTED.INJECTION  コマンドインジェクション

APP3550

DBZ.CONST  ゼロ定数による除算が発生しました

DBZ.CONST.CALL  値 '0' が除数としてこの値を使用できる関数に渡されます

DBZ.GENERAL  ゼロ除算が発生した可能性があります

DBZ.ITERATOR  ループ反復子でゼロ除算が発生した可能性があります

MISRA.CAST.FLOAT 自明ではない浮動型の式が広いタイプにキャストされています

MISRA.CAST.FLOAT.WIDER より広い浮動小数点タイプへの浮動小数点式のキャスト

MISRA.CAST.FLOAT_INT 整数型への浮動小数点式のキャスト

MISRA.CAST.FUNC_PTR 関数ポインタと整数型以外の間のキャストです。

MISRA.CAST.FUNC_PTR.2012  関数を指すポインタと、別の非互換タイプとの間で実行された変換

MISRA.CAST.FUNC_PTR.CPP キャストにより関数ポインタがその他のポインタ型に変換されます

MISRA.CAST.INCOMPLETE_PTR_TO_ANY.2012  不完全なタイプ を指すポインタと、別のタイプとの間で実行された変換

MISRA.CAST.INT 自明ではない整数式が広い型または別の符号を持つ型にキャストされています

MISRA.CAST.INT.SIGN 自明ではない複合式が別の符号を持つ型にキャストされています

MISRA.CAST.INT.WIDER より広い整数型への複合式のキャスト

MISRA.CAST.INT_FLOAT 浮動小数点タイプへの複合式のキャスト

MISRA.CAST.INT_TO_PTR 整数型または void を指すポインタを持つオブジェクトがポインタ型にキャストされています

MISRA.CAST.OBJ_PTR_TO_INT.2012  オブジェクトを指すポインタと、整数タイプとの間で実行された変換

MISRA.CAST.OBJ_PTR_TO_NON_INT.2012  オブジェクトを指すポインタと、非整数算術演算タイプとの間のキャスト

MISRA.CAST.OBJ_PTR_TO_OBJ_PTR.2012  オブジェクト タイプを指すポインタと、異なるオブジェクト タイプを指す別のポインタとの間のキャスト

MISRA.CAST.POLY.TYPE 多様性基本クラスから派生クラスへのキャストです

MISRA.CAST.PTR オブジェクトタイプを指すポインタとオブジェクトタイプを指す別のポインタ間のキャストです

MISRA.CAST.PTR.UNRELATED ポインタ型のオブジェクトを関連のない型にキャストしています

MISRA.CAST.PTR.VRCLASS 仮想基本クラスを指すポインタから派生クラスを指すポインタへのキャストにおいて、'dynamic_cast' を用いていません

MISRA.CAST.PTR_TO_INT ポインタと整数型間のキャスト

MISRA.CAST.UNSIGNED_BITS unsigned char または short でのビット演算の結果は元の型にキャストできません

MISRA.CAST.VOID_PTR_TO_INT.2012  void を指すポインタと算術演算タイプとの間のキャスト

MISRA.CAST.VOID_PTR_TO_OBJ_PTR.2012  void ポインタから、オブジェクトを指すポインタに実行された変換

MISRA.UMINUS.UNSIGNED 単項マイナス演算子が符号なしオペランドに対して使用されています。

PRECISION.LOSS  精度の損失

PRECISION.LOSS.CALL  関数呼び出し中の精度の損失

SV.TAINTED.BINOP  バイナリ演算での未検証整数値の使用

SV.TAINTED.CALL.BINOP  バイナリ演算での未検証整数値の使用

APP3560

SV.FMTSTR.GENERIC  書式文字列の脆弱性

SV.FMT_STR.BAD_SCAN_FORMAT  入力書式指定子エラー

SV.FMT_STR.PRINT_FORMAT_MISMATCH.BAD  互換性がない print 関数パラメーターの型

SV.FMT_STR.PRINT_FORMAT_MISMATCH.UNDESIRED  予期しない print 関数パラメーターの型

SV.FMT_STR.PRINT_IMPROP_LENGTH  print 関数呼び出しの長さ修飾子の不適切な使用

SV.FMT_STR.PRINT_PARAMS_WRONGNUM.FEW  print 関数呼び出しの引数が少なすぎます

SV.FMT_STR.PRINT_PARAMS_WRONGNUM.MANY  print 関数呼び出しの引数が多すぎます

SV.FMT_STR.UNKWN_FORMAT  print 関数呼び出しの書式指定子が不明です

SV.TAINTED.FMTSTR  書式文字列での未検証データの使用

SV.TAINTED.INJECTION  コマンドインジェクション

APP3570

NNTS.TAINTED  未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列

SV.CODE_INJECTION.SHELL_EXEC  シェル実行へのコマンドインジェクション

SV.EMAIL  未チェックの電子メール

SV.EXEC  プロセス インジェクション

SV.EXEC.DIR  プロセス インジェクション。作業ディレクトリ

SV.EXEC.ENV  プロセス インジェクション。環境変数

SV.FMTSTR.GENERIC  書式文字列の脆弱性

SV.TAINTED.INJECTION  コマンドインジェクション

APP3590.1

ABV.ANY_SIZE_ARRAY  バッファオーバーフロー - 配列インデックスが範囲外

ABV.GENERAL  バッファオーバーフロー - 配列インデックスが範囲外

ABV.ITERATOR  バッファオーバーフロー - 配列インデックスが範囲外の可能性

ABV.STACK  バッファオーバーフロー - ローカル配列インデックスが範囲外

ABV.TAINTED  未検証の入力によるバッファオーバーフロー

ABV.UNICODE.BOUND_MAP  文字関数のマッピング時のバッファオーバーフロー

ABV.UNICODE.FAILED_MAP  関数のマッピングに失敗します

ABV.UNICODE.NNTS_MAP  文字関数のマッピング時のバッファオーバーフロー

NNTS.MIGHT  バッファオーバーフロー - 非 NULL 終了文字列

NNTS.MUST  バッファオーバーフロー - 非 NULL 終了文字列

NNTS.TAINTED  未検証のユーザー入力が原因のバッファオーバーフロー - 非 NULL 終了文字列

RABV.CHECK  境界チェック前のインデックスの不審な使用

SV.STRBO.BOUND_COPY.OVERFLOW  バインドされた文字列コピーでのバッファオーバーフロー

SV.STRBO.BOUND_COPY.UNTERM  次の文字列演算でバッファオーバーフローの可能性があります

SV.STRBO.BOUND_SPRINTF  バインドされた sprintf でのバッファオーバーフロー

SV.STRBO.UNBOUND_COPY  バインドされていない文字列コピーでのバッファオーバーフロー

SV.STRBO.UNBOUND_SPRINTF  バインドされていない sprintf でのバッファオーバーフロー

SV.TAINTED.INJECTION  コマンドインジェクション

APP3590.2

SV.FMTSTR.GENERIC  書式文字列の脆弱性

SV.FMT_STR.BAD_SCAN_FORMAT  入力書式指定子エラー

SV.STRBO.UNBOUND_COPY  バインドされていない文字列コピーでのバッファオーバーフロー

SV.STRBO.UNBOUND_SPRINTF  バインドされていない sprintf でのバッファオーバーフロー

SV.TAINTED.INJECTION  コマンドインジェクション

SV.TAINT_NATIVE  不正データがネイティブ コードに渡されています

SV.USAGERULES.PERMISSIONS  特権の昇給の使用

APP3590.3

ABV.GENERAL  バッファオーバーフロー - 配列インデックスが範囲外

MISRA.SIGNED_CHAR.NOT_NUMERIC 数値でない値に 'signed char' または 'unsigned char' が使用されています

APP3600

SV.DLLPRELOAD.NONABSOLUTE.DLL  DLL プリロードのハイジャック ベクターの可能性

APP3630.1

SV.TOCTOU.FILE_ACCESS  ファイル アクセス時の作成日時/使用日時の競合状態

APP3630.2

MISRA.DEFINE.NOTGLOBAL グローバルレベル以外で定義されています

MISRA.ONEDEFRULE.VAR ヘッダーファイルでグローバル変数が定義されています

APP3630.4

CONC.DL  デッドロック

SV.LPP.CONST  危険な関数についての安全でないマクロの使用

SV.LPP.VAR  危険な関数についての安全でないパラメーターの使用

SV.PIPE.CONST  パイプのハイジャックの可能性

APP3760

SV.FMTSTR.GENERIC  書式文字列の脆弱性

APP3780

SV.FMTSTR.GENERIC  書式文字列の脆弱性

APP3800

CONC.DL  デッドロック