緊急應對Heartbleed危機 藉防火牆機制擋SSL漏洞

最近最夯的資安新聞,應該就是SSL Heartbleed漏洞事件了。這個漏洞起因於OpenSSL函式庫程式設計上的一個小缺失,導致惡意使用者只要利用特製的SSL封包攻擊有此漏洞的網站伺服器,就可能取得每次最多64K的記憶體內容資訊。

由於OpenSSL被廣泛應用在各種網路服務上(最為所人知的是運用在網站伺服器)作為確保來往傳輸資料的安全加解密之用,就像是一把鎖,而如今這把鎖卻被證明為有漏洞,而且被攻擊之後,任何資訊都可能被洩漏而不自知,影響的層面既深且廣。

想要解決此類安全漏洞,釜底抽薪的方法是更新至最新的版本。但在現實環境中,將線上穩定的服務做更新,並不是一件簡單的事。

因此,本文除了會說明什麼是SSL Heartbleed漏洞以及如何檢測是否具有此類漏洞外,也提供一個利用netfilter機制的方法,讓現有的系統在未修補完成漏洞前,以防火牆的方式暫時阻擋Heartbleed攻擊的封包。

何謂SSL Heartbleed

SSL是Secure Socket Layer(安全套接層協定)的縮寫,主要是用於在Internet上提供加密保護的秘密性傳輸。此協定最早是由Netscape公司所提出,SSL的主要目標在於保證兩個應用間通訊的機密性和完整性以及可驗證伺服器身分,目前已廣泛應用在HTTP服務上。

為了替HTTP通訊協定來往的資訊提供加解密的保護,必須連接支援SSL的網站伺服器,需以HTTPS的方式進行連接,一旦以「https://」的方式連上網站,與網站伺服器來往的封包即會以加密的方式傳輸,如此一來,即使封包內容外洩,也會因為內容已被加密的原因,而無法得知實際的封包內容。

在開源碼社群中,最常被用來實作SSL加密的機制是OpenSSL函式庫(官方網址為https://www.openssl.org/),這也是本次漏洞的主角。關於Heartbleed漏洞的說明,在其官方網站上也已發布了相關的安全通報,弱點編號為CVE-2014-0160,有興趣的讀者可直接至其官方網站查閱。


分清楚Heartbeat與Heartbleed

對於此次的漏洞,讀者可能會發現相關新聞中常夾雜著Heartbeat與Heartbleed兩個名詞而感到混淆。

其實Heartbeat(心跳)是OpenSSL內的一個機制,而Heartbleed(心臟出血)一詞則是指此次的安全漏洞,或許是因為發現此漏洞的人用來形容其所造成的危害就像心臟出血那麼嚴重而取的名稱。

因為在OpenSSL 1.0.1~1.0.1f與OpenSSL 1.0.2~1.0.2-beta1版本中處理Heartbeat的程式碼出錯,而造成惡意攻擊者只要利用特製的SSL封包連接至有此漏洞的網站伺服器,即可取得當時系統記憶體內的內容(最多64K),而攻擊者便能夠利用解析記憶體內容來取得相關的敏感資訊。

事實上,由於OpenSSL函式庫廣泛被利用,所以受到此次漏洞影響的網站伺服器為數也相當眾多,其中不乏重要的網站伺服器,而引起大家的恐慌,也產生一些似是而非的論調。

例如,有些論調認為Heartbleed漏洞的產生,說明了目前支援SSL的網站伺服器已經不安全,需要全面更新。

其實對於寫程式為生的程式設計師而言,造成此次漏洞的成因是一件稀鬆平常的事,就是在撰寫OpenSSL 1.0.1~1.0.1f與OpenSSL 1.0.2~1.0.2-beta1版本時,因為撰寫時的邏輯錯誤而造成該段程式碼在特定條件成立下會回傳系統記憶體內容,因而有敏感資訊外洩的疑慮。

所以其實並不是SSL通訊協定有漏洞,也就是說如果不是使用那幾個版本的OpenSSL,或者使用其他SSL程式庫(如微軟的IIS網站伺服器)來實作SSL功能的網站伺服器,就不會受到此次漏洞的影響。

不管如何,網站管理人員一旦發現網站伺服器具有Heartbleed漏洞,還是要在最快的時間內修正漏洞,以消弭此漏洞的威脅。而要修正此漏洞,只需要將OpenSSL程式庫版本升級至1.0.1g版本以上就可以了。

但對系統而言,要升級運作穩定的系統,一定要先經過全面性的相容性測試,確認現存的系統在升級後還能順暢地運作,但是如此的做法曠日廢時,恐怕會緩不濟急。

因此,本文將利用Linux系統上的netfilter機制,以防火牆的方式來阻擋Heartbleed的攻擊封包,藉此保護網站伺服器的安全。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!