開源的代碼就真的絕對安全?
Jeep 黑客和大眾汽車排放醜聞這樣的汽車軟體問題成為了今年的頭條,表明公眾開始重視從未考慮過的汽車軟體安全問題。一些專家認為強制要求某些軟體開源是解決問題的一個好辦法。儘管如此能讓軟體被公眾監督,但部分獨立代碼的可見性卻得不到保障。就像 Sam Liles 最近發給我的郵件所說的一樣,開源並不能夠阻止 ShellShock 。
Liles 博士曾是普渡大學網路取證專業的教授。在那時,他和他的學生研究汽車以及其他物聯網設備的網路安全問題。他說,多層防禦已經接近死亡,換言之我們不能再依賴於多層次的安全保護了。我們的手機和其他個人設備可能泄露我們正在做的事情,例如:我們去了哪兒,我們正在和誰交流,或其他更加隱私的活動等。這些設備和它們所包含的信息,存在於我們的私人和工作網路中。顯然一個被入侵的手機可能被利用,入侵者可以訪問其發現的所有信息,甚至把病毒傳播給與它相連接的所有電子設備。
單就這些設備的數量本身就是一個巨大挑戰。Liles 提出一些問題:「誰來做這個級別的事件響應?」更重要的是,誰來審核所有的代碼? Eric S. Raymond 在《大教堂與集市》中寫道,「只要有足夠多的眼睛,所有的問題都將不是問題,」 此稱之為林納斯定律。但我們不能僅僅只依賴於足夠多的眼睛來發現問題。假如像 OpenSSL 這樣重大的項目缺少預防像 Heartbleed 這類漏洞的人力資源的話,那麼誰來檢查這些我們每天都用到的數以百萬行代碼的軟體呢?
雖然 2011 年美國航空航天局和國家公路交通安全管理局做的關於大量豐田汽車意外加速事件的調查表明:「沒有證據證明電子故障是導致大量意外加速的原因」,並且其他研究人員已經確定汽車是通過軟體來加速的。IOActive 報告中寫道:「如果電源管理 ECU 已經破壞,我們將能夠很容易的改變速度,這個時候開車是非常不安全的」。顯然,軟體已經是現代汽車安全的重要組成部分之一。
然而,與 Liles 團隊做類似研究的仍然很少。只分析軟體是非常困難的。Liles 認為:「計算機取證幾乎很少被內置到系統中,但是為了法律的有效性,往往需要藉助逆向工程。」此外,物聯網設備所帶來的威脅需要從研究方式上進行根本解決。解決掉一些舊的信息保障,安全體系學說,基於神學、半真理性的,過時的技術理論等。
那麼,到底要不要將開源思想融入進去呢?不管代碼是否開源,一些意外的錯誤仍然存在。Heartbleed , ShellShock 等漏洞的存在確實證實了許多開源軟體同樣存在一定的漏洞。有些人為的錯誤在開源代碼中有著更加巨大的風險。開源在某種程度只是給我們提供了一種監管方式,我們可以方便的查看檢驗源代碼實際的運作情況。當汽車成為開放的系統並與我們的電話,互聯網相連之後,這其中的安全問題也變得愈加突出。
原文鏈接:http://opensource.com/life/15/10/open-source-code-is-not-warranty
譯文鏈接:http://www.linuxstory.org/open-source-code-is-not-a-warranty