DROWN 攻撃 (CVE-2016-0800)
DROWN 攻撃 (CVE-2016-0800) とは何ですか?
DROWN 攻撃 (CVE-2016-0800)2016 年公表のクロスプロトコル攻撃。SSLv2 を有効にし TLS と鍵を共有するサーバーを利用して現代の TLS セッションを復号し、HTTPS・SMTPS・IMAPS の安全性を損なう。
DROWN(Decrypting RSA with Obsolete and Weakened eNcryption、CVE-2016-0800)は 2016 年 3 月 1 日に Aviram、Schinzel、Somorovsky らによって公表されました。これはクロスプロトコル攻撃です。SSLv2 は今なお 40 ビットのエクスポート用 RSA 暗号スイートをネゴシエートし、そのハンドシェイクは暗号文の PKCS#1 v1.5 パディングが正しいかどうかを漏らします。これにより SSLv2 サーバーは Bleichenbacher 型のパディングオラクルとなります。重要なのは、脆弱な SSLv2 サービスが攻撃対象そのものである必要はない点です。いずれかのサービスが同じ RSA 秘密鍵/証明書を共有していれば(例えば Web サーバーの鍵を再利用する古い SMTP や IMAP サーバー)、攻撃者は現代の TLS ハンドシェイクを受動的に記録し、セッション鍵をオフラインで復号できます。
一般的な攻撃には記録された TLS 接続が約 1,000 件と約 2^50 の計算量が必要でしたが、当時のクラウド計算で 440 USD 未満で実行可能でした。はるかに深刻な「special DROWN」変種は OpenSSL の不具合(CVE-2016-0703)を悪用し、能動的な攻撃者がノート PC 上で単一の TLS セッションを数分で復号できました。研究者らは全 HTTPS サーバーの約 33% が脆弱だと推定しました。緩和策は、すべてのサービスで SSLv2 を無効化する、OpenSSL を 1.0.2g/1.0.1s に更新する、SSLv2 対応エンドポイントと最新エンドポイントの間で秘密鍵や証明書を決して再利用しないことです。
flowchart TD A[クライアント] -->|現代の TLS ハンドシェイク| B[安全な TLS サーバー] C[攻撃者] -->|RSA 暗号化ハンドシェイクを<br/>受動的に記録| B C -->|細工した暗号文を送信| D[SSLv2 サーバー<br/>同じ RSA 鍵/証明書] D -->|パディングオラクルの応答<br/>エクスポート暗号| C C --> E[TLS セッション鍵を復元<br/>Bleichenbacher / DROWN] E --> F[取得したセッションを復号<br/>HTTPS / SMTPS / IMAPS]
● 例
- 01
証明書を共有する SSLv2 対応の SMTP サーバーを利用して、取得した HTTPS ハンドシェイクを復号する。
- 02
DROWN 公表後、メール・FTP・レガシーゲートウェイで SSLv2 を一斉無効化する。
● よくある質問
DROWN 攻撃 (CVE-2016-0800) とは何ですか?
2016 年公表のクロスプロトコル攻撃。SSLv2 を有効にし TLS と鍵を共有するサーバーを利用して現代の TLS セッションを復号し、HTTPS・SMTPS・IMAPS の安全性を損なう。 サイバーセキュリティの 脆弱性 カテゴリに属します。
DROWN 攻撃 (CVE-2016-0800) とはどういう意味ですか?
2016 年公表のクロスプロトコル攻撃。SSLv2 を有効にし TLS と鍵を共有するサーバーを利用して現代の TLS セッションを復号し、HTTPS・SMTPS・IMAPS の安全性を損なう。
DROWN 攻撃 (CVE-2016-0800) からどのように防御しますか?
DROWN 攻撃 (CVE-2016-0800) に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
DROWN 攻撃 (CVE-2016-0800) の別名は何ですか?
一般的な別名: CVE-2016-0800, クロスプロトコル SSLv2 攻撃。