한국정보기술진흥원
한국정보기술신문
thumbnail

정보기술 · 정보보안 ·

자가복제 웜 'Shai-Hulud', NPM 생태계 대규모 공급망 공격

발행일
읽는 시간2분 4초

주간 다운로드 수 200만 회 '@ctrl/tinycolor' 등 40개 패키지 감염

[한국정보기술신문] 9월 15일 오후, JavaScript 생태계 핵심인 NPM(Node Package Manager) 패키지 저장소에서 대규모 공급망 공격이 발생했다. @ctrl/tinycolor 패키지 4.1.1, 4.1.2 버전을 포함해 총 40개 이상의 패키지가 악성 코드에 감염되었으며, 이 중 @ctrl/tinycolor는 주간 다운로드 수가 약 200만 회에 달하는 인기 라이브러리다. GitHub과 NPM 보안팀은 신속하게 대응하여 악성 버전들을 제거했다.

협업 저장소 토큰 탈취로 시작된 공격

공격은 @ctrl/tinycolor 개발자 개인 계정이 직접 해킹당한 것이 아니라, 과거 협업했던 공유 저장소에서 시작됐다. angulartics2라는 공유 저장소에 여러 사람이 관리자 권한을 가지고 있었고, 해당 저장소에 광범위한 게시 권한을 가진 NPM 토큰이 GitHub Actions 비밀로 저장되어 있었다. 공격자는 이 저장소에 'Shai-Hulud' 브랜치를 강제로 푸시하고 악성 GitHub Actions 워크플로우를 삽입했다. 관리자 권한을 가진 협업자였기 때문에 별도의 검토 과정 없이 워크플로우가 즉시 실행되어 NPM 토큰을 탈취당했다.

이번 공격의 가장 위험한 특징은 자가복제 능력이다. 'Shai-Hulud'로 명명된 이 악성코드는 감염된 패키지가 피해 환경에서 추가 NPM 토큰을 발견하면 자동으로 접근 가능한 모든 패키지의 악성 버전을 게시한다. 감염된 패키지가 설치되면 postinstall 스크립트가 실행되어 TruffleHog 비밀 스캐닝 도구를 사용해 시스템의 민감한 정보를 수집한다. 수집된 데이터는 공개 GitHub 저장소에 'Shai-Hulud'라는 이름으로 업로드되어 공격자가 접근할 수 있도록 한다.

피해 규모와 영향 분석

보안 연구기업들에 따르면 총 187개 이상의 패키지가 이번 공격으로 감염되었으며, 이들 패키지의 주간 다운로드 수는 총 26억 회에 달한다. 감염된 주요 패키지로는 @ctrl/tinycolor 외에도 angulartics2, ngx-toastr 등이 있다. 공격자들은 웹 API를 조작하고 네트워크 트래픽을 변조하여 정당한 채널에서 자신들이 통제하는 지갑으로 암호화폐를 몰래 전환하는 방식으로 조직과 최종 사용자를 표적으로 삼았다.

@ctrl/tinycolor 개발자는 즉시 새로운 정화된 버전을 재배포하여 캐시를 플러시하고 신뢰를 회복했다. 현재 @ctrl/tinycolor는 게시를 위해 2FA(이중 인증)를 요구하도록 설정했으며, 모든 토큰을 폐기했다. 장기적으로는 정적 토큰을 완전히 제거하기 위해 NPM의 신뢰할 수 있는 게시(OIDC) 방식으로 전환할 계획이다. 더 작은 패키지들의 경우 semantic-release를 계속 사용하되 더 엄격한 통제 하에 운영하며, 새로운 기여자는 추가하지 않고 각 저장소는 해당 특정 패키지에 대해서만 게시 권한이 제한된 세분화된 NPM 토큰을 사용할 예정이다.

image.png
sigh.dev 제공

Trend Micro를 비롯한 보안 전문가들은 개발 워크플로우와 민감한 자산을 보호하기 위해 의존성 감사, NPM 계정의 자격 증명 회전, TruffleHog와 유사한 스캐닝 도구 사용 증거 모니터링, 공식 NPM 레지스트리의 권고사항 업데이트 확인을 권고했다. 또한 모든 개발자와 CI/CD 액세스 지점에 다중 인증(MFA)을 강제하고 저장소와 자동화에 영향을 미치는 모든 계정에 최소 권한 원칙을 적용해야 한다고 강조했다.

이번 공격은 NPM 생태계에서 처음으로 성공한 자가복제 공격으로, 지금까지 관찰된 JavaScript 공급망 공격 중 가장 심각한 것 중 하나로 평가된다. 공격의 일관되고 정교한 특성은 오픈소스 소프트웨어 공급망에 대한 증가하는 위협을 보여준다. 이러한 공격들이 지속적 통합 및 배포(CI/CD)의 속도로 전파되고 있어 전체 생태계에 지속적이고 증가하는 보안 문제를 제기하고 있다.

한국정보기술신문 정보기술분과 유상헌 기자 news@kitpa.org