최근 Shai-Hulud 공급망 공격 캠페인으로 인해 npm, PyPI, Composer 등에서 수백 개의 패키지가 감염되어 개발자를 대상으로 자격 증명 탈취형 악성코드가 유포되고 있다. 공격자는 유효한 OpenID Connect(OIDC) 토큰을 탈취해 SLSA Build Level 3의 검증 가능한 출처 증명까지 갖춘 악성 패키지를 배포했으며, TeamPCP 위협 그룹이 주도한 이번 공격은 TanStack과 Mistral AI 패키지에서 시작해 Guardrails AI, UiPath, OpenSearch 등 인기 프로젝트로 확산되었다. 최근에는 Bitwarden CLI, SAP 공식 패키지 등도 감염되었으며, 공격자는 합법적인 CI/CD 파이프라인을 통해 악성 패키지를 배포해 개발자들이 정상 패키지로 오인하도록 했다.
공격자는 TanStack의 ‘pull_request-target’ 워크플로우, GitHub Actions 캐시 오염, 러너 메모리 내 OIDC 토큰 탈취 등 세 가지 취약점을 연쇄적으로 악용했다. 이로 인해 42개 TanStack 패키지에서 84개의 악성 버전이 유포되었으며, GitHub Actions 서명과 Sigstore 증명까지 정상적으로 갖춰져 있어 개발자 입장에서는 감염 사실을 인지하기 어려웠다. 악성코드는 GitHub, npm, AWS, Kubernetes, HashiCorp Vault 등 다양한 개발자 비밀 정보를 탈취하며, Session P2P 네트워크를 통해 정보를 외부로 유출해 탐지와 차단을 어렵게 만들었다. 감염 시 Claude Code, VS Code 자동 실행 태스크 등에 악성코드를 심어 패키지 삭제만으로는 완전한 제거가 불가능하다.
보안 전문가들은 영향을 받은 패키지 버전 확인, 개발자 PC 내 악성 파일 탐지, 모든 자격 증명 교체, IDE 디렉터리 점검, 위협 인프라 차단 등을 권고하고 있다. 또한, SLSA Build Level 3 증명만으로는 악성 패키지 식별이 불가능하므로 설치 시 행위 기반 분석과 서명 기반 검증을 병행해야 하며, 장기적으로는 lockfile-only 설치 정책을 도입해 자동 패키지 업데이트를 차단할 필요가 있다.
요약
- Shai-Hulud 캠페인으로 npm, PyPI, Composer 등에서 수백 개 패키지가 감염되어 개발자 자격 증명 탈취형 악성코드가 유포되었다.
- 공격자는 OIDC 토큰 탈취 등 세 가지 취약점을 연쇄적으로 악용해 정상적인 출처 증명을 갖춘 악성 패키지를 배포했다.
- 악성코드는 다양한 개발자 비밀 정보를 탈취하고, 감염 시 자동 실행 태스크 등에 남아 패키지 삭제만으로는 제거가 어렵다.
- 보안 전문가들은 패키지 버전 확인, 자격 증명 교체, IDE 디렉터리 점검, 위협 인프라 차단 등을 권고한다.
- SLSA 증명만으로는 악성 패키지 식별이 어려우므로 행위 기반 분석과 lockfile-only 설치 정책 도입이 필요하다.
Reference
※ 이 글은 생성형 AI(gpt4.1)에 의해 요약되었습니다.