Categories
程式開發

五年了,Heartbleed漏洞仍未修復


五年了,Heartbleed漏洞仍未修復 1

五年了,Heartbleed安全漏洞補丁仍未全面普及。

Heartbleed安全漏洞在2012年被正式引入OpenSSL加密庫,但直到2014年才被發現並得到修復。但直到五年之後的今天,仍有眾多系統未能有效安裝修復補丁。

本文希望為IT團隊提供必要的信息,幫助大家判斷是否要使用Heartbleed漏洞的修復補丁。但這裡要提醒一句:即使安裝補丁,您的用戶數據仍有可能受到其他攻擊的影響。

Heartbleed安全漏洞是怎麼回事?

Heartbleed是OpenSSL加密庫中的一項代碼缺陷,具體如下:

memcpy(bp, pl, payload);

2014年,研究人員在流行密碼庫OpenSSL當中發現一項安全漏洞。順帶一提,OpenSSL負責為開發人員提供用於實現安全套接字層(SSL)與傳統層安全性(TLS)協議的工具與資源。

目前,各類網站、電子郵件、即時消息(IM)應用程序以及虛擬專用網絡(VPN)都依賴SSL與TLS協議,用以保障互聯網上通信內容的安全性與私密性。因此,只要使用OpenSSL組件,您的應用程序就會受到Heartbleed漏洞的影響。在漏洞曝光之時,已經有高達17%的SSL服務器被劃入影響範圍。

在漏洞被發現之後,很快得到CVE-2014-0160這一官方漏洞編號。不過在民間,大家普遍將其稱為Heartbleed。實際上,這個朗朗上口的名號來自Codenomicon的一位工程師,同時也是此項漏洞的發現者之一。

Heartbleed這個名稱,表達的是該安全漏洞的源頭——RFC 6520 Heartbleed擴展的一項錯誤實現。該擴展當中封裝有OpenSSL的SSL與TLS協議。

Heartbleed安全漏洞的表現

Heartbleed安全漏洞會削弱SSL與TSL兩大常見互聯網通信協議的安全性。受到Heartbleed影響的網站,允許潛在的攻擊者讀取用戶的訪問歷史。換言之,精心謀劃的網絡罪犯可以藉此找出用戶的加密密鑰。

一旦加密密鑰外洩,惡意攻擊者將能夠獲取入侵系統所必需的憑證(包括用戶名與密碼)。在系統內部,入侵者還能利用失竊憑證所對應的授權級別發動更多後續攻擊、竊聽通信內容、頂替用戶並奪取數據。

Heartbleed的工作原理

Heartbleed漏洞會削弱Heartbleed擴展的安全水平,進而損害SSL與TLS服務器同客戶端之間的通信安全。

在理想情況下,Heartbleed擴展本應負責驗證服務器請求,進而保護SSL與TLS協議。具體來講,它允許通信端計算機發送Heartbleed請求消息。

每條消息中都包含有效載荷(一條包含已傳輸信息的文本字符串),外加一個代表有效載荷存儲長度的數字(通常為16位整數)。在提供這些請求信息之前,Heartbleed擴展首先需要進行邊界檢查,驗證輸入請求並返回所請求的有效載荷長度。

OpenSSL Heartbleed擴展中的缺陷,導致驗證流程中出現了一個漏洞。事實上,Heartbleed擴展程序並沒有進行邊界檢查,而是分配了一個沒有經過驗證的內存緩衝區。惡意攻擊者可以藉此發送請求,並接收最多64 KB的內存緩衝區內可用信息。

內存緩衝區是臨時的內存存儲位置,其存在的目標在於存儲傳輸中的數據。緩衝區內可能包含多種不同數據類型,代表著不同的信息存儲形式。在本質上,內存緩衝區會在信息被發送至指定位置之前,一直保留這部分信息內容。

內存緩衝區不會進行數據整理,而是對數據進行分批存儲。因此,內存緩衝區內可能包含敏感與財務信息,外加憑證、Cookie、網站頁面與圖像、數字資產以及任何傳輸中的數據。當惡意攻擊者利用Heartbleed漏洞時,他們會通過欺詐手段通過Heartbleed擴展獲取內存緩衝區中的所有可用信息。

Heartbleed的修復情況

谷歌公司的Bodo Moeller與Adam Langley為Heartbleed創建了修復程序。他們編寫了代碼,提醒Heartbleed擴展應忽略一切除有效載荷必要數據之外的Heartbleed請求信息。

下面來看Heartbleed修復代碼示例:

if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0; /* silently discard per RFC 6520 sec. 4 */

Heartbleed漏洞給OpenSSL帶來的影響

Heartbleed安全漏洞的曝光在世界範圍內引起了恐慌。在安裝這一修復補丁之後,關注者們開始積極尋求事件的緣由。在對OpenSSL項目進行一番嚴格審查之後,人們意識到這套廣受歡迎的加密庫僅由兩人負責維護,且相關預算少得可憐。

這一發現,給我們帶來了兩項積極的舉措,甚至在一定程度上改變了開源的格局:

  • 組織意識到支持開源項目的重要性。因為OpenSSL的兩名成員只能用自己的積蓄支持這項事業。另一方面,使用開源成果的組織完全可以提供保障項目安全所需要的資源。
  • 為了資助重要的開源項目,Linux啟動了核心基礎設施設計(CII)。 CII選定那些最關鍵的開源項目,特別是對互聯網以及其他信息系統具有重要影響的項目。 CII收取大型組織的捐款,並以規劃及賠款的形式將其交付至各開源軟件項目手中。

與以往引髮變革的無數危機一樣,Heartbleed漏洞當然也帶來了負面影響:漏洞品牌開始興起。 Heartbleed漏洞就是由谷歌與Codenomicon兩個實體同時發現的。

谷歌方面選擇不公開披露這項漏洞,而僅與OpenSSL貢獻者進行信息共享。但在另一方面,Condemonicon則選擇將消息發布給公眾。他們命名了這一漏洞,甚至創建了徽標與網站,並開始以營銷活動的思路投入大規模宣傳。

在接下來的幾年中,很多公開曝光的漏洞都得到瞭如同知名產品般的對待——公關公司為其樹立品牌,營銷機構部署品牌名稱、徽標甚至是專門的網站。雖然這些作法在一定程度上提高了公眾對於零日漏洞的關注度,但同時也引發了巨大的潛在混亂。

如今,安全專家與軟件開發人員正忙著處理數以千計的漏洞。為了給系統提供適當保護,他們需要首先確定漏洞的優先級。以此為基礎,他們才能斷言哪些漏洞需要立即修復,哪些可能稍後再行處理。有時候,那些被標榜為高危的“知名”安全漏洞,其實並沒有那麼重要。

畢竟在面對安全漏洞時,相關各方不一定總有充裕的時間、技能以及資源來判斷其確切危險程度。因此,專業人士們應該集中精力為那些有利於公眾的方式開發修復補丁,而非將安全漏洞變成一種營銷噱頭。

Heartbleed的現狀

如今,距離Heartbleed漏洞的最初披露已經過去了五年,但它仍然廣泛存在於眾多服務器及系統當中。當然,OpenSSL的最新版本已經做好了修復,但尚未(或者無法)升級至修復版本的OpenSSL系統仍會受到這項漏洞的影響,且極易受到攻擊。

對於惡意攻擊者而言,只要能找到Heartbleed漏洞,接下來就一切好辦:他們可以自動進行檢索,然後輕鬆完成入侵。在找到這類易受攻擊的系統之後,利用過程相當簡單,由此獲得的信息及/或憑證也能幫助他們快速推進其他後續攻擊。

裝補丁,還是不裝補丁,這是個問題

Heartbleed漏洞屬於因人為錯誤而出現的OpenSSL安全缺陷。由於OpenSSL的廣泛普及,不少應用程序都受到直接影響,致使惡意攻擊者能夠輕鬆獲取大量數據。

在發現漏洞之後,谷歌員工找到了解決方案,並向OpenSSL貢獻者提供了相關代碼。在此之後,貢獻者又進一步引導OpenSSL用戶進行版本升級。聽起來一切都很美好。

但截至目前,即使是完成了OpenSSL版本升級,由於代碼庫本身未經編輯,我們仍然能夠從眾多應用程序、系統以及設備當中找到Heartbleed漏洞。如果大家擔心自己可能受到影響,可以點擊此處測試您的系統。萬一結果顯示您的設備無法支持修復補丁,大家應當盡快採取其他措施以緩解或者消除風險。

服務器或者云平台的修復工作一般比較簡單,但物聯網設備就麻煩一些,可能需要單獨為其安裝補丁,甚至配合更高級的風險處理技術。在這方面,建議大家盡快與系統管理員聯繫,確定如何消除Heartbleed這個老漏洞可能帶來的新問題。

原文鏈接
Five years later, Heartbleed vulnerability still unpatched