이 공격에서 사용된 악성 코드가 바로 ‘Mini Shai‑Hulud’로 불린 공급망 웜이다. 기존의 단일 패키지 변조와 달리, 이 악성코드는 한 번 설치되면 개발자 환경과 배포 파이프라인을 통해 다른 패키지로 스스로 확산할 수 있는 구조였다.
공격 이후 TeamPCP는 웜의 전체 소스코드를 GitHub 저장소 두 곳에 MIT 라이선스로 공개했다. 공개 직후 수십 개의 포크가 생기며 빠르게 확산됐고, 일부 포크는 이미 추가 플랫폼 지원까지 추가한 것으로 보고됐다.
일반적으로 공격 도구는 비밀리에 유통되거나 유출 형태로 퍼지지만, 이번 사례는 공격자가 직접 오픈소스 형태로 배포했다는 점이 특징이다.
방어 측면에서는 다음과 같은 이점이 있다.
반면 공격자에게도 장점이 생긴다.
MIT 라이선스는 코드 수정과 재배포에 거의 제한이 없기 때문에, 다른 공격자가 이 코드를 포크해 새로운 패키지 생태계나 플랫폼에 맞게 변형하기가 매우 쉽다.
즉, Shai‑Hulud는 단순한 악성코드가 아니라 개발자 워크플로를 공격하는 공급망 공격 패턴 자체가 공개된 것에 가깝다.
보안 연구 보고서에 따르면 이 웜은 여러 공급망 공격 기법을 결합하고 있다.
핵심 기능 중 하나는 GitHub Actions 등 CI/CD 환경에서 OpenID Connect(OIDC) 토큰을 탈취하는 것이다.
전통적인 공격처럼 정적 API 키를 훔치는 대신, 공격자는 빌드 파이프라인 실행 중 생성되는 토큰을 가로채 실제 배포 시스템을 가장해 악성 패키지를 게시할 수 있었다.
이번 공격에서 특히 충격적인 부분은 SLSA Build Level 3 출처 인증(provenance)이 포함된 악성 패키지가 배포됐다는 점이다.
즉, 자동화 검증 시스템에서는 해당 패키지가 신뢰된 빌드 파이프라인에서 생성된 정상 아티팩트처럼 보였다는 의미다.
패키지가 설치되면 웜은 개발자 PC와 CI 환경에서 다양한 자격 증명을 수집한다. 보고된 대상에는 다음이 포함된다.
일부 분석에서는 100개 이상의 일반적인 자격 증명 저장 경로를 스캔하는 기능이 확인됐다.
탈취된 토큰과 CI/CD 접근 권한을 이용해 웜은 다른 패키지에 악성 버전을 자동 게시하며 확산할 수 있다.
이 때문에 공격은 단일 패키지 변조가 아니라 연쇄적인 공급망 감염으로 이어질 수 있다.
일부 분석에서는 특정 조건이 충족되면 시스템 데이터를 파괴할 수 있는 와이퍼 성격의 기능이 존재할 가능성도 제기됐다.
이 때문에 감염된 개발 환경은 단순히 패키지를 제거하는 수준이 아니라 완전히 침해된 시스템으로 간주해야 한다는 경고가 나온다.
이번 사건은 갑작스러운 공격이 아니라, TeamPCP의 공급망 공격 활동이 점점 진화하고 있다는 흐름 속에서 등장했다.
Cloud Security Alliance 연구에 따르면 이 그룹은 이미 2026년 4월 29~30일 사이 npm·PyPI·Packagist를 동시에 노린 공격을 수행해 약 1,800개 저장소에 영향을 미친 바 있다.
차이점은 다음과 같다.
이는 공격자들이 소프트웨어 공급망 방어 기술에 빠르게 적응하고 있다는 신호로 해석된다.
보안 업체들은 2026년 5월 11일 이후 감염된 패키지를 설치한 환경을 모두 잠재적 침해 상태로 간주해야 한다고 권고한다.
특히 이번 사건은 다음 사실을 보여줬다.
또한 탈취된 자격 증명은 나중에 추가 공격으로 이어질 가능성이 있다.
보안 팀은 다음과 같은 대응을 우선적으로 수행해야 한다.
또한 웜 소스코드가 공개된 만큼 변형된 공격이나 모방 공격이 등장할 가능성도 높다.
Shai‑Hulud 사건은 현대 소프트웨어 공격이 더 이상 단순한 취약점 악용이 아니라 개발자 워크플로와 자동화 파이프라인 자체를 노리고 있다는 사실을 보여준다.
그리고 공격에 사용된 웜 코드가 공개된 지금, 보안 업계는 같은 청사진을 놓고 방어와 공격이 동시에 발전하는 새로운 국면에 들어섰다.