网络攻击者利用持续集成(CI)/持续交付(CD)基础设施安全中的弱点。值得注意的是,针对软件审计师Codecov供应链的网络攻击警告人们不要将机密数据存储在持续集成(CI)/持续交付(CD)环境变量中,无论环境多么安全。据报道,通过破坏数千名开发人员使用的Bash上传器,以Codecov为目标的网络攻击者设法从客户环境中窃取凭证、密钥和API令牌,而在入侵两个月后仍未被发现。该攻击还破坏了数百个受限客户网络。同样,针对Jenkins、GitHubActions和云原生容器化环境等自动化工具的攻击进一步促使企业探索和部署针对这些工具的有效防御措施。以下是确保您的持续集成(CI)/持续交付(CD)管道保持安全的一些最佳实践。1.停止在持续集成(CI)/持续交付(CD)环境中存储秘密Codecov供应链网络攻击成功的原因仍然是网络攻击者泄露的环境变量包含硬编码秘密,包括密码、令牌和钥匙。由于其中一些凭据使网络攻击者可以访问公司的私有GitHub存储库,因此这些包含机密数据的私有存储库可能会发生进一步的数据泄露。虽然包括HashiCorp、Twilio、Rapid7和Monday.com在内的多个Codecov客户披露了供应链攻击的影响,但迄今为止最严重的数据泄露事件发生在日本电子商务巨头Mercari。在Codecov遭受网络攻击后,Mercari的客户、商家、业务合作伙伴、公司员工、承包商和其他组织总共泄露了27,000多条记录。诚然,这些网络攻击中的每一次都可能始于Codecov漏洞,并且一些人质疑为什么个人身份信息(PII)(例如客户财务记录)存储在私人GitHub存储库中。HashiCorp的GPG私钥存储在持续集成(CI)/持续交付(CD)环境中,引发了类似的担忧。这是用于签署和验证HashiCorp发布的软件版本的密钥。网络攻击者可能在密钥被撤销之前滥用密钥在恶意软件版本上伪造了HashiCorp的签名。一位开发人员在推特上写道:“为什么没有人谈论Vault的制造商HashiCorp将他们的签名密钥存储为ENV的事实?”企业需要重新考虑哪些机密数据可以存储在CI/持续交付(CD)工具、环境变量和私有GitHub存储库中。如果应用程序需要在这些地方存储凭据或令牌,最好将凭据存储在完成任务所需的具有最小权限的帐户或资源中——通常称为最小权限原则。这样,即使机密数据确实在前所未有的网络攻击中泄露,损失也将得到遏制。2.查看自动拉取请求和计划任务持续集成(CI)/持续交付(CD)自动化工具(如GitHubActions)允许开发人员为其代码存储库设置计划任务,例如自动查看和处理传入的拉取请求。但是,如果向开源项目发出拉取请求的人是恶意的,会发生什么情况?2021年4月,GitHubActions被网络攻击者滥用,他们向数百个存储库发送自动拉取请求,意图使用GitHub的基础设施来挖掘加密货币。大规模网络攻击发生在今年2月初GitHubActions出现“缺陷”的报道之后。这些拉取请求可能会滥用GitHub的服务器来挖掘加密货币或执行来自网络攻击者的恶意代码。如果项目所有者疏忽并合并了这些拉取请求,他们现在就会将恶意代码引入存储库和更广泛的软件供应链中。5月,GitLab报告称网络攻击者滥用分配给新账户的“空闲时间”(配额)在其平台上进行类似的加密货币挖矿攻击。由于GitHubActions和GitLab等持续集成(CI)/持续交付(CD)自动化工具的本质是提供自动化关键任务的便利,因此网关安全性成为一项挑战。当威胁行为者滥用时,可能是有意设计的功能很快变成了安全漏洞。GitHub公司最近发布了新功能,以防止密码攻击者滥用其Actions平台。GitHub公司产品经理ChrisPatterson在一篇博客文章中说,“在任何Actions工作流可以运行之前,拉取请求需要来自具有写入访问权限的存储库协作者的手动批准。当申请人打开拉取请求时,他们会看到一条消息,表明维护者必须先批准他们的Actions工作流程才能运行。“行业领先的持续集成(CI)/持续交付(CD)解决方案和DevOps平台可以模仿GitHub并添加一些安全检查,以阻止恶意行为者大规模滥用其基础设施。3.强化并定期审计云原生容器NoWhat's比遵循标准的最佳实践更好,例如确保容器已正确配置并针对常见的攻击媒介进行了强化。这包括保护管道配置。但是,简单的错误配置有时很难被员工发现。那么一个问题,是企业的基于Docker的没有漏洞的环境?这就是为什么定期对容器执行弱点安全审计、扫描容器映像和清单文件以查找常见安全问题仍然有帮助的原因。推荐使用可靠的云原生容器,这是一种安全解决方案,可以自动执行其中的大部分操作。绝对数量每年报告的安全漏洞数量使得人类几乎不可能把他们架下来。此外,随着越来越多的企业采用Kubernetes框架和Docker容器来部署他们的应用程序,内置Web应用程序防火墙的容器安全解决方案可以及早发现并阻止可疑的网络流量。这有助于防止更大的危害,即使网络攻击者能够闯入容器并获得初始访问权限。4.集成深度代码扫描,自动化代码质量检查在代码投入生产之前,使用工具自动发现代码质量问题、安全漏洞和内存泄漏或竞争条件等错误,以及持续集成(CI)/An持续交付(CD)管道的有效策略。虽然重点似乎主要放在防止网络攻击上,但无害的错误也可能产生大规模影响。最近Fastly的CDN在全球范围内发生故障,导致该公司在全球的主要站点离线。GitHubCodeScanner或Sonatype的Lift等解决方案无缝集成到企业现有的编码工作流程中,并免费为开发人员提供基本的保护措施。最终,企业的目标应该是支持其开发人员的工作,同时尽可能地防止在应用程序中引入错误或安全漏洞。这需要开发团队和安全团队之间的协作。在这里,实时通知会提醒开发人员编写代码时可能出现的疏忽可以节省开发人员的时间并从一开始就保护CI/CD工作流程。5.修补最新的CI/CD早期(CD)工具漏洞2021年3月,网络攻击者利用名为z0Miner的加密挖掘僵尸网络在易受攻击的Jenkins和ElasticSearch服务器上挖掘加密货币Monero(XMR)。通过利用面向Internet的服务器中的远程代码执行(RCE)漏洞,网络攻击者试图破坏并接管自动化基础设施以进行恶意活动。正如媒体去年报道的那样,网络攻击者可以利用Jenkins服务器快速造成分布式拒绝服务(DDoS)。这是由名为CVE-2020-2100的UDP放大反射DoS漏洞引起的,该漏洞影响Jenkinsv2.219之前的版本和JenkinsLTS2.204.1之前的版本。一旦发现这些严重漏洞,立即修补它们对于确保持续集成(CI)/持续交付(CD)基础架构的安全性仍然至关重要。6.在应用更新之前验证更新的完整性。采用最新的更新和补丁是合理的建议,但您能确定收到的更新没有被篡改吗?在SolarWinds供应链遭受网络攻击后,几十年来一直安全的专业人士口头禅“更新到最新版本”的建议受到了挑战。在SolarWinds数据泄露事件中,对OrionIT产品的恶意更新使网络攻击者能够向下游分发恶意代码给18,000多个客户。Passwordstate密码管理器的“就地更新功能”遭到破坏,向Passwordstate用户分发恶意更新。因此,盲目采用更新补丁并不是一个好主意。在Codecov的案例中,一个简单的完整性检查发现了长达两个月的数据泄露。一位客户注意到服务器上托管的Bash上传器的校验和哈希与Codecov的GitHub存储库中列出的合法校验和之间存在差异,并立即联系了Codecov,后者随后努力解决了数据泄漏问题。纵深防御方法可确保验证任何更新、补丁和下载的完整性,从而消除来自复杂供应链的攻击风险。
