十多名資安研究人員於周二(3/1)共同發表一份研究報告,揭露了名為DROWN的安全漏洞,該漏洞影響採用SSL與TLS等協定的HTTPS網站 ,將允許駭客進行中間人攻擊,破解加密傳輸,讀取機密流量,涵蓋密碼、信用卡號碼或金融資料等,估計全球有33%的HTTPS網站受到波及。
DROWN的全名為Decrypting RSA with Obsolete and Weakened eNcryption,指的是破解基於老舊及脆弱加密的RSA演算法,駭客利用特製的連結存取SSLv2伺服器就能截取並解密TLS流量。
密碼學專家Matt Green指出,DROWN是一個典型的跨協定攻擊(cross protocol attack),這類的攻擊透過SSLv2協定漏洞去攻擊採用TLS協定的安全連結,雖然SSLv2與TLS皆支援RSA加密,但TLS能夠防禦針對RSA加密的攻擊,SSLv2則否。
研究人員描述了駭客的可能手法:駭客先觀察客戶端與伺服器端的數百個連結,最終將得以解密其中一個連結 ,長期蒐集眾多連結除了可攔截流量外,也能哄騙使用者造訪惡意網站,以讓使用者在不知情的狀況下於背景產生與其他網站的連結。
這些連結得以使用各種版本的SSL/TLS協定,只要是基於RSA金鑰交換方法即可,包含TLS 1.2在內。在RSA金鑰交換中,客戶端選取一個隨機金鑰並將它傳送到伺服器端,利用RSA與伺服器的公開金鑰即能予以解密。
駭客反覆地連結被鎖定的SSLv2伺服器並傳送特製的交握(handshake)訊息,並變更客戶端連結的RSA密文,在不斷地試探下,伺服器終將洩露客戶端TLS連結所使用的金鑰。
要執行這類的攻擊成本並不高,根據估計,若要從900個客戶端的TLS連結中解密其中一個,大概要執行4萬次的試探連結與2^50次運算,在Amazon EC2使用這些運算資源的成本只要440美元。
此外,多數受到DROWN漏洞影響的伺服器還含有OpenSSL臭蟲,可大幅降低攻擊成本,只要1.7萬次的試探連結就能從260個TLS連結中找出其中一個的金鑰,而高階PC在1分鐘之內就能辦到。
DROWN的漏洞編號為CVE-2016-0800,而另兩個OpenSSL漏洞則會讓形勢更嚴重,這兩個OpenSSL編號分別是CVE-2015-3197與CVE-2016-0703。
研究人員指出,只要允許SSLv2連結的伺服器皆受到影響,估計有17%的HTTPS伺服器支援SSLv2,即使是在基於其他協定的伺服器上共用了來自SSLv2伺服器的私鑰也會遭到牽連,例如電子郵件伺服器支援SSLv2,但網站伺服器則否,可是雙方共享了金鑰,那麼駭客還是能藉由郵件伺服器破解網站伺服器的連結,估計有16%的伺服器受到牽連,導致有高達33%的HTTPS伺服器處於風險中。
如何檢查使用的 SSL 版本呢?
驗證 sslv2
# openssl s_client -ssl2 -connect www.winho.com.tw:443
出現如下就是已把 SSLv2關閉了
CONNECTED(00000003)
write:errno=54
其它像 SSLv3 及 TLSv1 如果出現憑證資訊就表示我還是可以用 SSLv3 及 TLSv1
# openssl s_client -ssl3 -connect www.winho.com.tw:443
# openssl s_client -tls1 -connect www.winho.com.tw:443