尊敬的知行之桥EDI系统用户,您好!
知行软件的系统安全团队近期监测到,Oracle官方于2022年4月发布的安全公告中,提及并修复了 Oracle Java SE 的数字签名算法实现存在的一个高危漏洞,漏洞编号为CVE-2022-21449。
漏洞详情
ECDSA 即椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm),它是一种被广泛使用的标准,常用于应用程序和密码库。
漏洞由于部分版本 java SE 的 ECDSA 签名机制存在缺陷导致,可允许攻击者伪造证书、签名、WebAuthn 身份验证消息等或绕过其他身份验证机制。
风险等级
高风险
漏洞风险
攻击者利用该漏洞将会产生 伪造服务器签名 等危害。
影响版本
- Oracle Java SE: 17.0.2, 18
- Oracle GraalVM Enterprise Edition: 21.3.1, 22.0.0.2
- OpenJDK: 15,17,18
安全版本
- Oracle 2022年四月最新补丁
- OpenJDK最新Updates
知行之桥 EDI系统
此次漏洞虽然会对Web服务程序带来安全风险,但知行之桥EDI 系统Java版内部并不依赖Java自带ECDSA算法,所以本次Java运行时的安全漏洞对于知行之桥EDI系统造成影响十分有限。
修复建议
官方已发布漏洞补丁及修复版本,如果您在生产环境中部署的Java版本在15至18之间,那么您应该尽快停止正在执行的操作并立即升级最新的更新(对应版本的更新包,不是升级到最新的Java版本)。如果您正在在使用其它Java版本,可以酌情考虑是否需要更新。
漏洞自我测试方法
1.检测Java版本
方法一:在知行之桥状态页面的“应用程序日志”中查找开机时记录的Java版本号。比如:搜索“VM Version”。
方法二:命令行输入:java -version
检查当前版本是否收到影响,然后用下面的方法测试是否包含漏洞。
2.受漏洞影响版本自测代码
检测代码如下:
代码语言:javascript复制import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Signature;
public class Test {
public static void main(String[] args) throws Exception {
KeyPair keys = KeyPairGenerator.getInstance("EC").generateKeyPair();
byte[] blankSignature = new byte[64];
try {
Signature sig = Signature.getInstance("SHA256WithECDSAInP1363Format");
sig.initVerify(keys.getPublic());
sig.update("Hello, World".getBytes());
if (sig.verify(blankSignature)) {
System.out.println("Found CVE-2022-21449 vulnerability!!!");
} else {
System.out.println("OK!");
}
} catch (Exception ex) {
System.out.println("ECDSA is not support. OK!");
}
}
}
操作步骤
将上述自测代码保存到Test.Java中,然后运行以下命令自查:
- javac Test.java
- java Test
漏洞参考:
NIST: https://nvd.nist.gov/vuln/detail/CVE-2022-21449 Oracle: https://www.oracle.com/security-alerts/cpuapr2022.html OpenJDK: https://openjdk.java.net/groups/vulnerability/advisories/2022-04-19
原文链接