开放资源关闭:驱散幻想
已发表: 2022-03-31随着 2021 年 12 月的 Log4j 漏洞披露以及开发人员破坏其拥有的 Javascript 库的新情况——“color.js”和“faker.js”,开源计算机软件的状态已成为问题。
随着在白宫举行的关于开源的高调会议,以及美国总统拜登的政府命令,一些人甚至暗示这是“开源的结束”。 虽然将一个重大漏洞作为开放供应以某种方式仍然不足的迹象可能很诱人,但事实却很明显。
开源软件并不比商业软件包更安全。 实际上,大多数专业计算机软件可能具有或在开源系统上运行。 开放供应仅表示软件程序的制定方式与任何想要它的人都可以访问供应代码的方式完全相同。
我们所看到的来自 Apache Log4j 团队的 Log4j 响应正是我们希望看到的——这个团队正在认真对待他们开发的软件包,并且目前正在响应他们建立基金会的愿望。 看看他们是志愿者,这种回应表明了我们在开放资源社区中经常看到的所有权的乐趣。
与煽动关闭开源相比,像 Log4j 这样的事件最有可能增强整个开源的增强——这与 Heartbleed 增强两个开源增长组和关闭源增长组的进度方法的方式非常相似。 因此,如果此处继续列出开源,组织应该做些什么来转移转发以更熟练地检测和缓解漏洞?
从组织层面解决计算机软件保护问题
完美地,识别和缓解漏洞的策略要求我们预先概述一些角色。 大多数人希望他们的软件包供应商——即开发他们所依赖的计算机软件的人——检查该软件。 该测试的最终结果将是一个确定的结果,突出供应商提供的软件的弱点。 在一个伟大的整个世界中,所有这些弱点中的每一个都将在程序交付和交付之前得到解决。
在真实的星球上,即便如此,所有这些弱点中的一些会被预设,一些会被标记为“没有程序可以修复”,而一些会在长期发布时乐观地修复。 弱点列表是什么,以及最终设置了哪些弱点,这不是供应商通常会泄露的一点点。 此外,没有一种工具可以发现所有弱点,有些工具只有在你拥有资源代码的情况下才能完成这项工作,尽管其他人需要一个正在运行的软件。
你会注意到这里没有提到“脆弱性”这个词,因为它有一个具体和基本的指示。 在应用程序中,漏洞只是可以被利用或具有实际利用机会的弱点。
大多数(但不是全部)漏洞是通过被称为全国漏洞数据库或仅 NVD 的集中程序披露的。 尽管 NVD 植根于美国,并由美国当局负责管理,但 NVD 的内容可供所有人访问并在多个国际地点复制。 从治理的角度来看,检查 NVD 内容的改进是保持最佳新漏洞披露的绝佳方式。
问题在于 NVD 的更新速度比媒体报道的速度慢,因此对于 Log4Shell、HeartBleed 和 Dirty Cow 等关键漏洞,发现漏洞的工作人员可能会为漏洞命名,以扩大对困难的认识。 制定一项治理计划来筛选这些网络聚会的媒体保护绝对不是什么绝妙的做法。
如果媒体报道作为漏洞管理的入口是一个糟糕的主意,并且 NVD 有点渐进地呈现所有事实,那么最有效的治理政策是什么? 这将来自一种称为“软件组合分析”或 SCA 的安全工具。 SCA 软件似乎既位于应用程序的源代码中,也位于定义应用程序的可执行文件或库中,并试图找出已使用哪些开源库来构建该软件。
这些人员库的列表称为 SBOM,或计算机软件材料清单。 假设 SCA 应用程序有效地完成了它的工作,那么可以制定将 NVD 详细信息映射到 SBOM 的治理策略,这样您就知道要修补什么……除了仍然需要考虑潜在的 NVD 事实。

一些更出色的 SCA 工具通过生成建议来解决这一挑战,这些建议会在 NVD 条目未决但其中 NVD 条目的详细信息由 SCA 供应商增强时主动提醒客户。 一些最先进的设备还致力于筛选或验证计算机软件的哪些变体受到漏洞披露的影响。
尽管如此,尽管 SCA 软件程序可以填补披露和识别之间的漏洞,但需要注意的是,它确实有一个基本的限制。 如果 SCA 程序没有扫描您的所有程序,那么它最多只能标记您程序子集的新漏洞披露。
从治理覆盖的角度来看,它然后让 IT 运营来建立所有软件程序和采购功能,以确保所有应用程序(例如更新和免费下载)都出现在 SBOM 下方,并且 SBOM 已通过验证应用SCA 软件程序。 由于程序以源代码和二进制格式都可用,因此走这条路的治理团队选择 SCA 软件程序非常重要,该程序可以有效地执行所有种类和格式的计算机软件。 这些类型的治理计划将有助于识别新的漏洞披露和对企业的影响,但由于缓解需要软件测试,因此将产生不同的有效缓解措施转移到独特的政策中。
确保自己工程的安全性只是一方面,但开放资源的优雅之处在于它被设计为协作性的。
套用亚伯拉罕·林肯的话说,开放资源是人民、个人和个人的专有技术。 流行的开源运动的基本原则是,如果您不喜欢代码的工作方式,那么您可以自由修改它并解决最终认为存在的功能差距。
我们这些天面临的困难元素是开源项目的消费者或最终用户表现得好像开源挑战是业务应用程序销售商的情绪。
如果您出现在 GitHub 上任何相当知名的开放资源项目的挑战列表中,您将看到有关何时可以解决选定问题的功能请求和评论。 此类关于可服务性的问题故事和不满有一种隐含的期望,即产品经理正在满足这些人的要求,并且他们将被添加到路线图中并在某个时候启动——所有这些都是免费的。
事实上,功能上的差距,甚至是感知到的错误,都意味着有机会不请求免费的编程专家服务,而是作为对代码的长期成就做出贡献的替代方案,这对抱怨的人来说至关重要。
当然,有些人不知道该项目使用的编程语言,但是期望其他人优先考虑来自不知名的第 3 方的投诉,而不是为精力充沛的贡献者清除复杂性的变体,这看起来并不真实。 与任何事情一样重要的是,通过贡献者的利他主义来开放资源功能。
很长一段时间以来,我们一直在倾听知名开放资源工作的主要贡献者对大型企业使用其软件包所获得的收入的具体烦恼。 虽然很容易让人联想到有人将他们的权力投入到一项任务中,只是为了让第三次从尝试中获得收益,但现实情况是,如果第三次攻击从开放资源推进劳动力的尝试中获利,那么他们应该为其长期成功做出贡献。
如果他们不这样做,那么他们就会面临这样的危险,不仅有问题的代码可能会以他们不依赖的方法进行转换,而且当保护问题被识别和解决时,他们可能会延迟应用人工修复。 毕竟,如果小型企业没有花时间与生产为其企业提供支持的计算机软件的团队进行互动,那么他们可能不知道为其企业提供支持的所有程序的来源,并且无法可靠地修补它。
发现开放供应中的漏洞不是问题,但检测代表可能被利用的弱点的程序缺陷是一个重要的主题。 尽管开放源代码和封闭供应软件包在稳定性问题方面具有同等潜力,但通过开放资源,任何人都可以确定所有这些问题。 考虑到这一点,组织必须采取主动措施——不依赖于媒体保护——来观察最新的漏洞。
同样重要的是,他们应该为他们奖励的开源任务做出贡献,否则他们很可能会让受害者陷入意外的代码变化或延迟对重要补丁的认识。
Tim Mackey 是Synopsys的首席保护策略师。