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