BEAST Attack on TLS 1.0/SSL 3.0
TLS 1.0/SSL 3.0に対するBEAST攻撃
説明
この脆弱性は、サーバーがBEAST攻撃に対して脆弱であることを示しています。BEAST攻撃は、TLS 1.0およびSSL 3.0のCBCモード暗号化における予測可能な初期化ベクトル(IV)を悪用し、ブロック境界を利用した選択平文攻撃によって平文データを復元します。
BEAST(Browser Exploit Against SSL/TLS)は、TLS 1.0またはSSL 3.0の実装が最後の暗号文ブロックを次のレコードの初期化ベクトルとして使用し、暗号化が予測可能になる場合に発生します。攻撃者は、JavaScriptベースの選択平文インジェクションを通じてこれを悪用し、シークレットを1バイトずつ推測することができます。
仕組み:
- 攻撃者はネットワークトラフィック上で中間者(man-in-the-middle)のポジションを確立します
- 悪意のあるJavaScriptが、制御されたブロック境界を持つ選択平文をインジェクトします
- 予測可能な初期化ベクトルにより、推測されたバイトの検証が可能になります
- セッションCookieやCSRFトークンなどの機密データを段階的に抽出します
要件:
- CBC暗号スイートを使用したTLS 1.0またはSSL 3.0
- 中間者(man-in-the-middle)ネットワークアクセス
- 被害者のブラウザでのJavaScript実行機能
- ターゲットアプリケーションへの同一生成元(same-origin)リクエスト
シナリオ例: WebアプリケーションがAES-CBC暗号化とともにTLS 1.0を使用しているとします。同じネットワーク上の攻撃者がJavaScriptをインジェクトして何千もの細工されたHTTPSリクエストを作成し、予測可能なIVを悪用してセッションCookieの値を1バイトずつ推測します。抽出されたセッションCookieにより、完全なアカウントのなりすましが可能になります。
この攻撃は、古いTLS実装の根本的な弱点を示しており、セッションハイジャック、認証のバイパス、および潜在的な規制コンプライアンス違反につながります。
推奨事項
BEAST攻撃を軽減するには:
主な防御 - TLSバージョンのアップグレード:
# Nginx設定 - TLS 1.0の無効化
ssl_protocols TLSv1.2 TLSv1.3;
# Apache設定 - TLS 1.0/SSL 3.0を無効にする
SSLProtocol -all +TLSv1.2 +TLSv1.3
TLS 1.0が必要な場合の代替の軽減策:
- レコード分割(Record Splitting)の使用:空のフラグメントの挿入を有効にする(OpenSSLのデフォルト)
- 非CBC暗号の優先:ストリーム暗号またはAEADモードを一時的に使用する
- 1/n-1レコード分割の有効化:レガシーサポートのためのブラウザベースの対策
テストコマンド:
# TLS 1.0サポートのテスト
openssl s_client -connect example.com:443 -tls1
# 暗号スイートの確認
nmap --script ssl-enum-ciphers -p 443 example.com
TLS 1.2+へのアップグレード、またはレコード分割対策の実装により、組織は必要に応じて下位互換性を維持しながら、BEAST攻撃ベクターを効果的に排除できます。
リンク
標準
- SOC2_CONTROLS:
- CC_6_7
- CC_7_1
- CCPA:
- CCPA_1798_150
- GDPR:
- ART_32
- PCI_STANDARDS:
- REQ_4_1
- REQ_6_2
- REQ_11_3