HD-2024-1409

拒绝服务
影响
Node.js
14.21.3 LTS 16.20.2 LTS
Node.js
Node.js NES
感叹号圆圈图标
补丁可用
HeroDevs 提供的 Never-Ending Support (NES) 版本已修复此漏洞。

概述

安全公告:Node.js v14 和许多 Node v16 版本仍在使用可能导致拒绝服务的 openssl 版本。处理恶意格式化的 PKCS12 文件可能导致 OpenSSL 崩溃,从而引发潜在的拒绝服务攻击。  

详细信息

模块信息

受影响软件包:openssl

受影响的版本:

1.0.2 至(不包括)1.0.2zj
1.1.1 至(不包括)1.1.1x
3.0.0 至(不包括)3.0.13
3.1.0 至(不包括)3.1.5

存储库:https://github.com/openssl/openssl

已发布软件包:openssl

漏洞信息

这被视为中等严重性问题,可在 openssl 的多个分支中发现,并可能影响使用这些版本的项目。

OpenSSL 可以使用 PKCS12 格式的文件来保存证书和密钥。虽然 PKCS12 规范允许某些字段为 NULL,但 OpenSSL 无法正确检查这种情况。如果字段为空,OpenSSL 会尝试取消引用空指针,从而导致 OpenSSL 崩溃。

如果应用程序使用 OpenSSL API 处理 PKCS12 文件,那么该应用程序就会受到此问题的影响。 

易受攻击的 OpenSSL API 包括PKCS12_parse()、PKCS12_unpack_p7data()、PKCS12_unpack_p7encdata()、PKCS12_unpack_authsafes() 和 PKCS12_newpass()。 

3.2、3.1 和 3.0 中的 FIPS 模块不受此问题影响。

复制步骤

  • 在安装补丁之前,在一台机器上安装依赖 OpenSSL 1.0.2 至 3.1.5 版本的 Node。
  • 创建或修改一个 PKCS12 文件,其中某些在规范中允许为空的字段确实为空。以密钥开始:
openssl pkcs12 -导出-incert.pem -inkey key.pem -out malicious.p12 -passout pass:password

  • 使用十六进制编辑器或可修改文件的软件修改文件。为某些字段插入空值。
  • 使用使用恶意密钥的 OpenSSL 漏洞版本,观察它是否崩溃。

没有变通办法。

缓解

OpenSSL 是一个流行的库,经常与 Node.js 等其他软件包捆绑在一起。 请确保您运行的 Node 版本持续保持依赖性更新,以避免软件出现安全漏洞。 更新到最新版本的 Node 或利用HeroDevs 等供应商提供的商业支持。

其他资源

漏洞详情
身份证
HD-2024-1409
受影响的项目
Node.js
受影响的版本
14.21.3 LTS 16.20.2 LTS
出版日期
2024 年 10 月 15 日
≈ 固定日期
2023 年 8 月 9 日
固定在
严重性
中型
类别
拒绝服务