BigSig,Mozilla NSS 中的一个允许代码执行的漏洞

有关的消息 识别关键漏洞 (已在 CVE-2021-43527 下列出) en 密码库集 新高中 (网络安全服务) 来自 Mozilla 的可能会导致执行恶意代码 处理使用 DER(可分辨编码规则)指定的 DSA 或 RSA-PSS 数字签名时。

问题 体现在使用 NSS 处理数字签名的应用程序中 CMS、S/MIME、PKCS # 7 和 PKCS # 12, 或在部署中验证证书时 TLS、X.509、OCSP 和 CRL。 该漏洞可能出现在具有 TLS、DTLS 和 S/MIME 支持的各种客户端和服务器应用程序、电子邮件客户端以及使用 NSS CERT_VerifyCertificate () 调用来验证数字签名的 PDF 查看器中。

LibreOffice、Evolution 和 Evince 被列为易受攻击的应用程序示例. 该问题还可能影响 Pidgin、Apache OpenOffice、Suricata、Curl 等项目。

与此同时, 该漏洞在 Firefox、Thunderbird 和 Tor 浏览器中未出现,它使用单独的 mozilla::pkix 库进行验证,这也是 NSS 的一部分。 这 基于 Chrome 的浏览器 (除非它们是专门用 NSS 编译的),直到 2015 年才使用 NSS,但随后转移到 BoringSSL, 他们不受问题的影响。

该漏洞是由于 vfy_CreateContext 中的证书验证码中的一个错误 secvfy.c 文件的功能。 当客户端从服务器读取证书时,错误就会出现 当服务器处理客户端的证书时。

NSS在验证DER编码的数字签名时,将签名解码成一个固定大小的缓冲区,并将这个缓冲区传递给PKCS#11模块,在后处理过程中,对于DSA和RSA-PSS签名,大小被错误验证,导致其中,如果数字签名的大小超过16384位(为缓冲区分配了2048字节,但未验证签名是否可以更大),则会导致为VFYContextStr结构分配的缓冲区溢出。

包含漏洞的代码可以追溯到 2003 年,但直到 2012 年重构才成为威胁。 2017 年,在实现 RSA-PSS 支持时犯了同样的错误。 为了进行攻击,不需要消耗大量资源生成某些密钥来获取必要的数据,因为溢出发生在验证数字签名有效性之前的阶段。 数据的越界部分被写入包含函数指针的内存区域,从而可以轻松创建有效的漏洞利用。

该漏洞是由谷歌零项目研究人员发现的 在使用新的模糊测试方法的实验期间,很好地证明了在一个广泛测试的知名项目中,微不足道的漏洞是如何长时间未被发现的。

至于 未引起注意的主要问题 需很长时间:

  • NSS 驱动器库和模糊测试不是完全进行的,而是在单个组件级别进行的。
  • 例如,解码DER和处理证书的代码是分开验证的; 在fuzzing的过程中,很可能已经拿到了证书,导致了问题漏洞的表现,但是其验证没有到达验证码,问题也没有暴露出来。
  • 在模糊测试期间,在 NSS 中没有此类限制的情况下,对输出的大小(10,000 字节)设置了严格的限制(正常模式下的许多结构可能大于 10,000 字节,因此,为了识别问题,需要更多的输入数据)。 对于完整验证,限制应该是 2 24 -1 字节 (16 MB),这对应于 TLS 中允许的证书的最大大小。
  • 模糊测试对代码覆盖率的误解。 易受攻击的代码经过积极测试,但使用了无法生成所需输入数据的 fuzer。 例如,fuzzer tls_server_target 使用了一组预定义的开箱即用证书,它将证书验证码的验证限制为仅 TLS 消息和协议状态更改。

最后, 值得一提的是,NSS 3.73 和 NSS ESR 3.68.1 中已经修复了代号 BigSig 的问题 并且该解决方案的更新包形式已经在不同的发行版中发布:Debian、RHEL、Ubuntu、SUSE、Arch Linux、Gentoo、FreeBSD 等。

如果您想了解更多信息,可以咨询 以下链接。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。