Ticketbleed Memory Disclosure in F5 BIG-IP
F5 BIG-IPにおけるTicketbleedによるメモリ開示
説明
この脆弱性は、サーバーがTicketbleed攻撃の影響を受けやすいことを示しています。この攻撃は、F5 BIG-IPアプライアンスにおけるセッションチケットの不適切な処理を悪用し、機密データを含む初期化されていないメモリを漏洩させます。
Ticketbleedは、F5のTLS実装がTLSセッション再開時のセッションIDの長さを正しく処理しない場合に発生します。クライアントが32バイト未満のセッションIDを送信すると、サーバーは正しいサイズのバッファを割り当てますが、常に32バイトを返し、パディング部分に初期化されていないメモリを露出させます。
機能の仕組み:
- クライアントは、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セッションデータ、暗号化キー、またはその他の機密情報が露出する可能性があります。
この脆弱性は、OpenSSLではなくF5独自のTLSスタックにのみ影響し、Heartbleedの64KBと比較して1度に31バイトを露出するため、重要なデータを抽出するにはより多くのリクエストが必要ですが、それでもセッションの完全な侵害を可能にします。
推奨事項
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ウェブインターフェース経由
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