Ticketbleed Memory Disclosure in F5 BIG-IP
F5 BIG-IP 中的 Ticketbleed 内存泄露
描述
该漏洞表明服务器容易受到Ticketbleed攻击的影响,这种攻击利用F5 BIG-IP设备中会话票据处理不当的缺陷,泄露包含敏感数据的未初始化内存。
当F5的TLS实现未能正确处理TLS会话恢复过程中的会话ID(Session ID)长度时,就会发生Ticketbleed。如果客户端发送的会话ID短于32个字节,服务器会分配一个大小匹配的缓冲区,但却总是返回32个字节,从而泄露了填充(padding)部分中未初始化的内存。
工作原理:
- 客户端发送带有短于32字节(例如,16字节)的会话ID的TLS会话票据。
- F5服务器分配与客户端会话ID长度匹配的缓冲区。
- 服务器以固定的32字节会话ID作为响应,并用未初始化的内存进行填充。
- 攻击者每次请求最多提取包含敏感数据的31个字节的内存。
要求:
- 已启用会话票据的F5 BIG-IP设备(非默认设置)。
- 使用非标准会话ID长度的客户端(浏览器默认使用32个字节)。
- 对TLS服务的远程网络访问权限。
Example Scenario: 一家公司正在使用开启了会话票据功能的F5 BIG-IP负载均衡器。一个基于Go TLS库的应用程序使用16字节的会话ID进行连接。每次连接都会泄露16字节的服务器内存,这可能会泄露以往连接中的SSL会话数据、加密密钥或其他敏感信息。
此漏洞仅影响F5专有的TLS协议栈,不影响OpenSSL,并且每次仅泄露31个字节,与Heartbleed(每次64KB)相比,它需要更多次数的请求才能提取大量数据,但依然能够导致会话的彻底被入侵。
建议
为缓解Ticketbleed攻击:
主要防御措施 - 更新F5 TMOS:
升级到已修复漏洞的F5 BIG-IP版本:
- 11.6.0 HF6 及更高版本
- 12.0.0 HF4 及更高版本
- 12.1.0 HF1 及更高版本
- 13.0.0 及更高版本
即时缓解措施 - 禁用会话票据:
如果无法立即应用补丁,请在受影响的SSL配置文件上禁用会话票据:
# 通过 F5 CLI
tmsh modify ltm profile client-ssl [profile-name] options none
# 通过 F5 Web 界面
Local Traffic > Profiles > SSL > Client > [Profile] > Configuration > Options
Remove "Session Ticket" from enabled options
Testing for Vulnerability:
# 使用自定义会话 ID 长度进行测试
openssl s_client -connect target:443 -sess_out session.pem
openssl s_client -connect target:443 -sess_in session.pem -msg
# 检查 SSL Labs 测试结果
curl "https://api.ssllabs.com/api/v3/analyze?host=target.com"
Detection and Monitoring:
- 监控TLS握手过程中异常的会话ID模式。
- 查找使用非标准会话ID长度(非32字节)的连接。
- 启用调试日志时,F5设备会记录会话票据的使用情况。
此漏洞仅影响明确启用了会话票据的F5 BIG-IP设备。标准的Web浏览器默认使用32字节的会话ID,因此不受影响。
链接
标准
- SOC2_CONTROLS:
- CC_6_7
- CC_7_1
- CCPA:
- CCPA_1798_150
- GDPR:
- ART_32
- HIPAA_CONTROLS:
- SECURITY255
- SECURITY258
- SECURITY212
- SECURITY213
- PCI_STANDARDS:
- REQ_4_1
- REQ_6_2
- REQ_11_3