コンテンツにスキップ

Index

SSL Extension Bleed 脆弱性

説明

SSL Extension Bleed は、ハンドシェイクのプロセスにおいて SSL/TLS 拡張の不適切な処理を悪用する脆弱性です。これにより、以前の接続の平文データ、セッションキー、さらには秘密鍵などの機密情報が露呈する可能性があります。

悪意のある SSL 拡張の動作

  1. 細工された拡張: 攻撃者は、脆弱なサーバーの実装においてメモリリークやバッファオーバーフローを引き起こすように特別に細工された SSL/TLS 拡張を作成します。
  2. 解析の欠陥の悪用: これらの悪意のある拡張は、サーバーが拡張データを解析および処理する方法における欠陥を悪用し、意図しないメモリのコンテンツにアクセスしたり返したりするようにします。
  3. 反復的なプロービング: 攻撃者は、時間の経過とともにより多くの漏洩データを収集するために、異なる悪意のある拡張を使用して複数のハンドシェイクリクエストを送信する場合があります。
  4. データの再構築: 複数のリクエストから漏洩したデータを分析することで、攻撃者は機密情報を再構築できる可能性があります。

サーバーが意図せずデータを漏洩する仕組み

  1. 不適切なメモリ管理: サーバーは SSL/TLS セッションを処理した後、メモリバッファを適切にクリアできず、メモリに残留データを残す場合があります。
  2. Use-After-Free 脆弱性: 一部の実装では、SSL コンテキストに関連付けられたメモリを誤って解放したにもかかわらず、拡張の処理を通じてそのメモリへのアクセスを許可し続ける場合があります。
  3. バッファオーバーフロー: 拡張ハンドラの実装が不十分な場合、割り当てられたバッファ領域を超えて書き込みが行われ、隣接するメモリコンテンツが露呈する可能性があります。
  4. 境界チェックの不備: サーバーは拡張データの長さを適切に検証できず、意図した境界を超えたデータの読み取りや書き込みにつながる場合があります。
  5. 未初期化メモリの使用: 一部のサーバーは応答を構築する際に未初期化のメモリを使用し、以前の操作のコンテンツを不注意に含めてしまう場合があります。

SSL Extension Bleed の結果

攻撃者はこの脆弱性を悪用して、以下のことができます。

  • 機密情報の抽出: メモリに保存されているデータにアクセスし、以前の SSL 接続を介して送信された SSL セッションキーや平文データを明らかにする可能性があります。
  • セッションのハイジャック: セッションキーが公開された場合、攻撃者は既存の SSL セッションへの不正アクセスを獲得し、許可なくユーザーアカウントや機密情報にアクセスできるようになる可能性があります。

シナリオ例

SSL/TLS をサポートし、ハンドシェイクのプロセスにおいてセッションの再開を最適化するために SessionTicket TLS などの特定の拡張を許可する Web サーバーを想像してください。しかし、不適切なメモリ管理やこれらの拡張の処理における欠陥により、以前の SSL セッションからの機密データ(セッションキーや平文データの一部など)がメモリに残ってしまいます。

攻撃者は、以下のステップを通じてこの脆弱性を悪用します。

  1. 攻撃者は、悪意を持って細工された SessionTicket TLS 拡張を含むハンドシェイクリクエストを送信します。
  2. この拡張は、チケットを処理する際にサーバーに意図されたメモリ境界を超えて読み取りを行わせるように設計されています。
  3. サーバーは応答を構築する際に、以前の SSL セッションの残骸を含む隣接するメモリ領域からのデータを含めます。
  4. 攻撃者はサーバーからの応答を受け取り、漏洩した情報を抽出します。
  5. 悪意のある拡張のバリエーションを使用してこのプロセスを繰り返すことで、攻撃者はさらに漏洩したデータを収集します。
  6. 攻撃者は収集したデータを分析し、以前の接続からのセッションキーや平文の断片を再構築する可能性があります。

このシナリオでは、サーバーが拡張データを適切に検証および処理できず、SSL/TLS 拡張で使用されるメモリバッファのクリアを怠ったために露呈が発生します。このような脆弱性の組み合わせにより、攻撃者は本来安全に消去されるべき、またはそもそもアクセスされるべきではなかった情報を抽出できるようになります。

推奨事項

SSL Extension Bleed のリスクを軽減するには:

  • SSL/TLS ライブラリのアップグレード: SSL/TLS ライブラリ(OpenSSL、BoringSSL、GnuTLS など)を定期的に最新バージョンに更新してください。各アップグレードの後にはアプリケーションをテストし、互換性と機能性を確保してください。

  • 強力な暗号スイートの実装: AES-GCM や ChaCha20 のような強力な暗号スイートを優先し、弱いもの(RC4、DES、3DES など)を無効にするようにサーバーを設定してください。SSL Labs の SSL Test などのツールを使用して、定期的に SSL/TLS の構成を確認し、改善してください。

リンク

標準

  • SOC2_CONTROLS:
    • CC_2_1
    • CC_4_1
    • CC_6_1
    • CC_7_1
    • CC_7_4
  • CCPA:
    • CCPA_1798_150
    • CCPA_1798_150
  • CWE_TOP_25:
    • CWE_20
    • CWE_125
  • GDPR:
    • ART_5
    • ART_12
    • ART_25
  • HIPAA_CONTROLS:
    • SECURITY252
    • SECURITY212
    • SECURITY213