Java SE 数字签名伪造漏洞通告(CVE-2022-21449)

2022-04-24 17:39:22 浏览数 (2)

尊敬的知行之桥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中,然后运行以下命令自查:

  1. javac Test.java
  2. 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

原文链接

0 人点赞