피드로 돌아가기
Dev.toSecurity
원문 읽기
OIDC 토큰 탈취를 통한 5억 건 이상의 npm/PyPI 공급망 공격 발생
Mini Shai-Hulud: un gusano de cadena de suministro que explotó TanStack y el ecosistema npm.
AI 요약
Context
GitHub Actions와 OIDC 기반의 자동화된 배포 파이프라인 신뢰 구조를 악용한 공급망 공격 사례임. SLSA 증명서와 패키지 서명을 통한 무결성 검증 체계가 런타임 코드 주입 및 메모리 직접 접근 방식에 의해 무력화된 한계를 보여줌.
Technical Solution
- Forked Repository 내 @tanstack/setup 패키지를 통한 악성 prepare 스크립트 주입 및 pnpm 캐시 오염 유도
- CI/CD 러너의 프로세스 메모리(/proc/*/mem)에 직접 접근하여 유효한 OIDC 토큰을 추출하는 메모리 덤프 기법 적용
- 탈취한 OIDC 토큰을 이용해 SLSA 무결성 검증을 통과하는 가짜 패키지 버전을 npm 레지스트리에 직접 배포
- npm bypass_2fa 토큰을 탐색하여 메인테이너의 모든 패키지로 악성 코드를 자동 전파하는 Worm 구조 설계
- 런타임 시 obfuscated 코드를 실행하여 정적 분석 도구와 보안 스캐너의 탐지를 회피하는 동적 페이로드 전략 채택
실천 포인트
- GitHub Actions의 id-token: write 권한을 배포 전용 Job으로 한정하고 테스트/CI 단계에서는 배제 - pull_request_target 워크플로우의 실행 범위를 보호된 브랜치로 제한하고 Forked 코드 실행 전 검증 단계 추가 - 신규 패키지 버전 도입 시 24~72시간의 Cooldown 기간을 두는 버전 지연 업데이트 전략 검토 - CI 러너 내 /proc/mem 접근 및 비정상적인 네트워크 트래픽을 감지하는 Runtime Security 도구 도입