
https://nvd.nist.gov/vuln/detail/CVE-2022-34169
检查您的机器上是否已修复 CVE-2022-34169。据我所知,该漏洞由一名 Google 员工发现,尚未公开。由于修复方法已知,因此编写了一个小型测试例程,用于在运行时检查该修复是否已应用。
可选:仅当您安装了 JDK 时才可用:
# 可选:检查 `javac` 是否可用:`sudo updatedb && sudo locate /bin/javac`
javac Bcel.java
出现的六个警告可以忽略。被标记的代码用于包含 OpenJDK 中可用的 Bcel 库。如果自行包含 Bcel 库,则会稍微复杂一些,并且版本将是预定义的——这不一定符合本练习的精神。
# `cd` 进入(已构建的)包含 `Bcel.class` 的文件夹,然后执行:
java Bcel
echo $?
不要被错误代码搞糊涂了。它们的意思正好相反。修复方案 https://github.com/openjdk/jdk/commit/41ef2b249073450172e11163a4d05762364b1297?diff=unified#diff-3d2cb29a8f3fca8e2f3421d2898dce63255b850406456533cce91f26dbf8dbe2R217 会抛出错误代码 1 的错误,从而捕获安全风险。如果未应用修复,源代码会正常执行完毕,错误代码为 0——但对象中会创建过多的元素!