国家安全局 CI/CD 安全指南:保护软件供应链

从 2019 年到 2022 年,软件供应链攻击年均增幅超过 700%,这一增长趋势预计将在 80 年造成超过 2026 亿美元的经济影响。认识到这一问题的严重性, 美国国家安全局(NSA)网络安全和基础设施安全局(CISA) 发布 关键指导方针 以确保 CI/CD 环境,应对利用漏洞的所谓恶意网络行为者(MCA)日益增加的威胁。

这些指导方针特别侧重于防止内部机密的泄露 CI/CD pipelines 并提供具体的见解。

 

最关键的 CI/CD 安全威胁?

正如 NSA 指南所述,确保 CI/CD 环境需要识别和防御各种类型的安全威胁,这些威胁可能会影响 CI/CD 运营中常见的风险如下: CI/CD pipelines,以及 OWASP顶级10 CI/CD 安全风险:

  • 流量控制机制不足:这种风险是指缺乏适当的控制来管理数据和任务的流动 CI/CD pipeline。如果没有这些控制,未经授权的更改可能会被引入 pipeline,导致潜在的安全漏洞。
  • 身份和访问管理不足:这种风险涉及没有妥善管理谁有权访问 CI/CD pipeline 以及他们可以做什么。如果没有适当的身份和访问管理,未经授权的个人可以访问 pipeline 并引入恶意更改。
  • 依赖链滥用:此风险是指攻击者可能利用您的软件所使用的依赖项中的漏洞。如果这些依赖项未得到妥善管理和保护,则可能为攻击提供途径。
  • 中毒 Pipeline 执行:这种风险涉及攻击者可能将恶意代码引入 CI/CD pipeline.这可能导致在生产环境中执行恶意代码。
  • PBAC 不足(Pipeline-基于访问控制):这种风险是指缺乏基于 pipeline。如果没有这些控制,未经授权的个人可以访问 pipeline.
  • 凭证卫生不足:这种风险涉及未能正确管理和保护用于 CI/CD pipeline。如果这些凭证被泄露,攻击者就可能获得 pipeline.
  • 不安全的系统配置:此风险是指由于
    配置不当的系统 CI/CD pipeline。攻击者可以利用这些漏洞。
  • 第三方服务的不受管控的使用:此风险涉及使用缺乏适当监督和控制的第三方服务。如果管理和保护不当,这些服务可能会带来安全漏洞。
  • 工件完整性验证不当:这种风险是指缺乏对由 CI/CD pipeline如果没有适当的验证,恶意或受损的工件可能会被引入生产环境。
  • 日志记录和可视性不足:这种风险涉及对
    在的活动 CI/CD pipeline. 如果没有适当的日志记录和可视性,可能很难检测和响应安全事件

 

最严重的威胁情景及其补救方法

攻击者获取开发人员的凭证来访问 Git 存储库:

  1. 尽量减少使用长期凭证。
  2. 对所有代码更新使用双人规则(2PR)。
  3. 保护用户帐户并实施最低特权策略。
  4. 实施网络分段和流量过滤
  • SSCS 诸如 西吉尼 自动 检测这些领域的错误配置并强制执行安全的公司政策.

供应链中应用程序库、工具或容器镜像的泄露 CI/CD pipeline:

  1. 限制不受信任的库和工具并分析 commit工具。
  2. 实施 EDR 工具和审计。
  3. 保持 CI/CD 工具、软件和操作系统都是最新的。
  • 西吉尼 平台自动 在每次扫描中更新其扫描功能 检测可能影响您的软件发布的最新恶意组件。

妥协 CI/CD 修改配置或注入恶意依赖项的环境:

  1. 分析 commit代码并集成安全扫描 CI/CD.
  2. 实施 SBOM 以及 SCA 并实施 EDR 工具.
  3. 添加签名 CI/CD 配置并验证。
  • 西吉尼 能力在 分析软件开发中涉及的全套资产, 建造和交付 能够检测到任何威胁 CI/CD 处理并生成 SBOM 作为您审计和客户的证据。

下图以以下示例展示了不同的攻击媒介 CI/CD pipeline. 这些攻击媒介与其他攻击媒介非常相似 CI/CD 攻击。

 图片:AWS 中不同攻击载体的示例 CI/CD pipeline
 

 

实现真正的零信任方法:

NSA 主动强化策略

 

本指南列出了可用于增强软件供应链保护的几种策略。您可以在此处找到最重要的一些策略的简要介绍:

使用过时且薄弱的加密算法会对 CI/CD pipelines. 这可能导致敏感数据暴露、数据泄露、身份验证被泄露以及会话不安全。 

利用这些漏洞,恶意行为者可以绕过 CI/CD pipeline 并危及软件供应链。为了降低这些风险,NSA 和 CIS建议实施和配置强大的加密算法,例如美国国家安全研究所指定的算法 Standard在设置云应用程序和服务时,请参考美国国家标准与技术研究院 (NIST) 的相关规定。

尽量减少长期凭证的使用

在进行人工身份验证时,始终优先考虑身份联合和能够抵御网络钓鱼攻击的安全令牌。应采用这些措施来获取临时 SSH 和其他密钥。 

同样,对于软件到软件的身份验证,建议尽可能减少使用基于软件的长期凭证。

Xygeni 等工具的检测器支持检测整个软件供应链中数十种格式的任何类型的凭证和机密:代码、 pipelines, IaC 配置等

添加签名 CI/CD 配置并始终验证它们

整个 CI/CD 过程中,无论开发阶段如何,确保代码得到一致且正确的签名并且签名得到验证都至关重要。

如果签名验证失败,请彻底调查验证问题的原因。

通过多因素身份验证 (MFA) 降低密码风险

它还可以与基于角色的访问控制 (RBAC) 相辅相成。如今,MFA 已广泛用于各种服务。它有助于加强安全性,同时适用于内部和外部用户。 

RBAC 遵循最小权限原则,确保仅向用户授予执行其特定任务所需的必要权限。

企业政策应该考虑当今的强制配置。自动化合规性和审计功能 SSCS 工具在整个 DevOps 基础架构中强制执行所有这些要求。

实施最低权限策略 CI/CD Access

至关重要的是只向开发人员提供 pipeline与其分配的任务直接相关的组件。 

实现职责分离至关重要,负责签入源代码的开发人员不需要更新构建环境的权限。同样,监督构建的工程师也不需要对源代码具有读写权限。有关实施安全控制的更详细指南,请参阅 NIST SP 800-53.

使用双人规则 (2PR) 进行代码更新

遵守双人规则不仅可以提高代码质量,而且还可以降低在开发人员的凭证被泄露时成功引入恶意代码的可能性。

SSCS 像 Xygeni 这样的工具通常包括一个特定的检查,以确定项目是否需要在之前进行代码审查 pull requests (合并请求)已合并。

此项检查遵循当前的 Open SSF 安全 standard.

保护用户帐户和机密

根据最小特权和职责分离原则审核用户帐户和配置访问控制至关重要。 

此外,在 CI/CD pipeline 是至关重要的。

切勿在任何地方以明文形式传输机密 pipeline,确保它们永远不会嵌入到可逆向工程的软件中。

通过实施软件物料清单 (SBOM):

此 SBOM 帮助组织了解潜在的代码漏洞并防止使用过时和未经授权的组件。遵守法规(例如 FDA 对医疗器械的要求)可能会要求使用 SBOMs.

 

开发过程中的其他必要措施

识别漏洞,至关重要的是 将安全扫描集成到 CI/CD pipeline 容易. 集成在任何步骤都应被视为简单:在工作站(上传之前)、在 commit,或者在夜间建造时使用护栏。

维护最新的软件、操作系统和 CI/CD 工具: 定期更新 CI/CD 工具,因为它们可能包含错误和漏洞。利用集中式补丁管理系统,包括操作系统和软件更新的软件完整性和验证流程。

限制不受信任的库并删除临时资源:仅使用来自可信、安全来源的软件、工具、库和工件,以最大限度地减少对 CI/CD pipeline始终确保其配置适当,以防止潜在的代码执行或引入后门。同样重要的是删除不必要的应用程序并保护端点。

了解有关 Xygeni 平台的更多信息,下载 Xygeni 平台数据表

sca-tools-软件-成分分析工具
确定软件风险的优先级、进行补救并加以保护
7-day免费试用
无需信用卡

保护您的软件开发和交付

使用 Xygeni 产品套件