피드로 돌아가기
InfoQInfoQ
Security

6분 만에 42개 패키지를 오염시킨 GitHub Actions 공급망 공격 분석

TanStack Details Sophisticated npm Supply Chain Attack That Compromised 42 Packages

Craig Risi2026년 5월 19일4advanced

Context

OIDC 기반의 Trusted Publishing 도입으로 장기 토큰 의존성은 제거했으나, CI/CD 워크플로우 자체의 권한 관리 허점을 노린 공격 발생. GitHub Actions의 공유 캐시 메커니즘과 pull_request_target의 높은 권한 설정이 결합되어 외부 공격자의 코드 주입 경로로 활용됨.

Technical Solution

  • pull_request_target 워크플로우를 통한 Fork-to-Base 신뢰 경계 침범 및 권한 상승 유도
  • 공유 GitHub Actions Cache에 악성 아티팩트를 저장하여 정식 릴리스 파이프라인의 복구 단계에서 실행되도록 설계
  • OIDC 토큰 발행 권한을 남용하여 npm 인증 토큰 탈취 없이 직접 패키지를 배포하는 Trusted Publishing 메커니즘 악용
  • npm lifecycle scripts를 통한 설치 단계 자동 실행 및 AWS, GCP, K8s 등 클라우드 자격 증명 탈취 로직 구현
  • 감염된 개발자 환경 내의 타 패키지 목록을 식별하여 동일한 페이로드를 재배포하는 Self-propagation 구조 채택
  • immutable SHA 기반의 Action Pinning 및 Repository-owner 검증 로직 도입을 통한 파이프라인 하드닝

1. pull_request_target 대신 pull_request 사용 및 필요 시 최소 권한 원칙 적용

2. GitHub Actions 사용 시 태그 대신 immutable Commit SHA를 사용하여 액션 버전 고정

3. CI/CD 파이프라인 내 공유 캐시의 무결성 검증 프로세스 도입

4. OIDC 기반 배포 시 특정 브랜치와 환경에 대해서만 권한을 제한하는 엄격한 조건 설정

원문 읽기