그 결과, 코드 공개 이후 유사 동작을 하는 npm 패키지 업로드가 빠르게 증가하기 시작했다.
상황을 더 악화시킨 것은 해커 커뮤니티 BreachForums에서 열린 콘테스트였다.
TeamPCP와 포럼 운영진은 Shai‑Hulud을 사용해 가장 큰 오픈소스 패키지 침해를 달성한 참가자에게 약 1,000달러 상당의 모네로(Monero)를 지급하겠다고 발표했다.
평가 기준은 단순했다. 예를 들어 다음과 같은 지표가 사용됐다.
이 방식은 자연스럽게 공격자들이 더 널리 사용되는 패키지를 노리도록 만들었다. 보안 연구자들은 이를 두고 **공급망 공격의 ‘게임화(gamification)’**라고 표현했다. 여러 공격자가 동시에 같은 도구를 사용해 경쟁적으로 공격을 시도하게 된 것이다.
코드 공개 직후 보안 연구자들은 npm에 올라온 여러 의심 패키지를 발견했다. 보고된 사례에는 다음과 같은 이름이 포함됐다.
chalk-tempalte@deadcode09284814/axios-utilaxois-utilscolor-style-utils이 중 최소 하나는 난독화되지 않은 Shai‑Hulud 클론 코드를 포함하고 있었고, 다른 패키지에는 정보 탈취(infostealer) 악성코드나 봇넷 기능이 포함돼 있었다.
코드 공개 후 불과 며칠 만에 이런 패키지가 등장했다는 점은, 공격 도구가 공개될 경우 악성코드 확산 속도가 얼마나 빨라질 수 있는지를 보여준다.
이 캠페인의 핵심 유포 전략 중 하나는 **타이포스쿼팅(typosquatting)**이다.
이는 정상 패키지 이름과 매우 비슷한 이름을 만들어 개발자가 실수로 설치하도록 유도하는 방식이다.
예를 들어:
chalk-tempalte → 실제 패키지 chalk-template과 매우 유사axois-utils → axios 관련 패키지로 착각하기 쉬움npm에서는 의존성이 자동 설치되거나 CI/CD 파이프라인에서 자동으로 빌드가 실행되는 경우가 많다. 이런 환경에서는 단 한 번의 오타나 악성 의존성만으로도 설치 과정에서 공격 코드가 실행될 수 있다.
Shai‑Hulud는 단순한 악성 패키지가 아니라 자기 전파형 공급망 웜이라는 점이 특징이다.
보안 연구자들이 분석한 기능에는 다음이 포함된다.
특히 중요한 점은 웜의 자동 확산 능력이다. 감염된 환경에서 npm 게시 권한 토큰이 발견되면, 악성코드는 해당 계정이 관리하는 다른 패키지에도 자동으로 악성 버전을 배포할 수 있다.
이 때문에 중앙 명령 서버 없이도 생태계 전체로 확산될 수 있는 구조가 만들어진다.
Shai‑Hulud 자체도 이미 위험한 공격이었다. 하지만 두 가지 변화가 위험 수준을 한 단계 끌어올렸다.
1. 공격 프레임워크의 공개
소스코드 공개로 인해 Shai‑Hulud는 특정 공격 그룹의 도구에서 누구나 사용할 수 있는 공격 키트로 변했다.
2. 금전적 경쟁 구조 도입
BreachForums 콘테스트는 공격자들에게 실험과 확산을 장려하는 직접적인 인센티브를 제공했다.
결과적으로 위협 모델은 “하나의 조직화된 공격 그룹”에서 같은 도구를 사용하는 다수의 독립 공격자 집단으로 확장됐다.
Shai‑Hulud 사건은 최근 보안 트렌드를 분명하게 보여준다. 공격자들은 이제 사용자 PC보다 소프트웨어 개발 인프라 자체를 노리고 있다.
예를 들면 다음과 같은 영역이다.
이 인프라 중 하나라도 침해되면, 악성 패키지는 설치 과정에서 실행되고 빌드 시스템의 비밀 정보를 빼내며 수많은 다운스트림 프로젝트까지 영향을 줄 수 있다.
Shai‑Hulud 코드 공개 이후 카피캣 npm 악성코드가 빠르게 등장한 사건은 한 가지 사실을 보여준다.
공격 도구가 공개되는 순간, 공급망 공격은 단일 사건이 아니라 ‘생태계 규모의 문제’로 확장될 수 있다.