사상 최대 규모의 공급망 공격, Go 언어까지 감염되다
원제 · The Largest Supply Chain Attack Ever Just Infected Go
핵심 요약
공격 대상이 의존성에서 개발 환경 자체로 이동했으므로, VS Code의 자동 작업 비활성화와 CI 환경 내 이그레스 필터링 설정 등 직접적인 환경 보안 강화가 필수적이다.
하이라이트
Shai Halud 웜은 NPM 토큰, GitHub, AWS, GCP, Azure, SSH 키를 포함한 비밀 정보를 자동으로 스캔하고 탈취한다.
2026년 Team PCP 그룹이 소스코드를 공개하고 공격 대회까지 열면서 모방범에 의한 공격이 지속되고 있다.
최근 공격은 NPM을 넘어 Go 프로젝트 소스 아카이브에 자바스크립트 후크를 포함하는 방식으로 생태계를 확장했다.
VS Code의 .vscode 폴더 내 tasks.json 및 settings.json을 조작하여 프로젝트를 여는 즉시 악성코드가 실행된다.
기존의 'ignore scripts' 플래그는 설치 후크만 차단하므로 이번 공격을 막지 못한다.
CI 환경에서 이그레스 필터링을 통해 화이트리스트 외부로의 데이터 전송을 차단하는 것이 자격 증명 탈취 방지에 효과적이다.
타임라인
Shai Halud 웜의 작동 방식과 위협
2025년 9월 등장한 Shai Halud는 설치 시점에 머신의 AWS, GitHub, GCP, Azure 키 등을 스캔한다. Trufflehog 같은 보안 도구조차 공격자가 비밀 정보를 수집하는 도구로 악용된다. 웜은 탈취한 토큰으로 악성 패키지를 즉시 배포하여 사용자 간 감염 고리를 스스로 완성한다.
- Shai Halud는 NPM 패키지에 숨어 비밀 정보를 탈취하고 스스로를 복제하는 자동화된 웜이다.
- 탈취된 NPM 토큰을 활용해 독이 든 패키지를 자동으로 게시하여 공격자가 개입하지 않아도 전파된다.
- 2026년 Team PCP라는 그룹이 공격 소스코드를 공개하고 경진대회를 열면서 모방 공격이 확산 중이다.
Go 생태계로 확장된 새로운 공격 방식
최근 포착된 공격은 Go 패키지 자체가 아닌 소스 아카이브 내부의 설정 파일을 타겟으로 한다. tasks.json과 settings.json을 통해 node.clawed.setup.mjs가 실행되고, BUN을 거쳐 페이로드가 작동한다. 보안 프로그램 실행 여부를 확인한 후 개발 환경 내 자격 증명을 탈취하며, 프로젝트 설정에 악성코드가 상주하여 기존의 의존성 관리 방식으로는 대응이 어렵다.
- 공격자는 Go 모듈인 Varana 블록체인 프로젝트의 소스 아카이브에 악성 자바스크립트 파일을 포함했다.
- 프로젝트 폴더를 열거나 코딩 세션을 시작하면 .vscode 및 .clawed 폴더 내 후크가 자동으로 실행된다.
- 공격은 개발 환경 설정을 악용하므로 npm uninstall이나 'ignore scripts' 플래그로 방어할 수 없다.
개발 환경 및 CI 보안 강화 전략
개발 도구와 CI 워크플로우를 실행 가능한 코드로 간주하고 접근해야 한다. 코드를 클론하기 전 설정 파일의 후크 포함 여부를 확인하는 습관이 중요하다. 특히 CI 환경에서는 데이터 외부 유출을 원천 차단하는 이그레스 화이트리스트 설정이 실제 피해를 방지하는 실질적인 보호책이 된다.
- VS Code의 Manage Automatic Tasks 명령을 사용하여 사용자 승인 없는 자동 작업을 비활성화해야 한다.
- CI 러너에 이그레스 필터링을 설정하여 화이트리스트 외부로 자격 증명이 유출되는 것을 차단한다.
- 장기 토큰 대신 OIDC 같은 단기 인증 방식을 사용하여 탈취된 토큰의 재사용 가능성을 제거한다.
설명
The Shai-Hulud worm that hit npm last year is back and it's evolved. Now it's crossing into the Go ecosystem and hiding in the files developers trust most: your .claude config, VS Code tasks, and GitHub workflows. This is the new front in supply chain security, where the target isn't your dependencies anymore but your dev environment and the AI coding tools inside it. We cover how this credential-stealing malware works and the practical steps that actually stop it. 🔗 Relevant Links https://socket.dev/blog/miasma-mini-shai-hulud-hits-leoplatform-npm-packages-go-ecosystem ❤️ More about us Radically better observability stack: https://betterstack.com/ Written tutorials: https://betterstack.com/community/ Example projects: https://github.com/BetterStackHQ 📱 Socials Twitter: https://twitter.com/betterstackhq Instagram: https://www.instagram.com/betterstackhq/ TikTok: https://www.tiktok.com/@betterstack LinkedIn: https://www.linkedin.com/company/betterstack 📌 Chapters:
