十大 CI/CD 安全风险

本文详细介绍了Poisoned Pipeline Execution(PPE)安全风险,包括直接PPE、间接PPE和公共PPE三种类型,并通过GitHub Actions和Jenkins的实例说明攻击方式。PPE可能导致攻击者执行未审查的恶意代码,访问敏感信息。建议包括在隔离节点上执行流水线、审查CI配置文件和实施分支保护规则等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本篇文章将着重介绍 PPE 风险,并提供缓解相关风险的安全建议与实践。

Poisoned Pipeline Execution (PPE) 风险指的是攻击者能够访问源代码控制系统,但无法访问构建环境,通过将恶意代码/命令注入构建流水线配置来操纵构建过程,本质上是“中毒的”流水线和运行恶意代码作为构建过程的一部分。

风险描述

PPE 风险通常存在代码仓库中,可控对应的 CI 管道配置文件,通过修改 CI 配置文件达到执行对应命令的目的。有权操作 CI 配置文件或 CI 流水线任务所依赖的其他文件的攻击者,可以将恶意命令置入这些文件,通过执行这些恶意命令,最终“毒化”执行这些命令的 CI 流水线。执行未经审查的代码的流水线,比如一些直接由拉取请求或提交到任意存储库分支触发的流水线,由于在设计上包含未经任何审查或批准的代码,更容易受到 PPE 风险的影响。一旦能够在 CI 流水线中执行恶意代码,攻击者就可以在流水线身份的上下文中进行各种恶意操作。

PPE 的三种类型

直接 PPE(D-PPE)

在 D-PPE 场景中,攻击者修改他们有权访问的存储库中的 CI 配置文件,通过直接将更改推送到存储库上未受保护的远程分支,在提交 PR 时随着分叉的更改而变化。由于 CI 流水线执行是由“push”或“PR”事件触发的,并且流水线执行是由修改后的 CI 配置文件中的命令定义的,一旦构建流水线被攻击,攻击者的恶意命令最终会在构建节点中运行触发。

间接 PPE(I-PPE)

在以下几种情况下,即便攻击者能够访问 SCM 存储库,也无法使用 D-PPE:

  • 流水线配置为从同一存储库中单独的受保护分支中提取 CI 配置文件。

  • CI 配置文件存储在与源代码不同的存储库中,则用户没有直接编辑它的选项。

  • CI 构建是在 CI 系统本身中定义的——而不是在存储在源代码中的文件中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值