Klocwork C および C++ チェッカーにマッピングされた PCI DSS ID

支払カード業界データセキュリティ基準 (PCI DSS) は、アカウントデータを保護するように考案された、技術要件と運用要件のベースラインとして機能します。PCI DSS は、カード会員のデータセキュリティを促進、強化するとともに、一貫したデータセキュリティ対策の広範な採用を全世界的に促進する目的で開発されました。

以下の表は、PCI DSS バージョン 3.2.1 ID を Klocwork C および C++ チェッカーにマッピングします。

ID チェッカー名および説明
6.5.1

LS.CALL   GUI 関数におけるローカライズされない文字列の不審な使用

LS.CALL.STRING   GUI 関数におけるローカライズされない文字列の不審な使用

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

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

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

SV.DLLPRELOAD.NONABSOLUTE.EXE   プロセスインジェクションベクターの可能性

SV.DLLPRELOAD.SEARCHPATH   DLL の検索に SearchPath の使用は推奨されません

SV.FIU.PROCESS_VARIANTS   危険なプロセス作成の使用

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

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

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

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

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

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

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

SV.PCC.MODIFIED_BEFORE_CREATE   CreateFile の呼び出し前にテンポラリファイルが変更されます

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

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

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

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

SV.STR_PAR.UNDESIRED_STRING_PARAMETER   ファイルパスの不要な文字列

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.INDEX_ACCESS   配列インデックスとしての未検証の整数の使用

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

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

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

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

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

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

SV.USAGERULES.PROCESS_VARIANTS   危険なプロセス作成関数の使用

UNINIT.CTOR.MIGHT   コンストラクタにおける未初期化の変数の可能性

UNINIT.CTOR.MUST   コンストラクタにおける未初期化の変数

UNINIT.HEAP.MIGHT   未初期化のヒープの使用の可能性

UNINIT.HEAP.MUST   未初期化のヒープの使用

UNINIT.STACK.ARRAY.MIGHT   未初期化の配列の可能性

UNINIT.STACK.ARRAY.MUST   未初期化の配列

UNINIT.STACK.ARRAY.PARTIAL.MUST   一部が未初期化の配列

UNINIT.STACK.MIGHT   未初期化の変数の可能性

UNINIT.STACK.MUST   未初期化の変数

6.5.2

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

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

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

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

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

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

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

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

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

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

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

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

CXX.SUSPICIOUS_INDEX_CHECK   境界チェック後のインデックスの不審な使用

CXX.SUSPICIOUS_INDEX_CHECK.CALL   境界チェック後の関数呼び出しでのインデックスの不審な使用

CXX.SUSPICIOUS_INDEX_CHECK.ZERO   ゼロのインデックスチェック後のインデックスの不審な使用

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

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

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

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

RN.INDEX   負の値のチェック前のインデックスの使用は問題となる可能性があります

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

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.ALLOC_SIZE   メモリ割り当て時の未検証の整数の使用

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

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

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

SV.UNBOUND_STRING_INPUT.CIN   バインドされていない文字列入力についての cin の使用法

SV.UNBOUND_STRING_INPUT.FUNC   バインドされていない文字列入力の使用法

6.5.3

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

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

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

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

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

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

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

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

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

SV.PCC.MODIFIED_BEFORE_CREATE   CreateFile の呼び出し前にテンポラリファイルが変更されます

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

6.5.4

SV.BFC.USING_STRUCT   bind 関数の呼び出しに使用される struct sockaddr_in 構造の sin_addr.s_addr フィールドでの INADDR_ANY の使用

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

6.5.5

AUTOSAR.EXCPT.DYNAMIC_SPEC   動的な例外指定は使用してはなりません

AUTOSAR.EXCPT.NOEXCPT_THROW   関数を noexcept、noexcept(true)、または noexcept(<true condition>) と宣言する場合、その関数は例外を送出して終了してはなりません

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

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

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

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

MISRA.CTOR.TRY.NON_STATIC   コンストラクタまたはデストラクタの関数 try-catch ブロックが非スタティックなメンバーを参照しています

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

MISRA.DTOR.THROW   デストラクタにスローします

MISRA.INCL.SIGNAL.2012   標準ヘッダーファイル signal.h は使用しない

MISRA.STDLIB.LONGJMP   setjmp マクロまたは longjmp 関数の使用

MISRA.STDLIB.SIGNAL   signal.h の信号処理装置の使用

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

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

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

MISRA.TRY.JUMP   goto ステートメントまたは switch ステートメントでコントロールを try ブロックに転送できます

6.5.7

SV.TAINTED.XSS.REFLECTED   クロスサイト スクリプティング脆弱性

6.5.8

SV.STR_PAR.UNDESIRED_STRING_PARAMETER   ファイルパスの不要な文字列

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

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