
https://nvd.nist.gov/vuln/detail/CVE-2022-34169
Проверяет, исправлена ли CVE-2022-34169 на вашей машине. Насколько мне известно, эксплойт был найден сотрудником Google и не опубликован. Поскольку исправление известно, был написан небольшой тестовый код для проверки наличия исправления во время выполнения.
Опционально: доступно только при наличии JDK:
# Optional: To see if `javac` is available: `sudo updatedb && sudo locate /bin/javac`
javac Bcel.java
Шесть предупреждений можно игнорировать. Отмеченный код используется для включения библиотеки Bcel, доступной в OpenJDK. Если бы кто-то включал библиотеку Bcel самостоятельно, это было бы немного сложнее, и версия была бы предопределена — что не совсем соответствует духу данного упражнения.
# `cd` into (built) folder where `Bcel.class` is, then:
java Bcel
echo $?
Не путайтесь с кодами ошибок. Они работают наоборот. Исправление https://github.com/openjdk/jdk/commit/41ef2b249073450172e11163a4d05762364b1297?diff=unified#diff-3d2cb29a8f3fca8e2f3421d2898dce63255b850406456533cce91f26dbf8dbe2R217 вызывает ошибку с кодом 1 и таким образом перехватывает угрозу безопасности. Если исправление отсутствует, исходный код выполняется без ошибок с кодом 0 — но в объекте создаётся слишком много элементов!