心跳(Heartbeat)停止:Heartbleed OpenSSL漏洞分析

軟體會有漏洞是我們必須面對的現實,如果我們夠幸運且夠勤快,那就可以在網路犯罪份子攻擊它之前先加以修補。事實並不一定總是如此,但幸好那些算是例外,而不是常態。

Heartbleed

不過最近新聞爆出了一個關於 OpenSSL 的Heartbeat擴充程式漏洞,這是個開放原始碼工具包,用來幫助網站管理員和開發人員讓交易更加安全。而這個漏洞如果被利用的話(因為此漏洞的本質,所以沒辦法知道網路犯罪份子是否已經如此做),可能代表有許多使用OpenSSL的網站和應用程式上的交易已經被危及了。

什麼是Heartbeat OpenSSL擴充程式?

OpenSSL在2011年12月左右推出名為Heartbeat的擴充程式,隨著1.0.1編譯版本發佈,被定義在RFC 6520 TLS/DTLS Heartbeat擴充程式。這個擴充程式的功能是幫助避免重新建立會話,並允許一個讓SSL會話可以維持更久的機制。該 RFC 建議 HeartbeatRequest 必須用HeartbeatResponse訊息回答。這結果會保存網路資源,資源一般用在完整會話的重新協商。

這裡要指出的是,OpenSSL被用在許多網站和軟體上,從開放原始碼的伺服器(像Apache和Nginx),到電子郵件伺服器,聊天伺服器,虛擬私有網路(VPN),甚至是網絡設備。

因此,可以很合理的假設Hearbead擴充程式已經被大量地應用,也讓這漏洞的影響範圍真的相當廣泛。

 

了解Heartbleed臭蟲

該漏洞被稱為Heartbleed臭蟲,存在於所有實作Heartbeat擴充程式的OpenSSL。當攻擊一個有漏洞的伺服器時,可以讓攻擊者一次讀取部分(最多64KB)的電腦記憶體而不會留下任何痕跡。

這一小塊記憶體可能會包含使用者重要的個人資料 – 私鑰、使用者名稱、密碼(在很多情況下是以明文的形式)、信用卡資料以及機密文件等等。攻擊者可以一再地要求記憶體區塊以盡可能地獲取他們所想要的資訊。而且這個漏洞可以被任何人從網路上的任何地方加以攻擊。

一個主要的網路內容供應商也受到此漏洞影響,他們迅速努力地修復它。但在它修復之前,有些惡意份子可能已經竊取了敏感資料。

在它的核心,Heartbleed臭蟲是個簡單而平常的編碼錯誤,結果導致了安全問題,它會返回記憶體內容而不檢查它實際讀取和返回多少。

因此,使用者可以要求更多的資料,它會提供使用者更多來自記憶體的資料而不去檢查這使用者實際上是否有權查看這些資料。有個Payload Length欄位可以被變造以騙過伺服器來抓取記憶體內容。

 

 

圖一、Heartbleed臭蟲的Payload Length

 

該漏洞已被分配識別碼CVE-2014-0160

由於這種攻擊不留痕跡(它利用的是程式碼內的錯誤),所以很難說它是否實際有被攻擊者利用過。我們會透過我們的感測器來監控此類行為。

 

哪些版本的OpenSSL受到影響?我是否受到影響?

 

根據OpenSSL的通告

「只有OpenSSL 1.0.1和1.0.2- beta版本受到影響,包括1.0.1f和1.0.2-beta1。」

任何其他版本的OpenSSL都不會受到此漏洞影響。如果你使用這些版本中的任何一個來編譯應用程式,那你可能會受到影響。

使用者還可以用此網站來檢查他們的伺服器是否受到Heartbleed漏洞影響。

已修補的版本是1.0.1g,在2014年4月7日發佈。

 

如果我有受到影響,應該怎麼做?

受影響的使用者必須升級到OpenSSL版本1.0.1g,它已經修補了Heartbleed臭蟲。

如果不能進行升級,你就必須重新編譯應用程式來關閉Heartbeat擴充程式。透過使用 -DOPENSSL_NO_HEARTBEATS旗標完成。

SSL憑證也必須撤銷以及換新。安裝在受影響版本OpenSSL的憑證私鑰很可能已經被外洩了。因為沒辦法知道哪些現有憑證受到影響,所以必須產生新的SSL憑證。

使用者也要考慮變更網路帳號的密碼,因為Heartbleed漏洞會暴露像使用者名稱和密碼等敏感資料。為了避免帳號受到危害,當使用者被通知重設密碼時就要盡快進行。他們還應該監控帳戶內任何可疑的活動,尤其是跟財務相關的帳戶。

 

趨勢科技解決方案

Deep Security客戶應該升級到DSRU-14-009,並指定下列規則:

  • 1006010 – Restrict OpenSSL TLS/DTLS Heartbeat Request
  • 1006011 – OpenSSL TLS/DTLS Heartbeat Information Disclosure Vulnerability
  • 1006012 – Identified Suspicious OpenSSL TLS/DTLS Heartbeat Request

 

同時也能夠透過對網路活動的能見度和控制能力來察覺試圖對此漏洞進行的攻擊 Deep Discovery 可以透過規則CVE-2014-0160-SSL_HEARTBEAT_EXPLOIT來監控網頁伺服器和檢查SSL/TLS相關流量。一旦發現,Deep Discovery 會尋找Heartbeat訊息回應,並檢查是否有漏洞攻擊的特徵出現,特別是連續回應數目、回應資料數量等等。這讓它可以偵測:對監控中伺服器的攻擊,在監控網路試圖去攻擊Heartbleed漏洞。這新的 Deep Discovery 規則已經發佈且會自動應用,因為是 Deep Discovery 自動更新程序的一部分。

更新於2014年4月14

客戶端應用程式也可能受到Heartbleed漏洞影響。如果它們連到惡意伺服器,Heartbleed漏洞就可能被用來讀取客戶端系統的記憶體。在4月11日,趨勢科技發佈以下規則以保護使用 Deep Discovery  和IDF的使用者防護這個漏洞攻擊:

  • 1006016 – OpenSSL TLS/DTLS Heartbeat Message Information Disclosure Vulnerability
  • 1006017 – Restrict OpenSSL TLS/DTLS Heartbeat Message

 

@原文出處:Skipping a Heartbeat: The Analysis of the Heartbleed OpenSSL Vulnerability作者:Pawan Kinger(弱點研究經理)