什么是中间人攻击及其目标 Pipelines
如果你问 DevOps 中的中间人攻击是什么,它不仅仅是一种通用的网络嗅探技术。它是一种有针对性的 妥协你的 CI/CD pipelines 当加密较弱或不存在时,通过拦截和操纵传输中的数据、依赖项、脚本或工件。
以一个真实场景为例:CI 运行器使用 HTTP 从第三方仓库获取依赖项。如果 TLS 配置错误,或者更糟的是,TLS 缺失,攻击者就可以拦截该请求并注入看似合法的恶意包。在快速移动的 pipeline这些构件可能在任何人注意到之前就被构建和部署了。这是典型的中间人攻击,但 CI/CD 后果。
这种攻击无需破解加密,只需利用薄弱的配置即可。假设一个容器构建过程无需身份验证,即可从内部仓库下载基础镜像或脚本。如果内部流量未加密或分段,这便是中间人攻击 (MITM) 的窗口。 如果你仍然不清楚什么是中间人攻击,可以把它想象成一个隐形的参与者默默地修改你的 pipeline 消耗,不留明显痕迹。
在哪里 Pipeline 突破:真正的 MITM 切入点 CI/CD
中间人攻击可以通过多个薄弱点接管 DevOps 流程:
- 通过 HTTP 获取包:常见于旧版本或自托管注册中心。如果您正在拉取 Python包, NPM 模块,或 Docker图片 如果没有 HTTPS,您就会暴露。
- 未经证实的来源: Pipeline用户经常使用社区或开源工具,但未验证其完整性。中间人攻击者可以篡改这些下载内容。
- 无需身份验证的 Artifact 存储库:S3 存储桶、Git LFS 服务器或通过纯 HTTP 访问的内部工件存储都是容易攻击的目标。
- 不安全的内部服务:许多内部 CI/CD 工具(运行器、代理、部署脚本)假设网络边界安全。中间人攻击 (MITM) 可以利用这一假设。
计费示例:
dependencies:
- wget http://internal.repo.local/package.tar.gz
⚠️ 不安全示例:请勿在生产中使用
如果拦截了这些流量,攻击者只需要提供一个经过操纵的 名为.tar.gz 带有有效载荷。这将在构建阶段解包并执行。 这是预cisely 中间人攻击在现代 pipelines:它利用了信任假设。
恶意构建:运行时和构建时的代码注入
中间人攻击不仅仅是拦截,它还会导致代码注入。一旦恶意依赖项或构件进入 pipeline,攻击者控制构建。
- 构建时注入:运行未经验证的依赖项的编译器或构建脚本可能包含木马代码。想象一下 Makefile 中一行经过混淆的代码,以更高的权限执行。
- 运行时注入:以纯文本形式暴露的环境变量或机密信息可以被捕获并重用。如果您的运行器记录 导出 AWS_SECRET_KEY=…,泄漏即将发生。
- 动态步进操纵:YAML 定义的 CI pipeline用户通常依赖 curl/wget 来获取动态脚本。如果这些脚本没有受到保护,中间人攻击者就可以动态地替换它们。
curl http://setup.ci/init.sh | bash # Dangerous without TLS and verification
⚠️ 不安全示例:请勿在生产中使用
了解什么是中间人攻击可以更容易地理解这些注入是如何发生的:攻击者成为传递过程的一部分,注入恶意指令而无需直接访问您的源代码。
保护DevOps Pipeline防范中间人攻击风险
你无法消除中间人攻击威胁,但你可以 pipeline妥协变得更加困难。
可操作步骤:
- 始终强制执行 TLS:每个工件、依赖项和脚本都必须通过 HTTPS 获取。
- 验证校验和/哈希值:使用 SHA256 或更强的摘要并在执行前进行验证。
- 签署并验证工件:使用 Sigstore 或 in-toto 来确保出处。
- 安全 CI 运行器:隔离环境,避免共享运行器,并尽可能禁用 shell 访问。
- 隔离机密:仅在需要的步骤中注入机密。切勿打印它们或将其存储在日志中。
脚步:
- name: Fetch
run: |
curl -fsSL https://secure-repo.com/tool.sh -o tool.sh
echo "<sha256> tool.sh" | sha256sum -c -
✅ 执行前验证脚本完整性
结论:左移 Pipeline Security
DevOps 中的中间人攻击不是被动监听,而是主动劫持你的系统中不安全的流量。 CI/CD. TLS配置错误、未经认证的来源和未经证实的文物打开了大门。 开发人员需要对待 pipeline就像生产代码一样:经过测试、验证且安全可靠。这意味着没有未经身份验证的下载,没有基于 HTTP 的源,也没有未经验证的动态执行。
像工具一样 西吉尼 帮助团队强化他们的 pipeline通过检测薄弱点、验证工件完整性以及 在依赖篡改传播之前捕获它。 左移不是可选的;这是您如何领先于现实世界的 AppSec 威胁。 仅仅了解中间人攻击是不够的。你需要检测它、预防它,并停止处理 pipeline 作为安全模型中的二等公民。





