CERT ID (Java)

Klocwork Java チェッカーに対する CERT Java ID の以下のマッピングは、コミュニティで開発されたマッピングです。

ガイドライン チェッカー名および説明
CERT DCL02-J (L3): 拡張 for 文の実行中にループ本体の要素を更新しない

JD.UNMOD  変更できないコレクションの変更

CERT ENV03-J (L1): 危険な組み合わせのパーミッションを割り当てない

SV.CLEXT.POLICY  クラスが 'java.security.Policy' を拡張しています

CERT ENV06-J (L1): 本番コードにはデバッグエントリポイントを含めない

JAVA.DEBUG.ENTRY  TRANSLATE ME: Production code must not contain debugging entry points

CERT ERR01-J (L3): センシティブな情報を例外によって外部に漏えいしない

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

CERT ERR03-J (L3): メソッドが処理に失敗した場合はオブジェクトの状態を元に戻す

SV.HTTP_SPLIT  HTTP 応答分割

SV.SSRF.URI  無効化されたユーザー入力に基づく URI です。

CERT ERR04-J (L3): finally ブロックの処理を途中で終了しない

JD.FINRET  finally 内の return

CERT ERR05-J (L3): チェック例外を finally ブロックの外に伝播させない

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

CERT ERR07-J (L2): RuntimeException, Exception, Throwable をスローしない

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

CERT ERR08-J (L1): NullPointerException およびその親クラスの例外をキャッチしない

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

CERT ERR09-J (L3): 信頼できないコードにJVMを終了させない

SV.UMC.EXIT  System.exit() および Runtime.exit() メソッドの呼び出しをサーブレット コードで使用すべきではありません

UMC.EXIT  System.exit() メソッドの呼び出しは好ましくありません

CERT EXP00-J (L2): メソッドの返り値を無視しない

RI.IGNOREDCALL  immutable オブジェクトに対して呼び出されたメソッドから返された値が無視されています

RR.IGNORED  戻り値が無視されています

CERT EXP01-J (L3): オブジェクトが必要な場合は null を使用しない

NPE.COND  null チェック後の null ポインタを参照しています

NPE.CONST  null 定数が代入されたオブジェクトを参照しています

NPE.RET  メソッドから返された null ポインタを参照しています

NPE.RET.UTIL  マップまたはコレクションから返されたnull 値を参照しています

NPE.STAT  戻り値の null ポインタ 参照 (統計情報)

REDUN.EQNULL  equals() に式と null が指定された疑わしい呼び出しです(決して true にはなりません)

CERT EXP02-J (L2): 2つの配列を比較するのに Object.equals() メソッドを使用しない

JD.EQ.ARR  配列に対する 'equals' の呼び出し

CERT EXP03-J (L2): ボクシングされたプリミティブ型の値の比較に等値演算子を使わない

CMP.OBJ  == によるオブジェクトの比較

CERT FIO01-J (L3): 適切なパーミッションを設定してファイルを作成する

SV.PERMS.HOME  パーミッションを設定せずに、ユーザーのホームディレクトリに作成されるファイル

SV.PERMS.WIDE  広すぎるパーミッション

CERT FIO03-J (L2): 一時ファイルはプログラムの終了前に削除する

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

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

CERT FIO04-J (L3): 不要になったリソースは解放する

RLK.AWT  AWT オブジェクトが終了時に破棄されていません

RLK.FIELD  フィールドに保存されたシステム リソースがリークする可能性があります

RLK.HIBERNATE  Hibernate オブジェクトが終了時に閉じられていません

RLK.IMAGEIO  ImageIO ストリームが終了時に閉じられていません

RLK.IN  入力ストリームが終了時に閉じられていません

RLK.JNDI  JNDI コンテキストが終了時に閉じられていません

RLK.JPA  {3} オブジェクトが終了時に閉じられていません。

RLK.MAIL  JavaMail オブジェクトが終了時に閉じられていません

RLK.MICRO  Java Microedition 接続が終了時に閉じられていません

RLK.NIO  NIO オブジェクトが終了時に閉じられていません

RLK.OUT  出力ストリームが終了時に閉じられていません

RLK.SOCK  ソケットが終了時に閉じられていません

RLK.SQLCON  Sql 接続が終了時に閉じられていません

RLK.SQLOBJ  Sql オブジェクトが終了時に閉じられていません

RLK.SWT  SWT オブジェクトが終了時に破棄されていません

RLK.ZIP  Zip ファイルが終了時に閉じられていません

CERT FIO13-J (L3): センシティブな情報を信頼境界の外に記録しない

SV.IL.SESSION  セッション ID のログ記録

CERT FIO16-J (L3): パス名は検証する前に正規化する

SV.EXEC.PATH  信頼できない検索パス

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

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

SV.TMPFILE  一時ファイルのパス改ざん

CERT IDS00-J (L1): SQL インジェクションを防ぐ

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

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

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

CERT IDS01-J (L1): 文字列は検査するまえに標準化する

SV.TAINT  不正データ

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

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

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

CERT IDS03-J (L2): ユーザ入力を無害化せずにログに保存しない

SV.LOG_FORGING  ログの偽造

CERT IDS07-J (L1): Runtime.exec() メソッドに渡された信頼できないデータを無害化する

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

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

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

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

SV.EXEC.PATH  信頼できない検索パス

CERT IDS16-J (L1): XML インジェクションを防ぐ

JAVA.SV.XML.INVALID  XML は Java オブジェクトにマーシャリング解除される前に検証されません

CERT IDS17-J (L2): XML の外部エンティティ攻撃を防ぐ

SV.XXE.DBF  XML 外部実体攻撃の可能性

SV.XXE.SF  XML 外部実体攻撃の可能性

SV.XXE.SPF  XML 外部実体攻撃の可能性

SV.XXE.TF  XML 外部実体攻撃の可能性

SV.XXE.XIF  XML 外部実体攻撃の可能性

SV.XXE.XRF  XML 外部実体攻撃の可能性

CERT JNI00-J (L3): ネイティブメソッドにはラッパーを定義する

JAVA.NATIVE.PUBLIC  TRANSLATE ME: Define wrappers around native methods

CERT JNI01-J (L1): 直近の呼出し元のクラスローダーのインスタンス(loadLibrary)を使ってタスクを実行する標準APIを安全に呼出す

SV.LOADLIB.INJ  'loadLibrary' メソッドに対する信頼できない呼び出し

CERT LCK05-J (L3): 信頼できないコードによって変更されうる static フィールドへのアクセスは同期する

SV.SHARED.VAR  サーブレットから static 変数への非同期アクセス

CERT LCK07-J (L3): デッドロックを回避するためにロックは同一順序で要求および解放する

JD.LOCK  取得したロックを解放していません

CERT LCK09-J (L3): 途中で待機状態になる可能性のある操作をロックを保持したまま実行しない

JD.LOCK.NOTIFY  ロックが保持された状態で 'notify' メソッドが呼び出されています

JD.LOCK.SLEEP  ロックが保持された状態で 'sleep' メソッドが呼び出されています

JD.LOCK.WAIT  ロックが保持された状態で 'wait' メソッドが呼び出されています

CERT LCK10-J (L3): 正しいダブルチェックロック手法を使う

JD.SYNC.DCL  ダブルチェック ロッキング

CERT MET01-J (L2): メソッド引数の検証には決してアサートを使用しない

JAVA.ASSERT.ARG  TRANSLATE ME: Never use assertions to validate method arguments

CERT MET09-J (L3): equals() メソッドを実装するクラスでは hashCode() メソッドも実装する

EHC.EQ  クラスが hashCode() を定義していますが、equals() は定義していません

EHC.HASH  クラスが equals() を定義していますが、hashCode() は定義していません

CERT MET12-J (L2): ファイナライザは使わない

FIN.EMPTY  空の finalize() メソッドは削除する必要があります

FIN.NOSUPER  finalize() メソッドの実装は super.finalize() を呼び出す必要があります

JD.UMC.FINALIZE  'Object.finalize' メソッドが明示的に呼び出されています

JD.UMC.RUNFIN  runFinalizersOnExit() が呼び出されています

SV.EXPOSE.FIN  finalize() メソッドは、public ではなく protected アクセス修飾子を使用する必要があります

CERT MSC00-J (L2): セキュアなデータ交換には Socket クラスではなく SSLSocket クラスを使用する

SV.WEAK.TLS  脆弱な SSL/TLS プロトコルは使用しないでください。

CERT MSC01-J (L3): 空の無限ループを使用しない

JAVA.INF.LOOP.EMPTY  TRANSLATE ME: Do not use an empty infinite loop

CERT MSC02-J (L1): 高品質の乱数を生成する

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

CERT MSC03-J (L1): センシティブな情報をハードコードしない

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

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

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

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

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

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

CERT MSC05-J (L3): ヒープメモリを使い果たさない

JD.INF.ALLOC  無限ループ内での割り当てです。

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

SV.INT_OVF  不正データが整数オーバーフローを引き起こす可能性があります

CERT MSC06-J (L3): 繰り返し処理中に基となるコレクションを変更しない

JD.CONCUR  ConcurrentModificationException の可能性があります

CERT MSC11-J (L2): servlet 内のセッション情報をリークさせない

SV.IL.SESSION  セッション ID のログ記録

SV.IL.SESSION.CLIENT  HttpServletRequest.getRequestedSessionId メソッドは使用しないでください。

SV.SESSION.FIXATION.COOKIE  cookie は、セッションの固定化に対して脆弱であってはなりません

SV.SPRING.FIXATION  セッション固定化保護が無効になっています。

CERT NUM00-J (L3): 整数オーバーフローを検出あるいは防止する

SV.INT_OVF  不正データが整数オーバーフローを引き起こす可能性があります

CERT NUM07-J (L3): NaN と比較しようとしない

JAVA.COMPARE.NAN  TRANSLATE ME: Do not attempt comparisons with NaN

CERT NUM09-J (L2): 浮動小数点変数をループカウンターとして使用しない

JAVA.LOOP.CTR.FLOAT  TRANSLATE ME: Do not use floating-point variables as loop counters

CERT NUM10-J (L2): 浮動小数点リテラルから BigDecimal オブジェクトを構築しない

JAVA.BIGDEC.FLOAT  TRANSLATE ME: Do not construct BigDecimal objects from floating-point literals

CERT OBJ01-J (L1): フィールドへのアクセスを制限する

SV.EXPOSE.FIELD  static フィールドは悪意のあるコードによって変更される可能性があります

SV.EXPOSE.IFIELD  インスタンス フィールドは final にする必要があります

SV.EXPOSE.MUTABLEFIELD  static mutable フィールドは悪意のあるコードによってアクセスされる可能性があります

SV.STRUTS.PRIVATE  ステータス フォーム: non-private フィールド

SV.STRUTS.STATIC  ステータス フォーム: static フィールド

CERT OBJ04-J (L2): 信頼できないコードにインスタンスを安全に渡すため、可変クラスにはコピー機能を実装する

SV.EXPOSE.RET  内部表現が露出される可能性があります

SV.EXPOSE.STORE  メソッドが mutable オブジェクトへの参照を保存しています

CERT OBJ05-J (L1): privateな可変クラスメンバへ参照を返さない

SV.EXPOSE.RET  内部表現が露出される可能性があります

SV.EXPOSE.STORE  メソッドが mutable オブジェクトへの参照を保存しています

CERT OBJ09-J (L2): クラス名を比較するのではなくクラスを比較する

CMP.CLASS  クラス名による比較が行われています

CERT OBJ10-J (L2): public staticのfinal宣言していないフィールドを使わない

SV.EXPOSE.FIELD  static フィールドは悪意のあるコードによって変更される可能性があります

SV.STRUTS.STATIC  ステータス フォーム: static フィールド

CERT OBJ11-J (L1): コンストラクターが例外をスローすることに注意する

JAVA.CTOR.EXCEPT  TRANSLATE ME: Be wary of letting constructors throw exceptions

JAVA.FINAL.STATIC.VAR  TRANSLATE ME: Use of nonfinal static variable

CERT SEC00-J (L2): センシティブな情報を特権ブロックから信頼境界を越えて漏えいさせない

SV.PRIVILEGE.MISSING  呼び出されるメソッドは doPrivileged ブロック内にあってはなりません

CERT SEC03-J (L1): 信頼できないコードに任意のクラスのロードを許可した後で信頼するクラスをロードしない

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

SV.CLEXT.CLLOADER  クラスが 'java.lang.ClassLoader' を拡張しています

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

CERT SER01-J (L1): シリアライズに関連するメソッドは正しいシグネチャで実装する

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

CERT SER03-J (L2): 暗号化されていないセンシティブなデータをシリアライズしない

SV.SERIAL.NOFINAL  シリアル化可能なクラスでは、メソッド readObject() および writeObject() は final である必要があります

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

CERT SER05-J (L1): 内部クラスのインスタンスをシリアル化しない

JAVA.SERIALIZE.INNER  TRANSLATE ME: Do not serialize instances of inner classes

CERT SER06-J (L3): 復元時には private 宣言された可変コンポーネントはディフェンシブコピーする

SV.SERIAL.NOFINAL  シリアル化可能なクラスでは、メソッド readObject() および writeObject() は final である必要があります

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

CERT SER09-J (L3): オーバーライド可能なメソッドを readObject() メソッドから呼び出さない

SV.SERIAL.OVERRIDE  readObject() メソッドからオーバーライド可能なメソッドを呼び出さないでください

CERT SER12-J (L2): 信頼できないデータの復元はしない

SV.SERIAL.NOFINAL  シリアル化可能なクラスでは、メソッド readObject() および writeObject() は final である必要があります

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

CERT THI00-J (L3): Thread.run() メソッドを直接呼び出さない

JD.THREAD.RUN  'Thread.run' メソッドが明示的に呼び出されています

CERT THI01-J (L3): ThreadGroup メソッドを呼び出さない

JAVA.THREADGROUP  TRANSLATE ME: Do not invoke ThreadGroup methods

CERT THI03-J (L3): wait() メソッドと await() メソッドは必ずループ内で呼び出す

JAVA.WAIT.IN.LOOP  TRANSLATE ME: Always invoke wait() and await() methods inside a loop

CERT VNA00-J (L2): 共有プリミティブ型変数の可視性を確保する

SV.SHARED.VAR  サーブレットから static 変数への非同期アクセス

CERT VNA01-J (L3): 不変オブジェクトへの共有参照の可視性を確保する

SV.SHARED.VAR  サーブレットから static 変数への非同期アクセス

CERT VNA02-J (L2): 共有変数への複合操作のアトミック性を確保する

SV.SHARED.VAR  サーブレットから static 変数への非同期アクセス