DROWN SSLv2出現漏洞,三分之一的HTTPS伺服器陷入危險

一個「新」而重要的漏洞被發現了,會影響到 HTTPS及有使用 SSL/TLS的服務。這個漏洞存在於SSLv2協定中,影響所有使用的程式。研究人員將此攻擊稱為DROWN,「Decrypting RSA using Obsolete and Weakened eNcryption(即利用過時和弱加密來解密RSA)」的縮寫。此攻擊讓攻擊者可以讀取或竊取透過「安全」連線送出的資訊。目前還沒有已知的真實攻擊發生。

DROWN和其他SSLv2問題在最近的安全通報中使用下列CVE編號:

  • 跨協定攻擊使用SSLv2的TLS(DROWN)(CVE-2016-0800
  • SSLv2不會封鎖停用的加密(CVE-2015-3197
  • 使用分治法(Divide and conquer)找出SSLv2的會話金鑰(session key)(CVE-2016-0703

SSLv2被認為是過時的協定(可以追溯到1995年2月)。已經不再被建議使用在任何工作環境中。然而,許多伺服器仍然因為向下相容的關係而支援SSLv2。伺服器管理員希望確保自己的服務可以盡可能地提供給更多使用者;他們希望確保使用者在連到伺服器時(即便是用過時的系統),可以存取所有可用的服務。

要進行DROWN攻擊,攻擊者必須能夠進行中間人(MITM)攻擊,並且可以對目標伺服器進行多次SSLv2連線。如果攻擊者對伺服器進行多個SSLv2連線,就可以使用暴力破解法找出會話金鑰。一旦找到金鑰,就可以解密被擷取的網路流量。

如果滿足底下兩個條件中的任何一個,伺服器就可能受到DROWN攻擊影響:

  1. 支援SSLv2請求
  2. 其私密金鑰被用在其他允許SSLv2連線的伺服器上,即便是用較新的SSL/TLS協定版本

提出DROWN的研究者聲稱,有17%的HTTPS伺服器仍然允許SSLv2連線。因此,如果能夠進行中間人(MITM)攻擊,攻擊者可以用SSLv2連線來試探伺服器(受害者電腦不會用此發送連線),找出會話金鑰,用它來解密(甚至是TLS流量)。

考慮到重複使用金鑰的狀況,有另外16%的HTTPS伺服器會受到影響,所以有三分之一的HTTPS伺服器都有危險。此外,如果其他服務(如SMTP、POP等)也在這些伺服器上共用同一把金鑰,它們也會有危險。

研究人員已經在GitHub上發表掃描程式,它會發送SSLv2請求到給定端口並等待回應;以此測試漏洞是否存在。這並非指這伺服器已經真的被攻擊了。

 

圖1、DROWN偵測工具展示(點入以放大)

 

解決辦法

要修復此漏洞相當簡單:如同OpenSSL的建議一樣,伺服器管理員需要確保在任何地方都不再支援SSLv2。SSLv2已經過時,有許多已知漏洞,今日已經不該再使用。此外,伺服器的私鑰不該被重複使用,特別是過去曾經支援過SSLv2的伺服器。

OpenSSL 1.0.2的使用者應該升級到1.0.2g。OpenSSL 1.0.1的使用者應該升級到1.0.1s。更舊版本的OpenSSL使用者應該升級到這兩版本的其中一個。

Deep Security客戶可以使用下列DPI規則下來檢查環境中是否有SSLv2被使用:

  • 1005321 – Detected SSLv2 Request

在SSL/TLS 中有其他弱點會讓攻擊更加容易,特別是還在使用出口等級加密(export grade cipher)的話。底下規則可以幫忙偵測和解決這類風險:

 

  • 1006561 – Identified Usage Of TLS/SSL EXPORT Cipher Suite In Response
  • 1006485 – SSL RSA Downgrade Vulnerability
  • 1006562 – Identified Usage Of TLS/SSL EXPORT Cipher Suite In Request

 

@原文出處:DROWN SSLv2 Vulnerability Rears Ugly Head, Puts One-Third of HTTPS Servers At Risk