# POODLE是什么？定义、例子与常见误区

> POODLE 是 2014 年公布的攻击（CVE-2014-3566），利用 SSL 3.0 不校验 CBC 填充的缺陷，从加密连接中逐字节还原 Cookie 等秘密。

Source: https://ssl.sh/zh/glossary/poodle/
Last updated: 2026-11-10

POODLE 由 Google 的研究人员 Bodo Möller、Thai Duong 和 Krzysztof Kotowicz 于 2014 年 10 月公布。[SSL 3.0](https://ssl.sh/zh/glossary/ssl-3-0/) 没有规定 CBC 填充字节的内容，MAC 也不覆盖它们；攻击者只要能让受害者浏览器反复发送请求，并能修改密文，平均每约 256 次尝试就能还原出会话 Cookie 等秘密中的一个字节。名字里的 Downgraded（降级）指攻击者如何把连接逼到 SSL 3.0：当年浏览器在 TLS 握手失败后会用旧版本重试，中间人借此强迫回退。

## 为什么重要
POODLE 之后，SSL 3.0 已没有安全的用法：CBC 套件被攻破，唯一的替代 [RC4](https://ssl.sh/zh/glossary/rc4/) 早已被认为不安全。结果是浏览器和服务器纷纷移除 SSL 3.0，RFC 7568 于 2015 年正式将其废弃。它也推动了 TLS_FALLBACK_SCSV（RFC 7507）的普及，用于抵御基于回退的[降级攻击](https://ssl.sh/zh/glossary/downgrade-attack/)。后来还出现了一个变种，影响部分没有正确校验 CBC 填充的 TLS 实现，所以扫描工具也会单独检测“POODLE over TLS”。漏洞扫描报告里出现 SSLv3 相关条目时，处理方式就是直接关闭 SSL 3.0。

## 例子
确认服务器已不再提供 SSL 3.0：

```bash
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，剩下的风险在老旧嵌入式设备和遗留客户端，应隔离或替换。

## 相关术语

- [SSL 3.0](https://ssl.sh/zh/glossary/ssl-3-0/): SSL 3.0 是 Netscape 设计的安全套接层协议的最后一个版本，1996 年发布，2014 年被 POODLE 攻破，2015 年被 RFC 7568 废弃。
- [降级攻击](https://ssl.sh/zh/glossary/downgrade-attack/): 降级攻击是指攻击者迫使客户端和服务器协商出比双方实际支持的更旧的协议版本或更弱的算法，从而利用其中的弱点。
- [BEAST](https://ssl.sh/zh/glossary/beast/): BEAST 是 2011 年公布的攻击（CVE-2011-3389），利用 SSL 3.0 和 TLS 1.0 中 CBC 模式可预测的 IV，逐字节解密 Cookie 等秘密。
- [RC4](https://ssl.sh/zh/glossary/rc4/): RC4 是 Ron Rivest 在 1987 年设计的流密码，曾在 SSL/TLS 中广泛使用，因密钥流存在统计偏差，2015 年被 RFC 7465 禁止用于 TLS。
- [TLS 1.0](https://ssl.sh/zh/glossary/tls-1-0/): TLS 1.0 是传输层安全协议的第一个版本，1999 年以 RFC 2246 发布，2021 年被 RFC 8996 正式废弃，主流浏览器已不再支持。
- [密码套件](https://ssl.sh/zh/glossary/cipher-suite/): 密码套件是 TLS 客户端和服务器协商使用的一组命名的加密算法组合，例如 TLS_AES_128_GCM_SHA256，决定连接用什么算法保护数据。
