正文
缺乏关注的主要原因之一似乎是,这些组织无视开源漏洞是什么、它们是如何被发现的以及他们应该怎样保护自己和客户。
回到最基本的问题:什么是开源漏洞
开源中的漏洞和专有产品中的漏洞类似。这些代码要么是编写出错导致黑客可以加以利用的,要么是允许黑客以开发人员不希望的方式执行有害的操作。
在某些情况下,可以利用开源漏洞发起拒绝服务攻击(denial of service,简称 DoS)并使服务下线,而其他更严重的漏洞则可能允许黑客进行远程访问,让他们拥有进入系统的“钥匙”。
然而,开源代码和专有代码之间的相似之处仅此而已。内部代码是由一组开发人员遵循其组织集中指导编写出来的,而开源代码高度分散于编写、修复和维护项目的社区成员中。
集中控制系统和分布式系统常常被称为大教堂(Cathedral)和集市(Bazaar)。开源代码没有一个独立组织的中心设计来规划其逻辑,并且缺乏标准化的系统来解决新特性的添加和修复事宜,它们遵循的是一个不同的、通常更松散的规则集,使得它们更加难以管理。
对于组织来说,涉足这个混乱的领域是很复杂的且难以掌控的,但是对于黑客们来说,开源代码缺乏集中控制则是个福音。很多时候,开发人员会从像 GitHub 等网站上的众多存储库中获取源代码,而不会去检查组件是否存在任何已知漏洞。更糟糕的是,很少有人会在其代码库或产品中跟踪开源代码的解决方案。
因此,就像我们在 Equifax 的案例中看到的那样,他们并不知道他们正在依赖易受攻击的代码,而且根本不知道这些漏洞的存在,因此也无法为其打补丁。跟很多开发代码的组织一样,Equifax 可能一直在用某个工具测试他们应用程序中的代码,但是,很明显,他们没有一个为分析开源组件而构建的工具。
开源代码的漏洞是怎么找到的?谁在寻找这些漏洞?