最近的一些研究发现,90%或更多的应用程序包含开源组件,这是有充分理由的。开源代码可以免费下载,不仅能使开发人员更有效率,还能加速其创新速度。
但是使用开源的缺点是,它通常伴随着与确保你所依赖的软件包安全性相关的隐藏成本。最近,影响Log4j和XZ Utils的恶意攻击促使人们重新审视开源软件安全性,并将其提升至许多组织的执行级别优先级。在这种背景下,许多应用程序开发团队开始寻找新的方法,以避免不良的开源软件包进入他们的应用程序。
开源包变“坏”的原因
我喜欢用“坏包/不良包”(bad package)这个短语来指代不利于企业使用的开源包。如果一个包被抛弃、弃用或被宣布生命终止,那它可能被认为是“坏的”。或者它可能没有发布安全策略或响应安全问题,造成这种情况的原因通常是因为只有一个维护者。组织经常惊讶地发现其应用程序中的软件包是恶意软件,然后便将其从软件包管理器中删除了,但却从未在“内部”清理过。
“坏包”不仅会产生影响组织收入、数据和客户的安全风险,而且还会在你需要替换它们、围绕它们工作或处理漏洞修复的无尽循环时占用宝贵的开发时间。
从历史上看,许多组织都依赖于软件成分分析(SCA)工具来识别和修复他们在应用程序中使用的开源代码包中的漏洞。这是确保降低现有漏洞风险的有效方法。但这也是一场没完没了的“打地鼠”游戏,涉及到对一长串难以确定优先级的安全漏洞进行分类,并将误报与真正的安全风险区分开来。仅使用SCA的方法不仅会错过早期的风险信号,而且还会错过软件包过期(即被宣布生命周期终止)的时间,这可能导致错误的安全感,而实际上存在更大的漏洞风险,或者更糟的是,存在攻击的风险。
因此,与其仅仅依赖漏洞修复,许多组织正在积极地投资于更好地理解他们使用的开源代码包的安全实践,这样他们就可以在问题出现之前更系统地减少对不良包的依赖。以下是组织可用于识别和消除来自不良开源软件包风险的四种关键方法。
1.在将包纳入应用程序开发之前进行评估
避免不良软件包带来风险的优选方法是首先确保它们不会进入你的应用程序。在研究和评估要使用的开源包时,要制定一套明确的检查流程,它们需要通过检查才能被考虑使用。
检查涉及的常见问题包括:
2.积极监控正在使用的开源包
开源包是不断变化的,因此在最初决定使用某个包或版本之后,监视和审查更新是很重要的。寻找可能表明某个包或版本存在问题的早期警告信号。具体而言,组织需要寻找的信号包括:
3.识别并消除你已采用的不良软件包
虽然从一开始就避免不良软件包是理想的选项,但大多数组织在其应用程序中已经有大量的包,这些包没有得到适当的研究,以确保其安全性。
因此,回头看看你已经在使用的软件包来回答以下问题通常是很重要的:
4.加固有风险的软件包防止其变坏
识别有风险的包非常重要,这样你就可以在漏洞出现之前及时处理相关问题。但是,另一种确保对应用程序很重要的包远离危险的方法是,尽自己的一份力量使它们保持良好的维护和健康。
从研究开始,了解你所使用的包的维护者是否得到了可靠的报酬,以实现安全的开发实践并维护这些实践和代码本身。在将包引入你的组织之前,主动了解包的当前和长期前景。在你的依赖关系图上投资并贡献代码,这样你就可以尽自己的一份力量来维护它的长期健康和安全。
结语
当你从应用程序中消除不良开源包时,就能通过消除潜在的攻击入口点来降低安全风险。通过减少由不安全或维护不足的包引发的安全隐患,可以提高团队的生产力。通过确保使用健康且有弹性的开源代码包进行构建,可以提高应用程序的质量。
原文标题: 4 Ways to Reduce Reliance on Bad Open Source Packages ,作者:Lauren Hanford