开源软件安全吗?
| 2023-01-08 11:32:51 评论: 2
作为一个偏爱 在桌面电脑上使用 Linux,并鼓励使用开源软件的人,你可能期待就标题中提出的问题得到一个响亮的肯定回答。
然而,我并不打算仅限于讨论开源软件的优点。让我们一起探索更多观点!
在本文,我计划分享我关于开源软件是否安全的思考,以及哪些事情与开源软件的安全性相关。
为什么你需要关注开源软件是否安全?
不论你是使用 Linux 系统还是使用其他类型的操作系统,你都会在某种程度上(直接地/间接地)被开源软件所包围。
举个例子,大多数专有软件工具依赖于某种形式的开源库来保证其正常工作。
此外,各种规模的公司(包括谷歌、微软和 Facebook)依赖开源软件或者以某种途径向开源社区贡献资源是有原因的。
因此,开源软件的安全性是有必要了解的。
有关开源软件安全性的迷思
虽然有多种理由证明开源软件在安全性方面的缺陷,然而其中一些实际毫无意义。
任何人都可以查看并恶意利用开源软件代码
是的,开源软件代码对于任何人都是可访问的。但是你可以查看代码并不意味着你可以利用它。
不现实。
即使任何人都可以复刻(或者拷贝)该软件,原始软件也不能轻易地被修改使用。
通常,项目维护人员(或者维护团队)管理代码仓库,并且接受来自贡献者的提交。开源软件代码在接受之前会被审查。没有人可以就这样劫持代码。
不论是开源软件还是闭源软件,攻击者都需要付出努力来利用软件中的代码漏洞或者添加恶意代码。
没有专职团队,安全性无从谈起
很多人相信如果开源软件没有专职人员或者专职团队,维护软件安全性是困难的。
恰恰相反,由于各种各样类型的贡献者的加入与离开,开源软件获得了来自更大范围的开发者的更多关注。
他们可能比由专有软件所聘用的少数开发者更能够发现安全问题。
一些来自 Mozilla 等同类公司的项目拥有自己的专职团队来高效处理安全问题。同样的,大部分成功的开源项目拥有大量的资源用于保障安全性。
因此,开源软件的生态系统是安全性的组合包。即使没有专职团队,开源项目也可以得到来自各类贡献者的帮助,他们中的一些很大程度上是有利可图的,这有助于他们投入更多的精力。
开源软件是安全的,以下是原因
既然我们已经澄清了这些有关开源软件安全性的迷思,让我重点展示一下开源软件是如何处理安全问题的。
换句话说,开源软件在安全性上的优势。
请不要忘记,开源软件的优势也是 Linux 比 Windows 更好 的一些原因。
更多的眼晴关注开源软件代码
不像专有软件,(对开源软件的)代码访问并不局限于少数几个开发者。
一些开源项目甚至可能拥有数以万记的开发者可以查看代码、审查它们并标记和修复其中的安全性问题。
相比闭源软件,这给予了开源项目拥有快速识别问题并尽快修复它们的能力的优势。
不仅仅限于拥有更多的开发者,企业通常也会参与他们所使用的开源项目。当他们这样做的时候,他们也会查阅代码并审查它们。
这提供了另一条外部审查的途径,而这可能有助于提升开源软件的安全性。
反之,就闭源软件而言,数量有限的开发者可能并不能找出所有种类的安全问题。而且他们可能需要花费更长的时间来一一修复发现的问题。
社区决定安全问题的优先级
闭源软件的开发者可能在处理什么问题和什么时候解决问题等方面有某些限制或者优先等级。
而如果是开源项目,贡献者社区可以自行决定优先级,并自行安排他们想解决的问题以及决定合适修复问题。你不需要依赖于供应商的决定或者按照他们的指示来解决一个安全问题。
着手处理和修复安全问题的决策在开源软件项目中更加透明和灵活。因此,它可以被证明是更有效的,并为你带来以下三个益处:
- 透明度
- 不依赖供应商
- 更快的安全更新
开源软件不是防弹的,以下是原因
虽然在某些情况下,开源软件可能在安全性上具有优势,然而仍有一些因素影响它。
承认这些问题的存在是很重要的,据此,企业或者个人可以就开源软件的安全情况做出更好的决定。
并无足够的眼睛来审查代码和不确定性
即使开源软件代码可以被全世界的开发者自由访问,项目没有足够的贡献者/开发者彻底审查开源代码的可能性仍然存在。
既如此,我们不能对开源软件的同行审查抱有极高的信心,因为它恰好缺失了这一点。
开源软件可能“声称”拥有最高的安全性因为它们是开源的。在没有足够的开发者致力于该项目时,这是一种误导。
同样,我们也无从得知有多少开发者在查看/检查代码,也不知道代码的检查进行到什么程度了。
举例而言, 心脏出血漏洞 是在一个被广泛使用的项目(OpenSSL)中引入了 2 年以后才被发现的。
软件责任与问责
对于个人用户这可能并不重要,但是开源项目通常并无任何保证。
因此,如果一家公司使用它,它们必须自行承担任何由该软件使用造成的数据丢失与损坏。
这告诉你,没有什么是 100% 安全和没有漏洞的。无论有多少眼睛聚焦在代码上或者贡献者的技术多么精湛,总会存在某种形式的风险,无论是安全风险还是数据丢失。
这告诉我们一个现实:开源软件并非防弹的。
开源软件有其更高安全性的优势,但是...
就安全性而言没有什么优胜者。不论是闭源还是开源,当涉及安全问题时都适用同一套原则。
有很多外部因素可以影响软件安全性,而其中很多因素并不依赖于源代码。
必须以某种形式监控代码,以保证安全。
是的,开源道路提供了闭源软件所不具备的优势,但是这并不意味着开源软件是防弹的。
你对开源软件安全状况有何思考?你又是否认为开源软件比专有软件解决方案更好呢?
提前感谢你在下面的评论中提出的宝贵意见。
- 来自约旦的 Firefox 108.0|Mac 10.15 用户 2023-01-09 11:39
- 除了文中提到的审核代码的人不够外,我觉得还有一个因素可能导致不够安全,甚至于是不安全。
例如某个软件的维护人员团队大部分乃至全都是受意于某个公司或某个组织而进行开发的,而该公司、组织本身是以收集隐私或监控为目标下达开发指令的。
举个极端的例子:朝鲜的Linux发行版「红星操作系统」(虽然我不确定它是不是开源的,好歹它是一个Linux的发行版)。
你敢用吗?
- 来自江苏无锡的 Mobile Safari 14.0|iOS 14.0 用户 2023-01-08 13:40
- 开源并不意味绝对安全。
很多开源软件,写的稀奇古怪,很难看懂。一万个用户里有一个能审阅代码算了不起了。更何况很多开源软件版本碎片化,有没有一万个用户都难说。
平头百姓都是直接拿过来用,深究代码的永远是极少数。
想要安全好用,负责任的开发者是关键。大量愿意提供反馈的用户是其次。与开源与否关系不大。