PCI DSS ID (C および C++)

支払カード業界データセキュリティ基準 (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.NON_ARRAY  非配列オブジェクトが配列として使用される

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  特権の昇給の使用