OpenSSL Heartbleed漏洞讓遠端駭客利用竄改的封包,並觸發緩衝區溢位來竊取記憶體中的機密資料。Heartbleed漏洞震驚了業界,因為它能讓駭客傳送被竄改的SSL heartbeat訊息,並藉此竊取受駭網站上的機密資料。由於伺服器也能傳送heartbeat訊息給用戶端,因此惡意伺服器也能攻擊用戶端並竊取機密資料。我們在Android平台上發現某些Android程式含有具Heartbleed漏洞的OpenSSL函式庫,而且下載次數高達1.5億次。
目前Google Play中有17個號稱可偵測Heartbleed漏洞的防毒程式,其中六種會掃描Android平台上的OpenSSL函式庫,以找出漏洞。不過,這種方法並無法有效偵測出Android上的Heartbleed漏洞。除了特定Android版本(4.1.0-4.1.1為主),大部分的Android平台都沒有這樣的弱點,因為他們都是使用不會受影響的OpenSSL函式庫或已停用OpenSSL heartbeat功能。
不過,Android程式經常使用自建函式庫,因此會直接或間接地用到易受攻擊的OpenSSL函式庫。換句話說,即使Android平台本身安全無虞,駭客仍可對易受攻擊的程式發動攻擊,例如劫持網路連線、將程式導引至惡意伺服器,並將被竄改的heartbeat訊息傳送到程式,以竊取機密資料。
我們研究了有安全弱點的OpenSSL函式庫,並確認了攻擊的事實,結果發現易受攻擊的大多數是遊戲程式,以及少數的文書應用程式。雖然遊戲程式通常沒有太多重要資料,但駭客仍可竊取OAuth代碼(例如存取與更新代碼)並入侵玩家帳號,如此一來,駭客就能用這些資料入侵相關的社群網站帳號,並更改設定。至於遭受Heartbleed漏洞攻擊的辦公室文書軟體可能導致機密資料外洩,因此危險性較高。
在調查含有OpenSSL函式庫安全弱點的辦公室文書軟體時,我們很驚訝地發現,它們並不會遭受Heartbleed攻擊。為什麼呢?經過深入探討,我們發現這些程式不是原生碼的連結有問題,就是含有無效的程式碼。因此,當駭客試圖啟動SSL功能時,程式會直接用Android作業系統內無安全弱點的OpenSSL函式庫,而不會用程式提供的有弱點函式庫。使用原生碼開發的Android應用程式經常會出現這種連結錯誤,沒想到這種錯誤卻歪打正著地降低了程式被攻擊的風險。
在Google Play的17個Heartbleed漏洞偵測程式中,只有六種會掃描找出Android平台上的OpenSSL函式庫漏洞。在這六個程式中,其中兩個的檢查結果顯示所有已安裝的程式都是安全的,包括我們確認已遭受攻擊的程式、其中一個未顯示任何掃描結果、另一個未掃描正確的OpenSSL版本,只有剩下的兩個程式有進行深度檢查。雖然這兩個程式把某些安全程式標記為受攻擊的程式,不過我們認同此份報告的有效性,因為內容提到了漏洞與連結錯誤。我們也發現這17種Heartbleed漏洞偵測程式中有幾個是虛有其表的,不僅無法實際偵測漏洞,也不會顯示偵測結果,因此充其量只是廣告軟體。
我們於4月10日檢視了5.4萬個Google Play上的應用程式(每個程式下載率都超過10萬次),發現至少有2.2億次的下載遭受Heartbleed漏洞攻擊。我們也通知程式的開發人員與函式庫廠商,告知產品有OpenSSL Heartbleed漏洞。幸虧大多數的開發人員與函式庫廠商都很重視Heartbleed漏洞這個問題,並於修復後推出更新版本。至4月17日為止,遭受攻擊的程式下載率已降到1.5億次。