SSL 客户端发起的重新协商与DDoS攻击
SSL/TLS协议中的客户端发起的重新协商(Client-Initiated Renegotiation)是一种允许客户端在已建立的加密会话中请求重新协商加密参数的功能。虽然设计初衷是为了提升安全性(例如动态更新证书或密钥),但该机制曾被利用发起拒绝服务(DDoS)攻击,消耗服务器资源。
攻击者通过伪造大量客户端请求,持续触发重新协商过程,导致服务器CPU和内存资源耗尽。该漏洞于2009年公开(CVE-2009-3555),后续通过RFC 5746引入安全扩展(Secure Renegotiation)进行修复。
攻击原理
客户端发起的重新协商攻击依赖以下关键点:
- 无身份验证的重新协商请求:早期SSL/TLS实现未验证重新协商请求的合法性,允许攻击者伪造请求。
- 资源密集型操作:每次重新协商需要完整的密钥交换和握手过程,消耗服务器计算资源。
- 单连接攻击:攻击者可在单个TCP连接上多次触发重新协商,绕过传统基于连接数的DDoS防护。
攻击流程:
- 攻击者建立普通SSL连接。
- 反复发送
ClientHello消息(重新协商请求)。 - 服务器每次响应完整的握手流程,导致资源耗尽。
漏洞复现代码示例
以下Python代码模拟攻击者行为(需安装pyOpenSSL库):
import socket
from OpenSSL import SSL
def ssl_renegotiation_attack(target_ip, target_port):
context = SSL.Context(SSL.SSLv23_METHOD)
conn = SSL.Connection

被折叠的 条评论
为什么被折叠?



