最近,攻击者正在使用它CI/CD攻击开发工具中的漏洞,对开发架构的安全性有了新的要求。Codecov供应链攻击,尤其是每一个CI/CD在环境中存储机密信息的人发出警告——不管环境看起来有多安全。
成千上万的开发人员使用破解一个Bash上传组件,Codecov攻击者可以从客户环境中窃取凭证、密钥和API token,它可以在两个月内不被发现。在此基础上,它还成功攻击了数百个客户的网络。类似的情况也针对图像Jenkins、GitHub Action对云原生容器环境等自动攻击的攻击,进一步让企业探索并部署有效的防御手段。
六条保护CI/CD管道的建议
1. 不要在CI/CD机密信息存储在环境中
Codecov供应链攻击之所以取得巨大成功,是因为被攻击者试图溢出的环境变量中存在密码硬编码的机密信息,包括密码、通行证和密钥。攻击者使用其中一些凭证连接到企业的私人凭证GitHub从库中进一步窃取的数据包含应保密的数据。
尽管说包括HashCorp、Twilio、Rapid7和Monday.com等Codecov许多客户公开了供应链攻击的影响。到目前为止,受影响最大的公司是日本电子商务巨头Mercari。超过2.7泄露的记录包括客户的财务信息、商品信息、商业伙伴信息、公司员工信息、承包商信息等实体信息。
毫无疑问,这些攻击都是由Codecov由泄露引起的,但也有人质疑为什么个人识别信息,如客户财务记录,会存储在私信息中GitHub库里。
类似的问题也发生在HashiCorp将GPG私钥储存在CI/CD在环境中。该密钥用于签署和验证原因HashiCorp发布的软件。在密钥被废除之前,攻击者可以滥用密钥来伪造一个有HashiCorp签名的恶意软件发布。一个开发人员甚至表示:“为什么没人提到?Vault的供应商HashiCorp,他们的签名密钥实际上他们的签名密钥ENV天啊,这让我对自己的生活感觉好多了。”
组织需要重新思考哪些秘密信息可以存储CI/CD工具集、环境变量和私有GitHub图书馆。如果一个应用程序需要将凭证或通行证存储在这些位置,最好将凭证存储在权限要求最小的账户或资源中。这样,即使相关秘密信息在意想不到的攻击中泄露,损坏也可以得到遏制。
2. 仔细检查自动化pull请求和计划任务
像GitHub Actions这类的CI/CD自动化工具允许开发人员为自动化否决和处理收到的代码库建立计划任务pull请求。但是,如果一个贡献者恶意开源项目pull请求,怎么样?
2021年四月,GitHub Actions被攻击者滥用,发起了数百个库pull请求,试图使用GitHub挖掘基础设施。2月份的大规模攻击GitHub Actions报告后发生了漏洞。
即使是最低限度的情况,这些pull请求会滥用GitHub挖掘服务器,或执行攻击者的恶意代码。如果项目所有者不小心合并了这些pull这些恶意代码将被引入自己的库和更广泛的供应链。GitLab该报告在他们的平台上发现了类似的挖掘攻击,侵略者滥用了新账户的免费时间。
由于像GitHub Actions和GitLab这种CI/CD自动化工具的本质是简化关键任务的自动化能力,“守门”这已经成为一个巨大的挑战。最初设计的功能可能很快成为恶意人员滥用的安全风险。
GitHub最近宣布增加新功能,对抗滥用Actions挖掘平台的攻击者:“由首次贡献者发起pull请求在任何Actions在执行工作流能之前,库合作伙伴需要手动通过。当第一个贡献者打开时pull在执行工作流之前,他们会看到一条信息通知维护人员必须通过工作流。” GitHub的产品经理Chris Patterson在博客中提到。
CI/CD解决方案和DevOps领先的平台制造商可以跟随GitHub增加一些安全检查,发现其基础设施被恶意人员大规模滥用。
3. 加强云原生容器周期审计
没有什么比确保业务容器的适当配置和通常攻击载体的加固更重要的了,这也包括确保正确的管道配置。
然而,有时很难发现一些小的配置错误。然后问题来了,基于Docker环境不会受到漏洞的威胁吗?这就是为什么我们需要经常对容器进行安全审计,以发现脆弱性。扫描容器图像和列表文件仍然有助于发现常见的安全问题。
建议投资可靠的云原生容器安全解决方案,可以自动处理这些事情。几乎不可能手动跟踪每年公布的大量安全隐患。
此外,随着企业的启用Kubernetes框架以及Docker容器部署其应用程序,WAF内置容器安全解决方案可以早期检测和阻断可疑的网络流量。即使攻击者能够渗透到容器并获得最初的访问权限,这也可以防止更大的失陷事件。
4. 集成深度代码扫描自动检查代码质量
在代码进入业务环境之前,自动检查代码质量、安全风险和内存漏洞,可以有效地从零开始保护CI/CD管道。虽然关注点似乎主要针对网络攻击的防御,但一些看似无害的漏洞也有很大的影响——比如最近的搞垮全球多个主要站点的Fastly事件。
GitHub代码扫描或Sonatype的Lift这些解决方案可以与现有的代码工作流无缝集成,并在没有任何成本的情况下为开发人员提供基本的保护。该组织的最终目的应该是支持开发人员做他们能做的最好的工作,并尽可能防止应用程序中的漏洞或安全风险。然而,这也使开发团队和安全团队之间的摩擦尽可能少。因此,当开发人员编写代码时,实时报警可以节省每个人的时间,并从一开始就确保CI/CD管道整体工作流安全。
5. 尽快最新CI/CD补丁修补工具漏洞
2021年三月,攻击者用名字z0Miner挖矿僵尸网络有漏洞Jenkins和ElasticSearch门罗币在服务器上挖掘。使用暴露在互联网上的服务器RCE攻击者可以感染并接管自动化基础设施,并实施其恶意行为。
同样,去年,Jenkins服务将被攻击者利用,快速实现DDoS攻击。这是基于一引起的。UDP反射放大攻击DoS漏洞,漏洞编号为CVE-2020-2100,分别会影响Jenkins v2.219和Jenkins LTS 2.204.1以下版本。
当高危漏洞尽快披露时,对自动化工具和管道进行补丁,这仍然是保证CI/CD基础设施安全的关键。
6. 更新前验证其完整性
应用最新的更新和补丁是个好主意,但是如何保证收到的更新不被篡改呢?“升级到最新版本”安全人员用了十多年的铭言SolarWinds供应链攻击后开始受到质疑。
在SolarWinds事件中,Orian的IT产品被恶意更新,攻击者通过他们发送恶意代码1.8在万个客户中。Passwordstate密码管理功能下降,恶意更新传播给用户。因此,盲目更新产品是个坏主意。
在Codecov在这种情况下,一个简单的完整性检查可以发现为期两个月的泄漏。客户注意到了服务器Bash Uploader哈希校检与和Codecov在GitHub图书馆上的合法校准检查和不一致通知Codecov。Codecov然后修复了问题。
因此,一种深度的防御机制需要完整地验证任何更新、补丁和下载,以消除复杂的供应链攻击。
点评
CI/CD管道安全不仅需要拓宽攻击面的防御范围,还需要一系列的安全意识和规范补充。从技术层面来说,因为CI/CD自动化属性强,对保护能力的自动化水平有新的要求——安全不能以牺牲业务为代价存在。同时,开源软件带来的供应链攻击也意味着代码也需要赋予“零信任”,并非来自可靠来源的代码都必然是安全的。