コンテンツにスキップ

CRIME Attack on TLS Compression

TLS圧縮に対するCRIME攻撃

説明

この脆弱性は、サーバーがCRIME攻撃に対して脆弱であることを示しています。CRIME攻撃は、TLS圧縮を悪用して圧縮率の分析により認証Cookieなどの機密情報を抽出します。

CRIME(Compression Ratio Info-leak Made Easy)は、TLS接続が帯域幅を削減するために重複する文字列を排除するDEFLATE圧縮を使用する場合に発生します。攻撃者は、機密情報の一部と一致する制御可能なデータを注入し、圧縮が暗号化されたペイロードサイズにどのような影響を与えるかを観察することで、このメカニズムを悪用します。

機能の仕組み:

  1. 攻撃者は、被害者のブラウザに標的のWebサイトへのHTTPSリクエストを強制的に実行させます。
  2. 悪意のあるリクエストには、秘密のCookie値と部分的に一致する推測が含まれています。
  3. 推測が実際のCookieコンテンツと一致すると、圧縮によりペイロードサイズが減少します。
  4. 攻撃者は、暗号化されたリクエストの長さを測定し、正しい推測を特定します。
  5. このプロセスを1バイトずつ繰り返し、Cookie全体を抽出します。

要件:

  • クライアントとサーバーの両方がTLS DEFLATE圧縮をサポートしていること。
  • トラフィックを観察するためのMan-in-the-middle(中間者)のネットワークポジション。
  • JavaScriptを注入するか、被害者のリクエストを制御する能力があること。
  • 対象となる機密情報が圧縮されたリクエストデータ内に含まれていること。

Example Scenario: ユーザーが公衆WiFi経由で銀行のWebサイトに接続します。攻撃者は、「sessionid=a」、「sessionid=b」などのCookieの推測を含む何千ものHTTPSリクエストを実行するJavaScriptを注入します。推測が実際のセッションCookieと一致すると、DEFLATE圧縮が重複する文字列を認識し、より小さなペイロードを作成します。暗号化されたサイズを測定することで、攻撃者は数分で完全なセッションCookieを抽出します。

この脆弱性は、TLS圧縮をサポートしていた古いブラウザ(2012年以前のChrome/Firefox)に影響を及ぼし、圧縮オラクル攻撃を通じて完全なセッションハイジャックと不正なアカウントアクセスを可能にします。

推奨事項

CRIME攻撃を緩和するには:

主要な防御策 - TLS圧縮の無効化:

# Nginx - TLS圧縮はデフォルトで無効になっています
# 圧縮を明示的に有効化しないようにしてください

# Apache - TLS圧縮を無効化します
SSLCompression off
# Pythonアプリケーション
import ssl
context = ssl.create_default_context()
context.options |= ssl.OP_NO_COMPRESSION

ソフトウェアの更新:

最新のブラウザおよびサーバーの大半は、デフォルトでTLS圧縮が無効化されています。 - ChromeおよびFirefoxは2012年にTLS圧縮のサポートを削除しました。 - OpenSSLの最新バージョン(1.0.0以降はデフォルトで無効化)に更新してください。 - 圧縮機能が完全に排除されているTLS 1.3を使用してください。

TLS圧縮のテスト:

# サーバーがTLS圧縮をサポートしているかテストします
openssl s_client -connect example.com:443 < /dev/null 2>&1 | grep -i compression

# 表示されるべき内容: "Compression: NONE"
# 脆弱な場合の表示内容: "Compression: zlib compression"

# 代替テスト
nmap --script ssl-enum-ciphers -p 443 example.com

追加の緩和策:

  • 圧縮効率を低下させるため、ランダムなパディングを含むCSRFトークンを実装します。
  • 頻繁なトークンのローテーションを伴う安全なセッション管理を使用します。
  • 潜在的な攻撃を示す異常なリクエストパターンを監視します。
  • プロトコルのダウングレード攻撃を防ぐためにHSTSを有効にします。

最新のアプリケーションは、2012年のCRIMEの公開後にTLS圧縮が広く無効化されたため一般に保護されていますが、レガシーシステムは依然として脆弱な場合があります。

リンク

標準

  • SOC2_CONTROLS:
    • CC_6_7
    • CC_7_1
  • HIPAA_CONTROLS:
    • SECURITY252
    • SECURITY212
    • SECURITY213
  • CCPA:
    • CCPA_1798_150
  • GDPR:
    • ART_32
  • PCI_STANDARDS:
    • REQ_4_1
    • REQ_6_2
    • REQ_11_3