OpenSSL Heartbleed 的大慘敗沒有任何異議的證明了人們一直懷疑的事情:僅僅因為開源代碼只是用來檢查用的,但并不意味著它已經完全被檢查過了,而外是安全的。
這一點是至關重要的,原因在于開源軟件的安全性完全依賴大量擁有專業技能的程序員檢測代碼,并迅速將含有Bug的代碼移除或修復。這一點在Linus's Law(林納斯定律)也提到了:“只要有足夠多的眼睛,就可讓所有問題浮現。”
但是我們來看看使用OpenSSL之后發生了什么事。Robin Seggelemann是德國Munster大學的一位程序員,通過添加一個新的Heartbeat保活功能來更新OpenSLL代碼,但不幸的是,他錯過了一個必要的代碼驗證來檢查一個特定的變量是有現實價值的。OpenSSL開發團隊的成員在發布更新版本之前也沒有進行檢查,這些疏忽都是導致Heartbleed Bug出現的最主要誘因。
如果他們覺得代碼里沒什么Bug的話,別說是一個審查員,即使是一大堆審查員也找不出這個微不足道的小錯誤。這個Heartbleed Bug一直存在了兩年,在OpenSLL里面,在瀏覽器里面,在Web服務器里面,最終還是沒有一個開源社區發現它。難道可以將此歸咎于沒有足夠多的審查眼睛嗎?
商業渠道缺乏對開源代碼的審核
同樣令人擔憂的是,OpenSSL 此前一直被當做一個重要組件使用在硬件產品中,這些硬件產品由像 F5 Networks、Citrix Systems、Riverbed Technology 和 Barracuda Networks之類的商業公司提供,這些公司在使用它們之前都沒有進行足夠的審核。安全云網關廠商Forum Systems的CEO Mamoon Yunus透露了上述內容。
他說:如果把OpenSSL商業化,作為供應商是有責任提供更多的眼球進行審核,因為,一旦你打算建立一個基于開源組件的公司,對代碼的所有權是必不可少的。
然而,Yunus 認為供應商只關心OpenSSL作為他們硬件產品上的一個有用的螺栓而已,而且,就因為它是開源的,所以他們假定已經有別的開發者對OpenSSL的代碼進行過檢測了,而自己卻沒有對它審核的責任。他說:“這就是從開源角度思考問題所產生的疏忽大意結果。”Yunus建議,商業廠商應該盡可能的花人力物力在開源代碼上施行同行評審制度,并且使用靜態和動態分析工具來確保代碼是無Bug的。
OpenSSL、Truecrypt暴露出開源代碼審核的短板
許多開源項目現在都面臨一個問題,那就是很難明確的歸責于Seggelemann 或者是其它的 OpenSSL 團隊,實施一個嚴格標準的代碼安全審核是一件及其耗時且需要很高的技術能力的事情。換句話說就是代價很昂貴。
這里來介紹一下另一個開源項目:TrueCrypt加密程序。此項目十年前就已經開始了,現在它的帶安全開放,有興趣的人都可以觀看。但是最近,隨著Indiegogo and Fundfill網站上募款活動的進行,最終籌集了6萬美金的資金,幫助TrueCrypt的代碼度過了一個適當的安全審計。
代碼審計員說:總的來看,引導程序的源代碼和Windows 內核驅動源代碼并不滿足源代碼的預期標準。
令人擔憂的是,只有在被曝光之后,他們才招聘大量人力資源進行代碼審查。開源社區在過去的十年里有足夠的機會做這些事,但事實是,社區根本沒有時間、技能或資源(包括資金)正確地完成這項工作。
將安全性隱藏起來從來就不是一個好主意,但一旦漏洞被公開出來的話,他們就需要立刻將其修復。尚不清楚OpenSSL團隊是否能夠做到這一點,關鍵是這個項目只有一個全職的維護者,或者說,不管是使用OpenSSL的軟件還是硬件產品,包括OpenSSL軟件本身都需要及時的更新維護。
后Heardbleed時代更應該加強安全意識
現在有一個好消息,對于那些關心像OpenSSL這樣的開源項目的安全的人來說,這是一個好消息:Core Infrastructure Initiative (CII)將會以自己的方式幫助這些開源項目,CII是一個由Linux Foundation建立的新項目,以應對Heartbleed事件。其目的是傳送資金給像OpenSSL等需要錢的軟件項目,因為這些項目對互聯網的功能至關重要。
“我們全球的經濟是建立在許多開源項目上的。”Linux基金會的執行董事Jim Zemlin說。“我們現在可以支持更多的開發者和維護者從事全職維護工作,通過他們對重要的開源項目施行全方位的支持。”
來自CII的支持可能還包括資金安全審計、計算和測試基礎設施等方面的支持。到目前為止,約400萬美元的籌款已完全可以支撐CII在未來三年對開源項目的維護,捐款的公司包括Google、Microsoft和Facebook.