對(duì)于開源安全所面臨的挑戰(zhàn),如果說有一個(gè)代表人物的話,那應(yīng)該是Werner Koch,這位德國(guó)開發(fā)人員編寫了并在過去18年辛苦維持著Gnu Privacy Guard(GnuPG)——開源軟件生態(tài)系統(tǒng)的支柱。
在1999年首次推出后,GnuPG成為世界上使用最廣泛的開源安全工具之一,它保護(hù)著每個(gè)人的電子郵件通信。
然而,在最近幾年,Koch艱難地維持著生計(jì)。自2001年以來(lái),他平均每年會(huì)收到估計(jì)約25000美元,但這些錢不足以支持他的工作。
根據(jù)Pro Publica報(bào)告表示,這位53歲的開發(fā)人員差點(diǎn)就要放棄GnuPG,而后斯諾登泄露NSA文件震驚整個(gè)世界時(shí),讓Koch決定繼續(xù)干下去,他表示:“我太理想主義了。”
這個(gè)故事有一個(gè)皆大歡喜的結(jié)局。在ProPublica報(bào)道發(fā)表后,全世界的捐助者都跑來(lái)支援Koch。他很快實(shí)現(xiàn)了原先設(shè)定的137000美元籌款目標(biāo),讓他可以繼續(xù)他的工作,還聘請(qǐng)了一位兼職開發(fā)人員。Koch還獲得Linux基金會(huì)的核心基礎(chǔ)設(shè)施倡議的6萬(wàn)美元一次性補(bǔ)助金,F(xiàn)acebook和在線支付處理商Stripe承諾每年提供5萬(wàn)美元支持Koch的項(xiàng)目。
GnuPG等資金不足的項(xiàng)目形成了規(guī)模空前的龐大開源生態(tài)系統(tǒng)。現(xiàn)在不斷涌現(xiàn)的技術(shù)開發(fā)中廣泛重復(fù)使用開源代碼,而代碼的巨大數(shù)量阻礙了安全檢查。直到最近,我們才開始面對(duì)這個(gè)問題,通常在發(fā)生安全泄露事故后,行業(yè)才會(huì)開始采取行動(dòng)。
代碼能當(dāng)飯吃嗎?
Koch這樣的情況并不少見。
在谷歌研究人員Neel Mehta發(fā)現(xiàn)Heartbleed(OpenSSL組件中嚴(yán)重的可遠(yuǎn)程利用的漏洞)后,讓軟件社區(qū)感到非常震驚的是,OpenSSL項(xiàng)目主要由Stephen Henson和Steve Marquess兼職在保持改代碼的更新,該項(xiàng)目每年只有幾千美元的自愿捐款補(bǔ)償。
很多依靠開源技術(shù)的技術(shù)供應(yīng)商很快就開始支援OpenSSL項(xiàng)目。核心基礎(chǔ)設(shè)施倡議幫助為Henson等OpenSSL項(xiàng)目工作者提供資金。亞馬遜、Adobe、思科、Facebook和谷歌也提供了資金支持。
眾目睽睽,漏洞無(wú)匿?
Heartbleed并不是第一個(gè)殺手級(jí)開源代碼漏洞。例如,Apache Struts漏洞比它早了近一年,也同樣嚴(yán)重。
在媒體的狂熱炒作下,Heartbleed可能已經(jīng)開始讓人們質(zhì)疑Eric Raymond關(guān)于開源質(zhì)量的著名格言:“眾目睽睽,漏洞無(wú)匿。”大多數(shù)安全專家表示,這個(gè)概念比實(shí)際更理想化。
“我從來(lái)都不喜歡‘眾目睽睽’的概念,”Sonatype公司首席技術(shù)官Joshua Corman表示,“‘眾目睽睽’并不意味著這些眼睛在試圖或者有資格去尋找安全漏洞。”
Black Duck Software公司開源戰(zhàn)略高級(jí)主管Bill Weinberg表示,開源的“眾目睽睽漏洞無(wú)匿”只是為了粉飾開源生態(tài)系統(tǒng)的缺陷,這意味著在那里并不存在時(shí)刻的警惕。
“對(duì)于Shellshock,并沒有太多眼睛關(guān)注,”Weinberg在提到2014年Bash代碼中發(fā)現(xiàn)的嚴(yán)重漏洞時(shí)表示,“該漏洞被認(rèn)為經(jīng)過很好的審核,但事實(shí)證明,它并沒有那么安全,因?yàn)槊總€(gè)人都認(rèn)為它經(jīng)過嚴(yán)格審核。”
雖然我們可能喜歡假定開源代碼具有很高的完整性,但Sonatype的數(shù)據(jù)顯示了相反的結(jié)果。該公司對(duì)其托管代碼庫(kù)中開源組件的分析發(fā)現(xiàn),開源組件中已知漏洞只有41%得到修復(fù),而得到修復(fù)的問題,平均修復(fù)時(shí)間高達(dá)390天。
雖然在開源和專有軟件項(xiàng)目之間曾經(jīng)有一條分界線,但大多數(shù)現(xiàn)代應(yīng)用程序都是第三方軟件組件的組合,其中不乏很多開源軟件。
認(rèn)真對(duì)待代碼級(jí)別的安全性
正確的響應(yīng)是怎樣?無(wú)論好壞,答案在很大程度上是文化,前微軟高級(jí)戰(zhàn)略家,現(xiàn)HackerOne公司首席策略官Katie Moussouris表示,“我們需要構(gòu)建安全思維模式,這對(duì)每個(gè)軟件項(xiàng)目(開源與否)都很重要。”
Moussouris的公司提供了一個(gè)基于Web的平臺(tái)來(lái)協(xié)助漏洞披露,包括漏洞賞金計(jì)劃。她指出,HackerOne已經(jīng)針對(duì)很多開源項(xiàng)目提供漏洞賞金,包括PHP、Ruby on Rails、Python和OpenSSL,為漏洞披露提供獎(jiǎng)金。
開源項(xiàng)目需要對(duì)安全采取更加認(rèn)真和系統(tǒng)的方法,她說道:“你至少需要嘗試構(gòu)建安全。”
Sonatype公司的Corman主張采取更嚴(yán)格的解決方案:類似于生產(chǎn)廠家使用的供應(yīng)鏈,同時(shí)提供高品質(zhì)和問責(zé)制。
就拿福特生產(chǎn)線來(lái)說,該公司知道所有進(jìn)入其成品汽車的部件的出處。問題可以追溯到特定供應(yīng)商、設(shè)施,甚至生產(chǎn)環(huán)節(jié)。
然而,在現(xiàn)代軟件開發(fā)企業(yè),并沒有這樣的系統(tǒng)。幾乎所有商業(yè)軟件應(yīng)用程序都在使用開源組件以及第三方公司出售的專有軟件,但軟件公司可能對(duì)代碼的質(zhì)量和出處只有粗略的概念。通常情況下,漏洞的范圍和影響在災(zāi)難發(fā)生后才會(huì)知道。
例如,在Shellshock的情況下,有問題的代碼可以追溯到1989年,并影響著廣泛的應(yīng)用程序,從基于CGI的網(wǎng)絡(luò)服務(wù)器到Qmail電子郵件服務(wù)器,再到某些DHCP客戶端。在該漏洞披露數(shù)小時(shí)后就出現(xiàn)針對(duì)該漏洞的攻擊。
追隨領(lǐng)導(dǎo)者
Canonical、Red Hat和谷歌等商業(yè)Linuc供應(yīng)商已經(jīng)投入巨資來(lái)確保開源的安全性和完整性。而Netflix和Facebook等開源友好型公司已經(jīng)投入相當(dāng)多的資源來(lái)幫助提高開源質(zhì)量。
工程部經(jīng)理Jason Duell表示,在Mozilla(+微信關(guān)注網(wǎng)絡(luò)世界),安全責(zé)任被分給三個(gè)團(tuán)隊(duì),一個(gè)團(tuán)隊(duì)負(fù)責(zé)對(duì)發(fā)現(xiàn)的安全問題進(jìn)行分類,第二個(gè)團(tuán)隊(duì)對(duì)編譯的代碼進(jìn)行黑盒測(cè)試以查找漏洞,而第三個(gè)團(tuán)隊(duì)則開發(fā)安全和隱私功能。
Duell表示,在六年前他加入這間公司之前,對(duì)已開發(fā)的代碼進(jìn)行嚴(yán)格的測(cè)試就已經(jīng)是Mozilla的開發(fā)文化,但Mozilla已經(jīng)更改了其他開發(fā)做法來(lái)應(yīng)對(duì)不斷增加的開源威脅。
Duell稱:“我們意識(shí)到攻擊者正在查看我們公眾提交源代碼庫(kù),于是我們改變了各種做法。”其中之一是,對(duì)Mozilla代碼的安全補(bǔ)丁在發(fā)布前會(huì)進(jìn)行審核,大量新功能讓安全團(tuán)隊(duì)在發(fā)布代碼前進(jìn)行審計(jì)。
云計(jì)算解決方案產(chǎn)品經(jīng)理Dustin Kirkland表示,在Canonical,一支快速增長(zhǎng)的安全團(tuán)隊(duì)在審核Canonical的代碼—總統(tǒng)35000軟件包,通過各種渠道發(fā)布作為Ubuntu的一部分。
與Mozilla一樣,Canonical的安全運(yùn)營(yíng)跨越多個(gè)不同的舉措,從功能開發(fā)到代碼審計(jì)。對(duì)于Corman的觀點(diǎn),Kirkland表示,供應(yīng)鏈風(fēng)險(xiǎn)是一個(gè)主要問題。Canonical投入大量資源來(lái)評(píng)估開源組件的可靠性,這些開源組件被捆綁到其核心操作系統(tǒng)。
Kirkland表示:“對(duì)于開源技術(shù),我們正在考慮應(yīng)該部署它還是分拆它,然后開發(fā)和推廣它。”當(dāng)Canonical公司選擇分拆現(xiàn)有開源代碼時(shí),該公司受到了抨擊,但Kirkland指出分拆的能力是開源的優(yōu)勢(shì)之一。
“我們不打算創(chuàng)建自己版本的OpenSSL和GPG,”Kirkland表示,“但擁有加密庫(kù)的替代品是非常重要的。這里需要多樣性,尤其是在我們了解到這些組件多么容易受到攻擊后。”
現(xiàn)在都是開源化
也許開源會(huì)帶來(lái)不適,但專家稱沒有回頭路可走。Weinberg的很大一部分職業(yè)生涯都是他所謂的“信仰捍衛(wèi)者”,打擊商業(yè)供應(yīng)商(例如微軟)抹黑開源運(yùn)動(dòng)的試圖。他表示,“開源”和“閉源”之間的分隔墻很久以前就被推倒。
“現(xiàn)在沒有專有軟件這樣的東西了,因?yàn)楹苌儆熊浖灰蕾囬_源,”他稱,“整個(gè)世界已經(jīng)以這樣或那樣的形式轉(zhuǎn)向‘社區(qū)開發(fā)’的軟件。”
“我真的認(rèn)為這是一種共同的責(zé)任,”Kirkland說道,“當(dāng)你考慮到我們所有人都在開源軟件的整個(gè)堆棧中,你會(huì)希望安全成為一種共同責(zé)任,而不只是Linux基金會(huì)和Red Hat的責(zé)任。”
換句話說,Heartbleed等漏洞可能讓我們咬牙切齒,但在2015年,所有制造、使用或依賴軟件的公司都實(shí)際上是開源軟件公司,無(wú)論他們知道與否。這使得他們成為問題及其解決方案的一部分。