Heartbleed漏洞的原理與防治

摘要nginx


2014年,安全研究人員發現了SSL的嚴重缺陷,這就是後來咱們所知的Heartbleed漏洞。Heartbleed漏洞削弱了最多見的Internet通訊協議(SSLTSL)的安全性。受Heartbleed影響的網站容許潛在的***者讀取他們的內存。這意味着***者能夠得到加密密鑰,依次憑據在系統內部發起更多***,例如:竊聽通訊、模擬用戶以及竊取數據等。本文分析Heartbleed漏洞的原理並提出防治手段,以供系統管理員參考。web

SSL簡介瀏覽器

SSLSecure Sockets Layer(安全套接字層)的縮寫,是一系列加密技術,可以讓Web用戶保護其在Internet上傳輸的信息的隱私。安全

當您訪問安全網站(例如mail.aliyun.com)時,URL旁會顯示一個鎖,代表您與該站點的通訊已加密。 這是Safari瀏覽器中的外觀:服務器

image.png

1:SSL在網站中的應用網絡

該鎖應該代表第三方將沒法讀取您發送或接收的任何信息。 在後臺,SSL經過將您的數據轉換爲只有收件人知道如何解密的編碼消息來實現此目的。 若是惡意方正在聽對話,它將僅看到看似隨機的字符串,而不是電子郵件,論壇帖子,信用卡號或其餘私人信息的內容。SSLNetscape1994年引入。近年來,主流在線服務已趨向於默認使用加密。ide

若是正確實施,則認爲SSL是高度安全的。可是對於SSL安全而言,2014年是糟糕的一年。Heartbleed不是那年發現的惟一安全漏洞。2月,在AppleSSL實施中發現了一個嚴重缺陷。下個月,在另外一個SSL實例中發現了一個漏洞,該實例在開源操做系統中很流行。工具

OpenSSL簡介測試

OpenSSL是容許計算機使用SSL加密標準進行通訊的軟件。 這是一個由志願者建立和維護的開源項目。 它於1998年首次發佈,現已成爲世界上最受歡迎的SSL實現之一。網站

OpenSSL被普遍使用。 緣由之一是它已被合併到其餘各類軟件產品中。 例如,兩個最受歡迎的Web服務器軟件包,稱爲Apachenginx,都使用OpenSSL加密網站。

在發生Heartbleed***時,OpenSSL網站僅列出了15位活躍的開發人員,其中大多數是自願爲該項目作出貢獻的。 可是,並不是全部對OpenSSL軟件所作的更改都是由這15我的編寫的。 而是,這些開發人員幫助過濾和組織來自偶爾作出貢獻的較大人羣的建議更改。

考慮到備受矚目的商業軟件項目一般須要數十甚至數百人來進行工做,所以,OpenSSL團隊在2012年推出新版本的軟件時沒有注意到細微的Heartbleed錯誤就不足爲奇了。

發現Heartbleed錯誤後,幾家大型科技公司集中了資源,以加大力度保護OpenSSL和其餘構成互聯網核心基礎結構的開源軟件。

Heartbleed漏洞***的原理

SSL標準包括心跳選項,該選項爲SSL鏈接一端的計算機提供了一種方法來再次檢查線路的另外一端是否仍然有人。 此功能頗有用,由於某些Internet路由器在空閒時間過長時會斷開鏈接。 簡而言之,心跳協議的工做方式以下:

image.png


2:心跳協議的工做方式

心跳消息分爲三個部分:請求確認,簡短的隨機選擇消息(在這種狀況下爲「banana」)以及該消息中的字符數。 只需假定服務器確認已收到請求,而後將消息鸚鵡化。

Heartbleed***利用了服務器過於信任這一事實。 當有人告訴它消息包含6個字符時,服務器會自動發送回6個字符做爲響應。 惡意用戶能夠利用服務器的輕信:


image.png

顯然,「giraffe」一詞的長度不超過100個字符。 可是服務器在發回響應以前不會費心檢查,所以它會發回100個字符。 具體來講,它將發回7個字符的單詞「giraffe」,而後在服務器內存中緊隨單詞「giraffe」以後存儲的93個字符返回。 計算機一般以隨意的順序存儲信息,以將其儘量緊密地包裝到其內存中,所以沒法肯定可能返回的信息。 在這種狀況下,單詞長頸鹿後面的記憶位包含屬於用戶John Smith的敏感我的信息。

在真正的Heartbleed***中,***者不只要求輸入100個字符。 ***者能夠要求大約64,000個字符的純文本。 它不只能夠詢問一次,還能夠一遍又一遍地發送惡意的心跳消息,使***者每次都能取回服務器內存的不一樣片斷。 在此過程當中,它能夠得到從未打算向公衆提供的大量數據。

解決此問題的方法很簡單:服務器只須要較少的信任便可。 服務器須要盲目地發回所請求的數據,而不是盲目地發回所請求的數據,而是須要檢查服務器是否要求發回的字符數比開始時多。 這正是OpenSSLHeartbleed Bug的修復。

Heartbleed漏洞的今天

在披露Heartbleed漏洞五年後的今天,它仍然存在於許多服務器和系統中。 固然,當前版本的OpenSSL是固定的。可是,未升級到已修補版本的OpenSSL的系統仍然會受到該漏洞的影響,而且容易受到***。對於***者而言,發現Heartbleed漏洞是一項獎勵。***者若是經過自動檢索工具,則發現漏洞更爲容易。***者找到易受***的系統後,利用該漏洞相對容易。發生這種狀況時,***者就能夠訪問可用於發起其餘***的信息或憑據。

Heartbleed漏洞的修補

Heartbleed漏洞是因爲人爲錯誤引入OpenSSL的安全漏洞。 因爲OpenSSL的普及,許多應用程序受到了影響,***者纔可以獲取大量數據。

發現該漏洞後,Google員工找到了解決方案,並向OpenSSL貢獻者提供瞭解決此問題的代碼。 而後,指示OpenSSL用戶升級到最新的OpenSSL版本。

可是,今天,即便升級OpenSSL版本而不是編譯代碼庫,仍然能夠在應用程序,系統和設備中找到Heartbleed漏洞。 若是您擔憂本身可能會受到影響,能夠在設備沒法支持修補程序的狀況下測試系統的Heartbleed漏洞和修補程序,以消除風險或減輕風險。

任何服務器或雲平臺都應該相對容易打補丁。 可是,IoT設備有時可能須要打補丁,所以可能須要更高級的緩解技術。 

總結

Heartbleed***的規模爲Internet社區敲響了警鐘。 做爲迴應,十多家技術公司已承諾爲核心基礎設施計劃作出貢獻。 該項目由非營利性Linux基金會組織,將把資金引導到資金不足的普遍使用的開源項目,例如OpenSSL

該基金會在20144月下旬告訴Ars Technica,它已經從包括亞馬遜,微軟,谷歌和Facebook在內的主要技術公司得到了390萬美圓的捐款。

由惠普聯合創始人威廉·休利特(William Hewlett)和他的妻子創立的惠普基金會(Hewlett Foundation)也爲互聯網安全工做提供資金。 出於非凡的遠見卓識,該基金會於201442日,即公開披露Heartbleed計劃的前幾天,宣佈了一項2,000萬美圓的網絡計劃 該基金會但願幫助創建一個專家網絡,以確保互聯網的安全,開放和良好的管理。

這些投資是糾正互聯網安全資金嚴重不足的一小步。 網絡佔據了數十億美圓的商業收入; 即便在這筆2400萬美圓的慈善投資以後,仍然迫切須要投入更多的資源來保護網絡。

參考文獻:

[1]Gilad David Maayan.Five years later, Heartbleed vulnerability still unpatched[EB/OL].https://blog.malwarebytes.com/exploits-and-vulnerabilities/2019/09/everything-you-need-to-know-about-the-heartbleed-vulnerability/?web_view=true,2020-731.[2]Timothy B. Lee.The Heartbleed Bug, explained[EB/OL].https://www.vox.com/2014/6/19/18076318/heartbleed,2015-5-14.

相關文章
相關標籤/搜索