跳转至

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)部分中未初始化的内存。

工作原理:

  1. 客户端发送带有短于32字节(例如,16字节)的会话ID的TLS会话票据。
  2. F5服务器分配与客户端会话ID长度匹配的缓冲区。
  3. 服务器以固定的32字节会话ID作为响应,并用未初始化的内存进行填充。
  4. 攻击者每次请求最多提取包含敏感数据的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