コンテンツにスキップ

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バイトずつ推測することができます。

仕組み:

  1. 攻撃者はネットワークトラフィック上で中間者(man-in-the-middle)のポジションを確立します
  2. 悪意のあるJavaScriptが、制御されたブロック境界を持つ選択平文をインジェクトします
  3. 予測可能な初期化ベクトルにより、推測されたバイトの検証が可能になります
  4. セッション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