什么是不安全的系统配置?
不安全的系统配置是 OWASP 的十大 CI/CD 安全风险之一。当 CI/CD 系统以次优或默认配置进行部署时,就会出现这种情况。它可能包括不必要的开放端口、默认凭据、未打补丁的系统、隔离不良的网络或禁用的安全功能。这些漏洞会使系统面临未经授权的访问,并增加恶意软件的传播和在部署过程中注入恶意代码的可能性,最终导致数据泄露和业务运营中断。不安全的配置还可能导致合法的 CI/CD 流程被滥用,使攻击者能够操纵工作流程并访问生产环境。
CICD-SEC-7:不安全系统配置详解
不安全的系统配置会带来巨大的安全风险。它源于整个管道中各种系统(如源代码管理 (SCM)、CI 系统和工件存储库)在安全设置、配置和加固方面的缺陷。这些漏洞往往很容易成为攻击者在环境中扩大攻击范围的目标。
来自不同供应商的多个系统构成了 CI/CD 环境。要增强 CI/CD管道的 安全性,不仅要关注流经管道的代码和工件,还要关注每个单独系统的立场和弹性。
与数据存储和处理系统类似,CI/CD 系统涉及应用程序、网络和基础设施层面的众多安全设置和配置。这些设置在确定 CI/CD 环境的安全态势及其对潜在漏洞的敏感性方面发挥着重要作用。
攻击者会寻找 CI/CD 漏洞和配置错误加以利用。潜在的硬化缺陷包括
- 运行过时版本的系统
- 网络访问控制过于宽松的系统
- 具有底层操作系统管理权限的自托管系统
- 证书卫生差
已定义的系统配置
系统配置指的是设置系统和服务、定义它们的交互方式以及制定运行规则的过程。这包括设置硬件、安装和配置软件以及建立网络连接。由于配置过程会对系统的功能、性能和安全性产生重大影响,因此正确进行配置并保持其优化状态至关重要。
安全系统配置的组成部分
安全配置包括正确设置系统参数、管理访问控制,以及为支撑 CI/CD 管道的系统实施安全措施。这种配置可减轻未经授权访问的风险,防范利用构成开发环境主干的系统中的漏洞。
CI/CD 环境的复杂性源于 CI/CD 环境,即系统配置从单个系统延伸到管道中使用的工具、服务和平台之间的相互联系。毫不奇怪,有效和安全的系统配置的主要组成部分是严格的配置管理。
CICD-SEC-7 是如何发生的
不安全系统配置的根本原因往往指向人为错误、缺乏适当程序或对安全要求理解不足。造成这种情况的原因可能很简单,如不更改默认设置、允许过多的权限或忽视系统更新和打补丁。
假设情况
攻击者扫描了目标网络(一家专门从事人工智能的科技公司),发现了一台配置了默认设置的 Jenkins 服务器。利用现成的工具和 API 调用,他们开始挖掘 Jenkins 服务器元数据,以获取有关底层系统的潜在信息。大量信息充斥着他们的屏幕--有关插件、工作、系统配置等的数据。在这些细节中,有一串信息格外引人注目。AWS 密钥。它们被 Jenkins 用于在 AWS 上部署应用程序,而且没有足够的安全性。这些密钥是管理员账户的,可以不受限制地访问公司的 AWS 环境。
利用密钥潜入公司的 AWS 基础设施,攻击者就进入了组织系统的核心。他们找到了一个存放专有人工智能模型的 S3 存储桶,利用偷来的 AWS 密钥的管理员级访问权限,他们迅速下载了模型并退出,没有触发警报。
然后,攻击者决定进一步利用这个系统。他们意识到 Jenkins 服务器拥有写入 GitHub 代码存储库的权限,于是在主应用程序源代码中植入了一个恶意代码片段,从而创建了一个进入应用程序的后门。在下一个部署周期中,公司在不知情的情况下将应用程序推向生产。现在,攻击者拥有了一个持久性后门,可以窃取数据、操纵系统控制和植入更多恶意软件,而这一切都在公司安全系统的监视之下。
安全系统配置在 CI/CD 中的重要性
工程环境中任何一个环节的配置错误都可能使整个管道面临潜在威胁。利用配置错误的攻击者可能会在未经授权的情况下访问 CI/CD 系统,更有甚者会入侵系统并访问底层操作系统。攻击者可能会操纵合法的 CI/CD 流程,获取敏感令牌,并有可能访问生产环境。在某些情况下,配置缺陷可能会让攻击者在环境中横向移动,并脱离 CI/CD 系统。
与不安全系统配置有关的风险
DevOps 小组如果了解不安全系统配置带来的风险,就有能力设计不那么脆弱的系统,对所设计系统的安全性负责,并在风险出现时加以缓解。
案例研究 1:PHP 在发生安全事件和潜在用户数据库泄漏后转向 GitHub
2021 年 4 月,PHP 社区面临一起涉及 git.php.net 的安全事件。调查发现,恶意提交使用了 HTTPS 和基于密码的身份验证,绕过了 Gitolite 基础设施。master.php.net用户数据库可能已经泄漏,提示系统迁移到main.php.net,并对所有php.net用户进行密码重置。Git.php.net 和 svn.php.net 被设为只读,PHP 的主要存储库被转移到 GitHub,从而提高了安全性并简化了开发工作流程。
案例研究 2:Webmin 在发生恶意代码插入事件后全面改进安全措施
2019 年 8 月,基于网络的系统配置工具 Webmin 因源代码中被插入恶意代码而遭遇安全漏洞。这个漏洞并非偶然出现,它允许远程执行命令。恶意代码是通过被入侵的开发构建服务器引入的。发现漏洞后,Webmin 采取的应对措施是更新构建流程,只使用从 GitHub 签入的代码,轮换所有可访问的秘密,并审核过去一年中所有 GitHub 提交的类似漏洞。
案例研究 3:由于 Git 服务器配置错误,日产北美公司的源代码在网上曝光
由于 Git 服务器配置错误,日产北美公司移动应用程序和内部工具的源代码在网上泄露,这是一个重大的安全漏洞。瑞士软件工程师 Tillie Kottmann 发现了这台默认用户名和密码为 "admin/admin "的服务器。代码存储库中包含各种日产应用程序、诊断工具、经销商门户网站、营销工具等的代码。日产确认了这一事件,确保了受影响系统的安全,并声称没有个人数据被访问。
案例研究 4:纽约州 IT 部门在线公开内部代码存储库
纽约州 IT 部门使用的一个内部代码存储库无意中暴露在网上,任何人都可以访问。网络安全公司 SpiderSilk 发现的 GitLab 服务器包含有州政府系统密钥和密码的项目。该服务器的配置允许任何人创建用户账户并登录。该服务器于 3 月 18 日首次被检测到在线,并在报告曝光后被下线。据报道,该服务器是一家供应商设置的测试箱,现已退役。
防止 CI/CD 中不安全的系统配置
虽然配置错误会为攻击者提供切入点,导致重大安全漏洞,但安全系统配置在许多开发流程中仍被忽视。来自 OWASP 十大 CI/CD 安全风险 列表作者的内部建议可以让你的系统处于良好状态:
- 记录使用中的系统和版本清单,将每个系统与指定的所有者相对应。定期检查这些组件是否存在已知漏洞。当安全补丁可用时,更新易受攻击的组件。如果没有针对易受攻击组件的补丁,可考虑删除该组件或系统。或者,通过限制系统访问权限或执行敏感操作的能力,将利用漏洞的潜在影响降至最低。
- 确保对系统的网络访问符合 最低权限访问原则。
- 建立定期审查所有系统配置的流程。重点审查可能影响系统安全状态的设置。确保优化设置。
- 根据最小权限原则 向管道执行节点 授予 权限 。在这种情况下,一个常见的配置错误是将执行节点上的调试权限授予工程师。许多组织都允许这样做,但关键是要考虑到,任何在调试模式下访问执行节点的用户都可能在秘密加载到内存时暴露所有秘密。他们还可以使用节点的身份,有效地向任何拥有此权限的工程师授予更高的权限。
系统配置安全行业标准
一些行业标准概述了系统配置安全的最佳实践。互联网安全中心(CIS)提供了全面的安全配置基准,而美国国家标准与技术研究院(NIST)也发布了系统安全配置指南。
加密你的秘密
密码、API 密钥和数据库凭证等秘密应在静态和传输过程中加密。 切勿在代码或配置文件中存储秘密。使用秘密管理工具,如 HashiCorp Vault 或 AWS Secrets Manager。这些工具对机密进行加密并控制访问权限,有助于防止组织的凭证落入坏人之手。
记录和监控系统
维护安全系统配置的一个关键部分是制定明确的政策并对合规性进行例行监控。记录所有活动非常重要,这样您就能发现可疑活动并快速应对安全事件。您还应监控系统,以发现攻击迹象,如异常流量模式或登录尝试失败。
修补漏洞
确保建立全面的漏洞识别和修补系统。系统地识别漏洞并优先进行修复。在无法修补漏洞的情况下,使用其他缓解措施,如取消管理员权限。请记住,保持系统最新意味着要定期对服务器、应用程序和 CI/CD 工具应用补丁和更新。
取消不必要的账户和权限
通过删除不必要的账户(如孤儿账户和未使用的账户)来执行最低权限。这是减少攻击面最有效的安全措施之一。确保系统的每个组件,包括用户、进程和服务,都只拥有执行其功能所需的最低权限。这样做可以在部件受损时减少损失。
设置网络路障
将网络划分成较小的、孤立的网段,可以在攻击者进入网络时限制横向移动。使用防火墙和访问控制列表 (ACL) 控制网段之间的流量。加密流量,封堵未使用或不需要的开放网络端口,禁用或删除不必要的协议和服务。定期审核防火墙规则。
确保构建服务器的安全
您的构建服务器负责编译和包您的代码,因此它们是攻击者的首要目标。确保使用最新的安全补丁和强密码对构建服务器进行适当加固。请记住,确保构建环境的安全意味着将其与生产环境隔离。
审核现有系统
定期审计和审查有助于确保系统配置长期保持安全。对现有技术进行全面审核。使用渗透测试、漏洞扫描、配置管理和其他安全审计工具,查找系统中的缺陷并优先修复。利用 NIST、Microsoft、CIS、DISA 等机构的行业标准对资源进行系统评估。
使用工具帮助确保系统配置安全
有许多工具可以帮助管理和保护系统配置。配置管理工具(如 Ansible、Chef 或 Puppet)可实现自动配置和跨环境的一致应用。对于基于云的系统,AWS Config、Azure Policy 和 Google Cloud Security Command Center 等云原生服务可以帮助维护安全配置。
不安全系统配置常见问题
加固标准的例子包括互联网安全中心(CIS)基准,该基准提供了定义明确、无偏见、基于共识的行业最佳实践,以帮助组织评估和改进其安全性。
其他标准包括美国国防部信息系统局(DISA)的《安全技术实施指南》(STIGs)和美国国家标准与技术研究院(NIST)的《加固指南》。这些标准涵盖广泛的系统,包括操作系统、网络设备和云环境,并定期更新,以应对新出现的威胁和漏洞。