DROWN 攻击 (CVE-2016-0800)
DROWN 攻击 (CVE-2016-0800) 是什么?
DROWN 攻击 (CVE-2016-0800)2016 年披露的跨协议攻击,利用启用 SSLv2 且与 TLS 共享密钥的服务器来解密现代 TLS 会话,破坏 HTTPS、SMTPS 与 IMAPS 的安全性。
DROWN(Decrypting RSA with Obsolete and Weakened eNcryption),CVE-2016-0800,由 Aviram、Schinzel、Somorovsky 等人于 2016 年 3 月 1 日披露。这是一种跨协议攻击:SSLv2 至今仍会协商 40 位的出口级 RSA 密码套件,且其握手会泄露某段密文的 PKCS#1 v1.5 填充是否正确,这使得 SSLv2 服务器成为一个 Bleichenbacher 填充预言机。关键在于,存在漏洞的 SSLv2 服务本身不必是攻击目标——只要任何服务共享同一对 RSA 私钥/证书(例如复用 Web 服务器密钥的旧 SMTP 或 IMAP 服务器),攻击者就能被动记录现代 TLS 握手,并离线解密会话密钥。
通用攻击大约需要记录 1,000 条 TLS 连接,以及约 2^50 的计算量——以当时的云计算价格,不到 440 美元即可完成。一种危害严重得多的"special DROWN"变种利用了 OpenSSL 的一个缺陷(CVE-2016-0703),使主动攻击者能在一台笔记本电脑上于数分钟内解密单条 TLS 会话。研究人员估计约 33% 的 HTTPS 服务器存在此漏洞。缓解措施:在所有服务上禁用 SSLv2,将 OpenSSL 升级到 1.0.2g/1.0.1s,并且绝不在支持 SSLv2 的端点与现代端点之间复用私钥或证书。
flowchart TD A[客户端] -->|现代 TLS 握手| B[安全 TLS 服务器] C[攻击者] -->|被动记录<br/>RSA 加密的握手| B C -->|发送精心构造的密文| D[SSLv2 服务器<br/>相同 RSA 密钥/证书] D -->|填充预言机响应<br/>出口级密码| C C --> E[恢复 TLS 会话密钥<br/>Bleichenbacher / DROWN] E --> F[解密已捕获的会话<br/>HTTPS / SMTPS / IMAPS]
● 示例
- 01
攻击者利用共享证书且启用 SSLv2 的 SMTP 服务器,解密已抓取的 HTTPS 握手。
- 02
DROWN 公布后,运营者迅速在邮件、FTP 与老旧网关上禁用 SSLv2。
● 常见问题
DROWN 攻击 (CVE-2016-0800) 是什么?
2016 年披露的跨协议攻击,利用启用 SSLv2 且与 TLS 共享密钥的服务器来解密现代 TLS 会话,破坏 HTTPS、SMTPS 与 IMAPS 的安全性。 它属于网络安全的 漏洞 分类。
DROWN 攻击 (CVE-2016-0800) 是什么意思?
2016 年披露的跨协议攻击,利用启用 SSLv2 且与 TLS 共享密钥的服务器来解密现代 TLS 会话,破坏 HTTPS、SMTPS 与 IMAPS 的安全性。
如何防御 DROWN 攻击 (CVE-2016-0800)?
针对 DROWN 攻击 (CVE-2016-0800) 的防御通常结合技术控制与运营实践,详见上方完整定义。
DROWN 攻击 (CVE-2016-0800) 还有哪些其他名称?
常见的别称包括: CVE-2016-0800, 跨协议 SSLv2 攻击。