在2017年,网络攻击者在一个金融软件包中植入了NotPetya恶意蠕虫。当很多企业更新他们的软件时,就会被感染。NotPetya蠕虫病毒因此迅速传播,并为全球各地的企业带来数十亿美元的损失。美国政府称其为“史上最具破坏性和代价最高的网络攻击”。
在三年后,网络攻击者侵入了SolarWinds公司的Orion网络监控工具集的软件升级过程。其带来的破坏性也是十分广泛的。
全球网络安全咨询机构NCC集团的高级安全顾问Viktor Gazdag表示:“访问软件开发管道,可能使网络攻击者有机会接触网络基础设施并获得知识产权。”
对DevOps管道的网络攻击正在增加
可以说,网络攻击通常是孤立的,并且依赖于高度积极和熟练的攻击者。事实上,DevOps管道成为犯罪团伙的主要目标。
根据安全服务商Argon公司在上个月发布的一份研究报告,与2020年相比,网络攻击者在2021年对软件供应链的攻击数量增长了300%以上。常见的策略包括在流行的开源软件包中植入恶意代码或利用已经存在的漏洞,损害持续集成(CI)/持续交付(CD)管道工具,并利用硬编码凭据和其他错误配置和安全问题。开源组件通道是一个受网络攻击者欢迎的目标。
根据Sonatype公司在去年9月发布的一项研究报告,与2020年相比,去年对开源软件供应链的攻击增加了650%。其攻击面很大。根据Sonatype公司的数据,超过3700万个组件和软件包位于前四大开源生态系统中。去年开源软件下载量达到2.2万亿次,与2020年相比增长了73%。
为什么DevOps管道易受攻击
Gazdag表示,软件开发人员通常具有较高的权限级别和访问权限。如果正在生产的软件是为外部使用而设计的,那么影响可能会大得多。他说,“网络攻击者也有机会在最终应用中站稳脚跟。”
因此,DevOps管道应该具有更高级别的安全性。但与其相反,他们有很多薄弱的安全实践和暴露的基础设施和凭据。GazDag说,“如果使用Shodan并搜索开发工具‘Jenkins',就会在互联网上看到很多可用和可访问的Jenkins基础设施。”
Gazdag说,持续集成(CI)/持续交付(CD)基础设施通常没有得到与企业其他领域同等程度的关注。随着现代发展实践,情况变得越来越糟。
Gartner公司分析师Dale Gardner说:“随着企业转向DevOps,我们在开发方面采取的一些控制措施有放松的趋势。我们希望变得灵活,而DevOps的方法是,我们正试图快速发布代码。限制和控制阻碍了这一点。”
对DevOps管道的攻击类型
Linux基金会开源供应链安全主管David Wheeler表示,三种最常见的攻击类型是依赖混淆、误植域名和恶意代码注入。
依赖混淆也称为名称空间混淆,是指网络攻击者找出专有企业软件包的名称,并创建具有相同名称和较晚发布日期的开源软件包。某些管道工具会自动尝试下载最新版本的软件包,并最终获得了带有病毒的软件包。
误植域名是指网络攻击者创建一个名称几乎与真实软件包相同的开源软件包,希望被攻击者输入错误并使用错误的库。
恶意代码注入是网络攻击者将恶意代码添加到合法开源项目的地方。他们可以通过窃取项目维护者的凭据,并以他们的名义上传代码、自愿参与项目,或篡改开源开发工具来做到这一点。
开源软件中的漏洞
开源软件面临很多漏洞的问题,而网络攻击者可以利用这些漏洞。应用安全测试商Synopsys公司在去年4月审查了1500多个企业软件项目的代码,其中包括内部和商业项目,发现98%的开源软件包含一些开源代码。对于一般的应用程序,75%的代码库是开源的。
更可怕的是,在Synopsys公司的分析中,84%的代码库至少有一个漏洞。那是在Log4J漏洞曝光之前,安全研究人员称之为多年来最危险的Java攻击。此外,91%的开源软件在过去两年中没有进行过任何维护。
根据Flashpoint公司基于风险的安全在今年2月发布的一份调查报告,2021年有28000多个新漏洞被披露,创历史新高。其中4000多个漏洞可以远程利用,其中包括公开利用和记录的解决方案信息。
分析报告称,Log4j漏洞特别危险,其影响超过了所有其他漏洞。该库出现在6200多种其他软件产品中,并且供应商咨询的数量继续攀升。
如何保护软件开发管道
企业应该做些什么来保护他们的软件开发管道?它从对开发人员的教育和培训开始,制定最佳安全实践,如双因素身份验证和代码审查,并安装监控工具来标记可疑活动。
它从开发人员开始
托管服务提供商Ensono公司网络安全高级总监David Gochenaur表示,在代码开发和部署过程的安全性方面,内部开发人员和第三方软件商店都需要进行监督,需要以不同的方式接触这些开发人员。
Ensono公司并不对外销售软件,但它需要定制软件来维护和管理客户的门户网站。这些门户网站的安全性至关重要。Gochenaur说,“我们为许多客户管理系统,并收集有关这些系统状态的数据,并将其放入门户。”
这意味着Ensono公司的工具可以访问这些客户系统,这使得Ensono公司成为网络攻击者的高价值目标。
Gochenaur说,“因为客户太多了,要确保客户A不能进入客户B的数据。从国家安全角度和隐私角度来看,我们的一些客户非常敏感。”
因此,在审查供应商时,第一个挑战是非常严格。他说,“你必须非常了解他们,SolarWinds数据泄露事件就是一个很好的例子,还有许多其他第三方的例子,它们没有很好地保护自己,并被用作威胁行为者的切入点。”
Gochenaur说,“这其中包括外部软件开发公司。当我们使用第三方服务时,我们会非常严格地审查他们,以确保他们有适当的流程和控制措施,并确保从他们那里得到的任何东西都是安全的,这包括审查他们的测试程序和他们在开发环境中实施的安全控制。我们还在合同中加入了缺陷处罚。”
然后,对于该公司自己的开发人员来说,最大的问题是不能使用可公开访问的代码库,Gochenaur说,“因为任何东西都可能存在,可能有一些代码看起来非常棒,但它允许网络威胁参与者访问我们正在做的任何事情。”
Gochenaur表示,开发人员可能会采取许多其他措施来帮助他们生成更安全的代码。一种有助于提供安全培训和激励的策略是由第三方和内部团队进行渗透测试。他说,“这将对所开发产品的质量产生巨大影响。”
事实上,当Gochenaur对公司软件进行渗透测试时,开发人员总是要求参加测试并观看白帽黑客的工作。他说,“他们想了解自己在做什么,并从渗透测试人员发现的漏洞中学习。它给了开发人员一种不同的思考方式。现在,当我引入第三方服务时,我的一个要求是技术团队可以了解发生了什么,并向第三方学习。”
使用适当的工具和控件
为了帮助该公司的开发人员做出正确的决策,并确保他们的安全,Ensono公司实施了多项安全控制措施。例如,多因素身份验证有助于防止外部人员访问DevOps管道。该公司使用私有代码库,以便开发人员可以从已经审核和批准的代码中进行选择。
Ensono公司还拥有专门负责修补系统的团队,以确保部署的所有内容都是最新的。Gochenaur说,“我们定期扫描整个环境以寻找漏洞。”
凯捷公司的DevOps架构师Venky Chennapragada表示,企业可以做其他事情来帮助锁定他们经常错过的开发管道。例如,企业应该为非生产暂存环境和生产设置单独的管道,并限制访问这两个系统的人员。为了进一步锁定访问权限,企业应该使用企业级访问管理系统,例如Active Directory或LDAP。
许多企业为软件开发团队提供单独的用户数据库或使用内置的用户管理工具,而拥有一个单独的系统更容易。
Chennapragada说,“如果我要与Active Directory或LDAP集成,就会进行安全审计。一些工程师可能想绕过安全审计,因为他们没有正确安装东西。”
基于角色的访问是可能会让开发人员感到讨厌的另一种控制方法。Chennapragada说, “授予完全访问权限总是很容易,而不必创建用户组和角色,但这是一种不好的做法。”
最后,Chennapragada建议企业仔细跟踪进入其软件的所有组件,尤其是开源库。他说,“开发人员倾向于在他们的软件中包含开源代码,它可能存在错误和安全漏洞。”
外部库需要经过安全扫描和代码审查,开发人员应仅限于使用经过认证的依赖项。而其他有吸引力的工具包括操作系统变体和插件。例如,Linux有数百万种不同的风格。Chennapragada说,“确保他们使用的任何版本都经过强化,并且是最新的。流行的开发工具Jenkins是一个开源自动化服务器,带有各种插件。插件的安全可能非常脆弱。网络攻击者可以将恶意代码放入插件中,从而接管受害者的系统。”
网络安全供应商ImmuniWeb公司首席执行官Ilia Kolochenko说,有许多可用的安全控制和流程,它们成本不高,也不会产生太多开销,但确实需要一些深思熟虑的计划或培训。例如,AWS公司提供了成本不高甚至免费的内置安全控制和工具,他说。“人们不会选择它们,因为他们不知道这些工具,或者认为不需要它们,或者很难挖掘和利用它们。”
他说,“云计算使部署持续安全监控和事件响应等工具变得更加容易。可以检测到可疑活动并立即停止它,用干净的文件替换,并在不离线的情况下继续操作。云计算提供了许多很好的机会来自动化其持续安全监控和事件响应,但有些人没有使用它。"
提供软件材料清单(SBOM),但也扫描漏洞
许多业内人士一直在推动软件材料清单(SBOM)。去年5月,美国总统拜登发布了一项行政命令,要求向美国的政府部门提供软件材料清单(SBOM)。在两天后,云原生计算基金会发布了一份最佳实践白皮书,建议所有供应商在可能的情况下提供软件材料清单(SBOM),并提供明确和直接的依赖关系链接。
软件材料清单(SBOM)将帮助企业在其环境中找到易受网络攻击组件的实例。例如,Log4j在去年12月进行了修补,但截至2月11日,40%的下载仍然是易受网络攻击的版本。
技术咨询机构Ascent Solutions公司的IEEE高级成员、网络安全策略师Kayne McGladrey说:“如果你买一块面包,其包装上就会写上成分清单。而采用软件也需要企业了解软件材料清单(SBOM),并做出明智的风险决策。”
McGladrey期望有远见的软件供应商开始将这些列表包含在他们的软件中,因为这是他们的客户希望看到的东西。他建议软件供应商提供有关他们的软件应该如何运行以及不应该如何运行的信息。他说,“如果软件供应商提供了他们软件的正常行为列表,我们可以说,‘这个软件的行为异常,因为它连接到不应该连接的服务器。’”
无论软件材料清单(SBOM)是否成为强制性的,企业都应该扫描他们的软件以查找已知漏洞和其他潜在的安全问题。网络安全供应商NTT Application Security公司的研究员Ray Kelly说,现在所有主要的扫描软件都在寻找易受攻击的Log4j数据包。
很明显,很多企业并没有使用这些工具。Kelly说,“尽管补丁已经发布了两个月,但还有些公司仍在使用旧版本的Log4j,这说明他们在保护代码安全方面远远落后。”