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