遍地开花的开源软件带来了重大的安全风险,原因是开源软件为使用它的那些人有意或无意引入了漏洞。
开源软件无处不在。由于使用开源软件的组织不必为通用的软件组件重新发明轮子,它已成为技术创新的主要驱动力。
然而,无所不在的开源软件也带来了重大的安全风险,因为它为使用开源软件产品的消费者有意或无意引入了漏洞。最近众多组织纷纷应对广泛使用的Log4j代码库中的严重漏洞就是最明显的例子,表明必须解决开源软件环境中的风险。
开源对网络犯罪分子的吸引力
开源攻击方法之所以对不法分子颇有吸引力,是由于它广泛且高效。攻击者可以使用各种方法来混淆对开源项目做出的恶意更改,而审核代码以查找安全隐患的严格程度又因项目而异。如果没有实施严格的控制措施来检测这些恶意更改,它们可能无人注意,直到它们被分发、添加到众多公司的软件中。
针对开源代码的攻击可能在规模及影响的实体方面不一样。比如在2021年7月,研究人员发现了九个漏洞,影响三个开源项目:EspoCRM、Pimcore和Akaunting,这些项目经常被中小企业使用。此外,2017年Equifax数据泄露事件清楚地表明了漏洞如何被不法分子利用,并在整个过程中造成破坏性影响。由于这家组织的开源代码曝出漏洞,泄露事件影响了1.47亿人的个人数据。
永远不会放弃开源
CISA表示,数亿台设备可能受到Log4j漏洞的影响。鉴于这起事件的严重性,许多企业可能在分析是否将开源代码用于未来的开发。
然而,完全放弃开源不切实际。所有现代软件都是由开源组件构建的,即便开发很小的应用程序,在不用开源的情况下重新构建这些组件都需要投入大量的时间和资金。全球60%以上的网站在Apache和Nginx服务器上运行,据称90%的IT领导者经常使用企业开源代码。
测试和保护您的软件
一种更实际的方法是,让安全团队和软件团队协同工作,开发用于测试应用程序和软件组件的策略和流程,而不是对开源软件避而远之。组织应重视涉及这三部分的流程:需要扫描和测试代码,建立明确的流程以解决和修复出现的漏洞,并制定内部策略(设置解决安全问题的规则)。
说到使用工具测试开源环境的弹性,静态代码分析是很好的第一步。不过组织须记住:这只是第一道测试。静态分析是指在实际程序或应用软件上线之前分析源代码,并解决任何发现的漏洞。然而,静态分析无法检测出可能嵌入到开源代码中的所有恶意威胁。下一步应该是在沙盒环境中进行额外的测试。严格的代码审核、动态代码分析和单元测试是可以利用的其他方法。动态分析是指在软件程序正在运行时对其进行检查,以识别漏洞。
扫描完成后,组织要有明确的流程来解决发现的任何漏洞。开发人员可能会发现发布截止日期迫在眉睫,或者软件补丁可能需要重构整个程序,而时间紧张。这个流程应给出明确的后续步骤以解决漏洞和缓解问题,从而帮助开发人员做出艰难的选择,以保护组织的安全。
政策变更步骤应制定一项书面计划,列出如何在将来制定所有决策,以及在整个过程中应让哪些利益相关者参与进来。此外,组织可以对开源组件实施多种控制,比如证书和认证计划。不过请记住,这会增加额外的间接成本,并减慢开源项目的开发速度。
保护开源远离未来攻击
整个行业在关注进一步保护开源代码的必要性。Linux基金会在2021年10月宣布,它与其他行业领导者一起筹资1000万美元,用于识别和修复开源软件中的网络安全漏洞,并开发改进的工具、培训、研究和漏洞披露实践。
除了全行业努力保护基于开源代码构建的软件免受网络威胁外,组织还必须在内部对防御策略采取积极主动的方法。这应包括为它们自己的代码和所依赖的开源代码实施测试和控制程序。组织还必须制定内部政策和指南,以识别使用开源软件带来的风险,并确定用于管理该风险的控制措施。这么做将使组织得以继续利用开源代码的优点,同时打造一种能抵御未来攻击的环境。
原文标题:Open Source Code: The Next Major Wave of Cyberattacks,作者:James Carder