POODLE (Padding Oracle On Downgraded Legacy Encryption)
定义
POODLE 是 2014 年公布的攻击(CVE-2014-3566),利用 SSL 3.0 不校验 CBC 填充的缺陷,从加密连接中逐字节还原 Cookie 等秘密。
POODLE 由 Google 的研究人员 Bodo Möller、Thai Duong 和 Krzysztof Kotowicz 于 2014 年 10 月公布。SSL 3.0 没有规定 CBC 填充字节的内容,MAC 也不覆盖它们;攻击者只要能让受害者浏览器反复发送请求,并能修改密文,平均每约 256 次尝试就能还原出会话 Cookie 等秘密中的一个字节。名字里的 Downgraded(降级)指攻击者如何把连接逼到 SSL 3.0:当年浏览器在 TLS 握手失败后会用旧版本重试,中间人借此强迫回退。
为什么重要
POODLE 之后,SSL 3.0 已没有安全的用法:CBC 套件被攻破,唯一的替代 RC4 早已被认为不安全。结果是浏览器和服务器纷纷移除 SSL 3.0,RFC 7568 于 2015 年正式将其废弃。它也推动了 TLS_FALLBACK_SCSV(RFC 7507)的普及,用于抵御基于回退的降级攻击。后来还出现了一个变种,影响部分没有正确校验 CBC 填充的 TLS 实现,所以扫描工具也会单独检测“POODLE over TLS”。漏洞扫描报告里出现 SSLv3 相关条目时,处理方式就是直接关闭 SSL 3.0。
例子
确认服务器已不再提供 SSL 3.0:
nmap --script ssl-enum-ciphers -p 443 example.com | grep -E 'SSLv3|TLSv1'
输出中不应出现 SSLv3。
常见误区
- 升级 OpenSSL 就能修复 POODLE。 SSL 3.0 的缺陷在协议本身,唯一的修复是彻底禁用 SSL 3.0。
- 客户端优先用 TLS 1.2,服务器保留 SSL 3.0 也没事。 回退攻击针对的恰恰就是这类客户端。
- POODLE 至今仍是现实威胁。 当前的浏览器和 TLS 库都已不带 SSL 3.0,剩下的风险在老旧嵌入式设备和遗留客户端,应隔离或替换。