JAVA.ASSERT.ARG
メソッド引数の検証には決してアサートを使用しない
脆弱性とリスク
引数の検証は、メソッドの機能のために不可欠なものとなる場合があります。アサーションは無効になる可能性があり、その結果、引数の検証が削除されたり、未処理の例外が発生したりすることがあります。
軽減と防止
アサーション検証以外の方法を使用して引数を検証してください。パラメーターのアサートチェックを削除して、if/関数チェックに置き換えてください。
脆弱コード例 1
コピー
package com.klocwork;
public class JAVA_ASSERT_ARG_POSITIVE_1 {
public void test(int i, String args) {
assert args != null;
}
}
脆弱コード例 2
コピー
package com.klocwork;
public class JAVA_ASSERT_ARG_POSITIVE_2 {
public void test(String[] args, int i) {
assert args != null;
}
}
脆弱なコード例 3
コピー
package com.klocwork;
public class JAVA_ASSERT_ARG_POSITIVE_3 {
public void test(boolean b, String args[], int i) {
assert args != null;
}
}
脆弱コード例 4
コピー
package com.klocwork;
import java.util.List;
public class JAVA_ASSERT_ARG_POSITIVE_4 {
public void test(List<String> args) {
assert args != null;
}
}
修正コード例
コピー
package com.klocwork;
public class JAVA_ASSERT_ARG_NEGATIVE {
public static void test(String args[]) {
int x = 123;
assert x > 1;
System.out.println("hello world");
}
}