1998 年发现的与 SSL 服务器中的 PKCS #1 v1.5 填充相关的缺陷(据信已得到解决)至今仍然影响着多个广泛使用的项目。
经过衡量端到端操作的广泛测试后,红帽研究人员发现了原始定时攻击的几种变体,统称为“马文攻击”,它可以有效地绕过修复和缓解措施。
该问题使攻击者能够解密 RSA 密文、伪造签名,甚至解密易受攻击的 TLS 服务器上记录的会话。
研究人员使用标准硬件证明了在短短几个小时内执行马文攻击是可能的,证明了其实用性。
红帽警告称,该漏洞不仅限于 RSA,还扩展到大多数非对称加密算法,使它们容易受到旁道攻击。
“虽然攻击的主要场所是 TLS 服务器,但导致其广泛传播的核心问题适用于大多数非对称加密算法(Diffie-Hellman、ECDSA 等),而不仅仅是 RSA。” -红帽。
根据所进行的测试,以下实现容易受到 Marvin 攻击:
- OpenSSL(TLS 级别):RSA 解密中的计时 Oracle – CVE-2022-4304
- OpenSSL(API 级别):使 RSA 解密 API 可以安全地与 PKCS#1 v1.5 填充一起使用 – 无 CVE
- GnuTLS (TLS 级别):ClientKeyExchange 中对格式错误的 RSA 密文的响应时间与具有正确 - PKCS#1 v1.5 填充的密文的响应时间不同。- CVE-2023-0361
- NSS(TLS 级别):提高 RSA 操作的恒定时间性。- CVE-2023-4421
- pyca/cryptography:尝试减轻对 RSA 解密的 Bleichenbacher 攻击;发现无效;需要 OpenSSL 级别修复。- CVE-2020-25659
- M2Crypto:缓解 RSA 解密 API 中的 Bleichenbacher 定时攻击;发现无效;需要 OpenSSL 级别修复。- CVE-2020-25657
- OpenSSL-ibmca:2.4.0 版本中 RSA PKCS#1 v1.5 和 OAEP 填充的恒定时间修复 – 无 CVE
- Go:crypto/rsa DecryptPKCS1v15SessionKey 泄漏有限 – 无 CVE
- GNU MP:mpz_powm_sec 在结果中泄漏零高位 - 无 CVE
尽管马文攻击强调了 RSA 解密中的一个基本缺陷,但由于各个实现的多样性和复杂性,主要是如何管理填充错误,但马文攻击没有相应的 CVE。
因此,虽然 Marvin 攻击是一个概念性缺陷,但没有一个可以普遍应用的单一修复或补丁,并且由于每个项目独特的代码库和 RSA 解密实现,问题的表现有所不同。
研究人员建议不要使用 RSA PKCS#1 v1.5 加密,并敦促受影响的用户寻求或要求供应商提供替代的向后兼容性途径。
Marvin Attack 页面的 问答部分警告说,仅仅禁用 RSA 并不意味着您就安全了 。
如果 RSA 密钥或证书在支持它的服务器(SMTP、IMAP、POP 邮件服务器和辅助 HTTPS 服务器)上的其他位置使用,则风险是相同的。
最后,红帽警告说,FIPS 认证并不能保证防止 Marvin 攻击,除了 4 级认证之外,该认证可确保良好地抵御旁路攻击。
尽管没有明显迹象表明黑客在野外使用马文攻击,但披露测试和模糊代码的细节和部分会增加短期内发生这种情况的风险。
参考
https://www.bleepingcomputer.com/news/security/new-marvin-attack-revives-25-year-old-decryption-flaw-in-rsa/?fbclid=IwAR03IyQh7Z4Piw3v7cUi2yRmzuEJ2wJ4iCq_A7_r99RuxykGbSm5_ZKCN8o