Klocwork Java チェッカーにマッピングされた CERT Java ID
Klocwork Java チェッカーに対する CERT Java ID の以下のマッピングは、コミュニティで開発されたマッピングです。
| 規則 | チェッカー名と説明 |
|---|---|
| DCL02-J (L3) |
JD.UNMOD 変更不可能なコレクションの変更 |
| ENV03-J (L1) |
SV.CLEXT.POLICY クラスが 'java.security.Policy' を拡張しています |
| ENV06-J (L1) |
JAVA.DEBUG.ENTRY 本番コードにはデバッグエントリポイントを含めない |
| ERR01-J (L3) |
SV.IL.DEV 設計情報のリーク |
| ERR03-J (L3) |
SV.HTTP_SPLIT HTTP 応答分割 SV.SSRF.URI 無効化されたユーザー入力に基づく URI。 |
| ERR04-J (L3) |
JD.FINRET 最終的に内部に戻る |
| ERR05-J (L3) |
JD.UNCAUGHT キャッチされない例外 |
| ERR07-J (L2) |
EXC.BROADTHROWS 過度に広範な範囲に対応するメソッドが宣言をスローしています |
| ERR08-J (L1) |
JD.CATCH 実行時例外のキャッチ |
| ERR09-J (L3) |
SV.UMC.EXIT System.exit() および Runtime.exit() メソッドの呼び出しをサーブレットコードでは使用できません UMC.EXIT System.exit() メソッド呼び出しは好ましくありません |
| EXP00-J (L2) |
RI.IGNOREDCALL immutable オブジェクトに対して呼び出されたメソッドから返された値は無視されます RR.IGNORED 戻り値は無視されます |
| EXP01-J (L3) |
NPE.COND null が条件から来る場合の null ポインター逆参照 NPE.CONST null が定数から来る場合の null ポインター逆参照 NPE.RET メソッドから返される null 値の逆参照 NPE.RET.UTIL マップまたはコレクションから返される null 値の逆参照 NPE.STAT 戻り値 (統計) の null ポインター逆参照 REDUN.EQNULL equals() に式と null が指定された不審な呼び出しです (true にはなりません) |
| EXP02-J (L2) |
JD.EQ.ARR 配列での 'equals' の呼び出し |
| EXP03-J (L2) |
CMP.OBJ == によるオブジェクトの比較 |
| FIO01-J (L3) |
SV.PERMS.HOME パーミッションを設定せずに、ユーザーのホームディレクトリに作成されるファイル SV.PERMS.WIDE 広すぎるパーミッション |
| FIO03-J (L2) |
SV.DOS.TMPFILEDEL JVM の生存期間中一時ファイルが存続します SV.DOS.TMPFILEEXIT 一時ファイルが存続します |
| 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 ファイルが終了時に閉じられていません |
| FIO13-J (L3) |
SV.IL.SESSION セッション ID のロギング |
| FIO16-J (L3) |
SV.EXEC.PATH 信頼できない検索パス SV.PATH パスおよびファイル名の挿入 SV.PATH.INJ ファイル挿入 SV.TMPFILE 一時ファイルのパス改ざん |
| IDS00-J (L1) |
SV.DATA.DB データ挿入 SV.SQL SQL インジェクション SV.SQL.DBSOURCE データベースから取得された未チェックの情報が SQL ステートメントで使用されています |
| IDS01-J (L1) |
SV.TAINT 汚染データ SV.TAINT_NATIVE 汚染データがネイティブコードに渡されています SV.XSS.DB クロスサイトスクリプティング (Stored XSS) SV.XSS.REF クロスサイトスクリプティング (Reflected XSS) |
| IDS03-J (L2) |
SV.LOG_FORGING ログの偽造 |
| IDS07-J (L1) |
SV.EXEC プロセス挿入 SV.EXEC.DIR プロセス挿入。作業ディレクトリ SV.EXEC.ENV プロセス挿入。環境変数 SV.EXEC.LOCAL プロセス挿入。ローカル引数 SV.EXEC.PATH 信頼できない検索パス |
| IDS16-J (L1) |
JAVA.SV.XML.INVALID XML は Java オブジェクトにマーシャリング解除される前に検証されません |
| IDS17-J (L2) |
SV.XXE.DBF XML 外部実体攻撃の可能性 SV.XXE.SF XML 外部実体攻撃の可能性 SV.XXE.SPF XML 外部実体攻撃の可能性 SV.XXE.TF XML 外部実体攻撃の可能性 SV.XXE.XIF XML 外部実体攻撃の可能性 SV.XXE.XRF XML 外部実体攻撃の可能性 |
| JNI00-J (L3) |
JAVA.NATIVE.PUBLIC ネイティブメソッドにはラッパーを定義する |
| JNI01-J (L1) |
SV.LOADLIB.INJ 'loadLibrary' メソッドに対する信頼できない呼び出し |
| LCK05-J (L3) |
SV.SHARED.VAR サーブレットから static 変数への非同期アクセス |
| LCK07-J (L3) |
JD.LOCK ロック解除されていないロック |
| LCK09-J (L3) |
JD.LOCK.NOTIFY ロックを保持した 'notify' メソッドの呼び出し JD.LOCK.SLEEP ロックを保持した 'sleep' メソッドの呼び出し JD.LOCK.WAIT ロックを保持した 'wait' メソッドの呼び出し |
| LCK10-J (L3) |
JD.SYNC.DCL ダブルチェック済みロッキング |
| MET01-J (L2) |
JAVA.ASSERT.ARG メソッド引数の検証には決してアサートを使用しない |
| MET09-J (L3) |
EHC.EQ クラスが hashCode() を定義していますが、equals() は定義していません EHC.HASH クラスが equals() を定義していますが、hashCode() は定義していません |
| 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 アクセス修飾子を使用する必要があります |
| MSC00-J (L2) |
SV.WEAK.TLS 脆弱な SSL/TLS プロトコルは使用しないでください |
| MSC01-J (L3) |
JAVA.INF.LOOP.EMPTY 空の無限ループを使用しない |
| MSC02-J (L1) |
SV.RANDOM 安全でない乱数ジェネレータの使用 |
| MSC03-J (L1) |
SV.PASSWD.HC ハードコードされたパスワード SV.PASSWD.HC.EMPTY 空のパスワード SV.PASSWD.PLAIN プレーンテキストのパスワード SV.PASSWD.PLAIN.HC プレーンテキストのパスワード SV.SENSITIVE.DATA 暗号化されていない機密データが書き込まれます SV.SENSITIVE.OBJ 暗号化されていない機密データを持つオブジェクトが保存されます |
| MSC05-J (L3) |
JD.INF.ALLOC 無限ループ内での割り当て SV.DOS.ARRSIZE 汚染されたサイズが配列割り当てに使用されています SV.INT_OVF 汚染データが整数オーバーフローを引き起こす可能性があります |
| MSC06-J (L3) |
JD.CONCUR ConcurrentModificationException の可能性 |
| MSC11-J (L2) |
SV.IL.SESSION セッション ID のロギング SV.IL.SESSION.CLIENT HttpServletRequest.getRequestedSessionId メソッドは使用しないでください SV.SESSION.FIXATION.COOKIE Cookie は、セッションの固定化に対して脆弱であってはなりません SV.SPRING.FIXATION セッション固定化保護が無効になっています |
| NUM00-J (L3) |
SV.INT_OVF 汚染データが整数オーバーフローを引き起こす可能性があります |
| NUM07-J (L3) |
JAVA.COMPARE.NAN NaN と比較しようとしない |
| NUM09-J (L2) |
JAVA.LOOP.CTR.FLOAT 浮動小数点変数をループカウンターとして使用しない |
| NUM10-J (L2) |
JAVA.BIGDEC.FLOAT 浮動小数点リテラルから BigDecimal オブジェクトを構築しない |
| OBJ01-J (L1) |
SV.EXPOSE.FIELD static フィールドは悪意のあるコードによって変更される可能性があります SV.EXPOSE.IFIELD インスタンスフィールドは final にする必要があります SV.EXPOSE.MUTABLEFIELD static mutable フィールドは悪意のあるコードによってアクセスされる可能性があります SV.STRUTS.PRIVATE Struts フォーム: フィールドがプライベートではありません SV.STRUTS.STATIC Struts フォーム: static フィールド |
| OBJ04-J (L2) |
SV.EXPOSE.RET 内部表現が露出される可能性があります SV.EXPOSE.STORE メソッドが mutable オブジェクトへのリファレンスを保存しています |
| OBJ05-J (L1) |
SV.EXPOSE.RET 内部表現が露出される可能性があります SV.EXPOSE.STORE メソッドが mutable オブジェクトへのリファレンスを保存しています |
| OBJ09-J (L2) |
CMP.CLASS クラス名で比較 |
| OBJ10-J (L2) |
SV.EXPOSE.FIELD static フィールドは悪意のあるコードによって変更される可能性があります SV.STRUTS.STATIC Struts フォーム: static フィールド |
| OBJ11-J (L1) |
JAVA.CTOR.EXCEPT コンストラクターが例外をスローすることに注意する JAVA.FINAL.STATIC.VAR 非 final 静的変数の使用 |
| SEC00-J (L2) |
SV.PRIVILEGE.MISSING 呼び出されるメソッドは doPrivileged ブロック内にあってはなりません |
| SEC03-J (L1) |
SV.CLASSLOADER.INJ クラスローダー URL の挿入 SV.CLEXT.CLLOADER クラスが 'java.lang.ClassLoader' を拡張しています SV.CLLOADER クラスローダーが直接使用されています |
| SER01-J (L1) |
SV.SERIAL.SIG シリアル化可能なクラスでは、メソッド readObject() および writeObject() が正しいシグネチャを持つ必要があります |
| SER03-J (L2) |
SV.SERIAL.NOFINAL シリアル化可能なクラスでは、メソッド readObject() および writeObject() は final である必要があります SV.SERIAL.NOWRITE メソッド writeObject() をシリアル化可能なクラスに対して定義する必要があります |
| SER05-J (L1) |
JAVA.SERIALIZE.INNER 内部クラスのインスタンスをシリアル化しない |
| SER06-J (L3) |
SV.SERIAL.NOFINAL シリアル化可能なクラスでは、メソッド readObject() および writeObject() は final である必要があります SV.SERIAL.NOREAD メソッド readObject() をシリアル化可能なクラスに対して定義する必要があります |
| SER09-J (L3) |
SV.SERIAL.OVERRIDE readObject() メソッドからオーバーライド可能なメソッドを呼び出さないでください |
| SER12-J (L2) |
SV.SERIAL.NOFINAL シリアル化可能なクラスでは、メソッド readObject() および writeObject() は final である必要があります SV.SERIAL.NOREAD メソッド readObject() をシリアル化可能なクラスに対して定義する必要があります |
| THI00-J (L3) |
JD.THREAD.RUN 'Thread.run' メソッドの明示的な呼び出し |
| THI01-J (L3) |
JAVA.THREADGROUP ThreadGroup メソッドを呼び出さない |
| THI03-J (L3) |
JAVA.WAIT.IN.LOOP wait() メソッドと await() メソッドは必ずループ内で呼び出す |
| VNA00-J (L2) |
SV.SHARED.VAR サーブレットから static 変数への非同期アクセス |
| VNA01-J (L3) |
SV.SHARED.VAR サーブレットから static 変数への非同期アクセス |
| VNA02-J (L2) |
SV.SHARED.VAR サーブレットから static 変数への非同期アクセス |