開源軟件安全嗎?
作為一個偏愛 ??在桌面電腦上使用 Linux??,并鼓勵使用開源軟件的人,你可能期待就標題中提出的問題得到一個響亮的肯定回答。
然而,我并不打算僅限于討論開源軟件的優點。讓我們一起探索更多觀點!
在本文,我計劃分享我關于開源軟件是否安全的思考,以及哪些事情與開源軟件的安全性相關。
為什么你需要關注開源軟件是否安全?
不論你是使用 ??Linux?? 系統還是使用其他類型的操作系統,你都會在某種程度上(直接地/間接地)被開源軟件所包圍。
舉個例子,大多數專有軟件工具依賴于某種形式的開源庫來保證其正常工作。
此外,各種規模的公司(包括谷歌、微軟和 Facebook)依賴開源軟件或者以某種途徑向開源社區貢獻資源是有原因的。
因此,開源軟件的安全性是有必要了解的。
有關開源軟件安全性的迷思
雖然有多種理由證明開源軟件在安全性方面的缺陷,然而其中一些實際毫無意義。
任何人都可以查看并惡意利用開源軟件代碼
是的,開源軟件代碼對于任何人都是可訪問的。但是你可以查看代碼并不意味著你可以利用它。
不現實。
即使任何人都可以復刻(或者拷貝)該軟件,原始軟件也不能輕易地被修改使用。
通常,項目維護人員(或者維護團隊)管理代碼倉庫,并且接受來自貢獻者的提交。開源軟件代碼在接受之前會被審查。沒有人可以就這樣劫持代碼。
不論是開源軟件還是閉源軟件,攻擊者都需要付出努力來利用軟件中的代碼漏洞或者添加惡意代碼。
沒有專職團隊,安全性無從談起
很多人相信如果開源軟件沒有專職人員或者專職團隊,維護軟件安全性是困難的。
恰恰相反,由于各種各樣類型的貢獻者的加入與離開,開源軟件獲得了來自更大范圍的開發者的更多關注。
他們可能比由專有軟件所聘用的少數開發者更能夠發現安全問題。
一些來自 Mozilla 等同類公司的項目擁有自己的專職團隊來高效處理安全問題。同樣的,大部分成功的開源項目擁有大量的資源用于保障安全性。
因此,開源軟件的生態系統是安全性的組合包。即使沒有專職團隊,開源項目也可以得到來自各類貢獻者的幫助,他們中的一些很大程度上是有利可圖的,這有助于他們投入更多的精力。
開源軟件是安全的,以下是原因
既然我們已經澄清了這些有關開源軟件安全性的迷思,讓我重點展示一下開源軟件是如何處理安全問題的。
換句話說,開源軟件在安全性上的優勢。
請不要忘記,開源軟件的優勢也是 ??Linux 比 Windows 更好?? 的一些原因。
更多的眼晴關注開源軟件代碼
不像專有軟件,(對開源軟件的)代碼訪問并不局限于少數幾個開發者。
一些開源項目甚至可能擁有數以萬記的開發者可以查看代碼、審查它們并標記和修復其中的安全性問題。
相比閉源軟件,這給予了開源項目擁有快速識別問題并盡快修復它們的能力的優勢。
不僅僅限于擁有更多的開發者,企業通常也會參與他們所使用的開源項目。當他們這樣做的時候,他們也會查閱代碼并審查它們。
這提供了另一條外部審查的途徑,而這可能有助于提升開源軟件的安全性。
反之,就閉源軟件而言,數量有限的開發者可能并不能找出所有種類的安全問題。而且他們可能需要花費更長的時間來一一修復發現的問題。
社區決定安全問題的優先級
閉源軟件的開發者可能在處理什么問題和什么時候解決問題等方面有某些限制或者優先等級。
而如果是開源項目,貢獻者社區可以自行決定優先級,并自行安排他們想解決的問題以及決定合適修復問題。你不需要依賴于供應商的決定或者按照他們的指示來解決一個安全問題。
著手處理和修復安全問題的決策在開源軟件項目中更加透明和靈活。因此,它可以被證明是更有效的,并為你帶來以下三個益處:
- 透明度
- 不依賴供應商
- 更快的安全更新
開源軟件不是防彈的,以下是原因
雖然在某些情況下,開源軟件可能在安全性上具有優勢,然而仍有一些因素影響它。
承認這些問題的存在是很重要的,據此,企業或者個人可以就開源軟件的安全情況做出更好的決定。
并無足夠的眼睛來審查代碼和不確定性
即使開源軟件代碼可以被全世界的開發者自由訪問,項目沒有足夠的貢獻者/開發者徹底審查開源代碼的可能性仍然存在。
既如此,我們不能對開源軟件的同行審查抱有極高的信心,因為它恰好缺失了這一點。
開源軟件可能“聲稱”擁有最高的安全性因為它們是開源的。在沒有足夠的開發者致力于該項目時,這是一種誤導。
同樣,我們也無從得知有多少開發者在查看/檢查代碼,也不知道代碼的檢查進行到什么程度了。
舉例而言,??心臟出血漏洞??Heartbleed
軟件責任與問責
對于個人用戶這可能并不重要,但是開源項目通常并無任何保證。
因此,如果一家公司使用它,它們必須自行承擔任何由該軟件使用造成的數據丟失與損壞。
這告訴你,沒有什么是 100% 安全和沒有漏洞的。無論有多少眼睛聚焦在代碼上或者貢獻者的技術多么精湛,總會存在某種形式的風險,無論是安全風險還是數據丟失。
這告訴我們一個現實:開源軟件并非防彈的。
開源軟件有其更高安全性的優勢,但是...
就安全性而言沒有什么優勝者。不論是閉源還是開源,當涉及安全問題時都適用同一套原則。
有很多外部因素可以影響軟件安全性,而其中很多因素并不依賴于源代碼。
必須以某種形式監控代碼,以保證安全。
是的,開源道路提供了閉源軟件所不具備的優勢,但是這并不意味著開源軟件是防彈的。
你對開源軟件安全狀況有何思考?你又是否認為開源軟件比專有軟件解決方案更好呢?