概述
2014年4月7日,OpenSSL宣布的OpenSSL1.0.2-beta及1.0.1系列(除1.0.1g)的所有版本中,在其所實現的TLS心跳擴展存在嚴重的記憶體處理錯誤。 它可以被用於讓每個心跳包顯示應用程式至多64千位元組的記憶體內容。它的CVE號為CVE-2014-0160。
該漏洞是通過傳送一個畸形的心跳請求至伺服器,以引起伺服器記憶體回響而引發。由於缺乏邊界檢查,OpenSSL不會驗證心跳請求的有效性,從而可以帶給攻擊者不恰當的伺服器回響。
自2011年12月31日,漏洞就已經存在,而且隨著OpenSSL版本1.0.1於2012年3月14日釋出,有缺陷的代碼被廣泛使用。 通過讀取網路伺服器記憶體,攻擊者可以訪問敏感數據,從而危及伺服器及用戶的安全。潛在的敏感數據,包括伺服器的專用主密鑰,可使攻擊者得以通過被動中間人攻擊,解密當前或存儲的傳輸信息(如果伺服器和客戶端未使用完全正向保密),或使用了完全正向保密時發動主動中間人攻擊。攻擊者無法控制伺服器返回的數據,因為伺服器會使用一個隨機記憶體塊作為回響。
漏洞還可能暴露其他用戶的敏感請求和回響,包括用戶任何形式的POST請求數據,會話cookie和密碼,這能使攻擊者可以劫持其他用戶的服務身份。在其披露時,約有17%或五十萬通過認證機構認證的網際網路安全網路伺服器被認為容易受到攻擊。電子前哨基金會, Ars Technica, 和布魯斯·施奈爾 都認為心臟出血漏洞是“災難性的”。
受影響的OpenSSL版本
最後更新於2014年4月9日,據Heartbleed和OpenSSL網站上的信息。
受影響
• OpenSSL1.0.2-beta
• OpenSSL1.0.1-OpenSSL1.0.1f
不受影響
• OpenSSL1.0.2-beta2(將來版本)
• OpenSSL1.0.1g
• OpenSSL1.0.0(及1.0.0的分支版本)
• OpenSSL0.9.8(及0.9.8的分支版本)
要解決此漏洞,建議伺服器管理員或使用1.0.1g版,或使用-DOPENSSL_NO_HEARTBEATS選項重新編譯OpenSSL,從而禁用易受攻擊的功能,直至可以更新伺服器軟體。
回應
在公告發布之日,Tor在其部落格發布公告,並表示任何在網際網路上尋求“強健的匿名或隱私”的人應該“在事情解決之前,接下來的幾天裡完全遠離網際網路“。他們還建議,Tor中繼運行者和隱蔽服務運行者在修補OpenSSL後,應撤銷及生成新密鑰,但也指出,Tor中繼使用兩套密鑰和多跳設計最大限度地減少了竊取單一中繼的影響。
加拿大稅務局(CRA)因心臟出血安全漏洞,關閉了電子服務網站。
平台維護者,如維基媒體基金會,建議他們的用戶更改密碼。
GitHub上的一個統計數據分析了2014年4月8日前1000個訪問量最大的網站,發現受影響的網站包括Yahoo、Imgur、StackOverflow、Slate和DuckDuckGo。安全的網站包括Google、Facebook、Wikipedia、Twitter及Amazon。
公眾回響
下面的網站已經發布公告,因受漏洞影響,建議用戶更改密碼:
• Akamai Technologies
• Amazon Web Services
• GitHub
• LastPass-LastPass自身並沒有被影響,但建議用戶修改所有儲存在LastPass的受影響網站賬戶的密碼,特別是有GitHub、OkCupid或雅虎帳戶的“每個人”。LastPass提供了一個頁面,公眾可以檢查網站是否受影響。2014年4月9日,LastPass開始向用戶報告已知受心臟出血影響的存儲了密碼的網站。
• Mojang
• PeerJ
• SoundCloud
• SparkFun
• Stripe (company)
• Tumblr
• Wikimedia
• Wunderlist
修復
該漏洞被歸為緩衝過度讀取。緩衝過度讀取錯誤是軟體可以讀取比應該被允許還多的數據。
OpenSSL版本1.0.1g增加了一些邊界檢查,以防止過度讀取緩衝。例如,測試
if(1+2+16>s->s3->rrec.length)return0;/*silentlydiscard*/ |
已添加在行
hbtype=*p++; |
的前面。 更改的完整列表,請參閱git.openssl.org。
單獨套用這個補丁並不能修復漏洞。還必須重新啟動相關服務和/或重啟伺服器,這樣修補過的OpenSSL才能被套用,然後重新生成所有的私鑰和密碼。