Klocwork チェッカーにマッピングされた支払カード業界データセキュリティ基準 ID

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

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   バッファオーバーフロー - 配列インデックスが範囲外

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

C#

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

CS.SQL.INJECT.LOCAL   SQL インジェクション

6.5.3

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

6.5.5

CS.EMPTY.CATCH   空の catch 句

6.5.8

CS.NPS   アクセスする前に、リソースに設定されたパーミッションがありません

Java

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

SV.CLASSDEF.INJ   ランタイムクラス定義インジェクション

SV.CLASSLOADER.INJ   クラスローダー URL インジェクション

SV.DATA.BOUND   信頼できないデータが信頼できるストレージにリークしています

SV.DATA.DB   データ インジェクション

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

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

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

SV.EXEC.LOCAL   プロセス インジェクション。ローカル引数

SV.PATH   パスまたはファイル名のインジェクション

SV.PATH.INJ   ファイル インジェクション

SV.SQL   SQL インジェクション

SV.SQL.DBSOURCE   未検証のデータベースからの情報がSQL文に使用されています

6.5.2

SV.DOS.ARRINDEX   不正なインデックスが配列アクセスに使用されています

SV.DOS.ARRSIZE   不正なサイズが配列割り当てに使用されています

6.5.3

SV.HASH.NO_SALT   ソルトなしの一方向性暗号化ハッシュの使用

SV.PASSWD.HC   ハードコードされたパスワード

SV.PASSWD.HC.EMPTY   空のパスワード

SV.PASSWD.PLAIN   プレーンテキストのパスワード

SV.RANDOM   安全ではない乱数ジェネレータの使用

SV.SENSITIVE.DATA   暗号化されていない機密データが書き込まれます

SV.SENSITIVE.OBJ   暗号化されていない機密データを持つオブジェクトが保存されます

SV.WEAK.CRYPT   破られたまたは危険な暗号化アルゴリズムの使用

6.5.4

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

SV.HTTP_SPLIT   HTTP 応答分割

SV.SERIAL.NOREAD   メソッド readObject() を Serializable クラスに対して定義する必要があります

SV.SERIAL.NOWRITE   メソッド writeObject() を Serializable クラスに対して定義する必要があります

SV.SERIAL.SIG   Serializable クラスのメソッド readObject() および writeObject() が正しいシグネチャを持つ必要があります

SV.TAINT   不正データ

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

6.5.5

ECC.EMPTY   Catch 節が空です

EXC.BROADTHROWS   過度に広範な範囲に対応するメソッドが宣言をスローしています

JD.CATCH   ランタイム例外のキャッチ

JD.FINRET   finally 内の return

JD.UNCAUGHT   例外がキャッチされていません

SV.IL.DEV   設計情報の漏洩

SV.IL.FILE   ファイル名のリーク

UMC.SYSERR   System.err メソッドの呼び出しを使用したデバッグ プリントは好ましくありません

UMC.SYSOUT   System.out メソッドの呼び出しを使用したデバッグ プリントは好ましくありません

6.5.7

SV.XSS.DB   クロスサイト スクリプティング (Stored XSS)

SV.XSS.REF   クロスサイト スクリプティング (Reflected XSS)

6.5.8

ANDROID.LIFECYCLE.SV.FRAGMENTINJ   未検証のフラグメント クラス名

ANDROID.LIFECYCLE.SV.GETEXTRA   未検証の外部データ

SV.DOS.TMPFILEDEL   JVM のライフタイムの間一時ファイルが存続します

SV.DOS.TMPFILEEXIT   一時ファイルが存続します

6.5.9

SV.CSRF.GET   GET リクエスト中の CSRF トークン

SV.CSRF.ORIGIN   オリジンチェックなしの要求ハンドラ

SV.CSRF.TOKEN   CSRF チェックなしの状態変更要求ハンドラ

6.5.10

SV.ECV   クラスローダが直接使用されています

SV.LDAP   未検証のユーザ入力が LDAP フィルタとして使用されています