SK쉴더스 로고
ADT캡스캡스홈
SK쉴더스

Axios npm 패키지 공급망 공격 인사이트 보고서

위협 트렌드 | 2026.04.01
Axios npm 공급망 공격 인사이트 보고서 — 2026.03.31
CRITICAL Supply Chain Attack North Korea-nexus

Axios npm 패키지 공급망 공격
인사이트 보고서

발행일 2026-04-01  ·  사고 발생 2026-03-31 UTC  ·  분류 Supply Chain / RAT / Credential Compromise

2026년 3월 31일(UTC 기준) 자바스크립트 생태계에서 가장 널리 사용되는 HTTP 클라이언트 라이브러리인 axios의 npm 관리자 계정이 탈취되어, 악성 버전 두 개(1.14.1, 0.30.4)가 공식 레지스트리에 배포됐다. 악성 패키지에는 Windows·macOS·Linux를 모두 지원하는 크로스플랫폼 원격 접속 트로이목마(RAT)가 포함됐으며, Google Threat Intelligence Group(GTIG)은 이 공격을 북한 연계 위협 행위자 UNC1069의 소행으로 귀속했다. 악성 버전은 배포 후 2시간 54분 만에 npm 측에 의해 제거됐다.

2시간 54분 악성 버전 노출 시간
~1억 건/주 axios 주간 다운로드 수
v1.14.1
v0.30.4
감염된 버전
UNC1069 귀속 위협 행위자 (Google GTIG)
01

사고 타임라인

3월 30일
사전 준비
악성 의존성 사전 배치
공격자는 공격 하루 전, [email protected]이라는 이름의 무해해 보이는 패키지를 npm에 먼저 게시하여 탐지 우회를 준비했다. 이 패키지는 정상 라이브러리 crypto-js를 모방한 것이었다.
3월 31일
00:21 UTC
관리자 계정 탈취 및 악성 버전 배포
공격자는 axios 핵심 관리자인 jasonsaayman 계정의 npm 장기 액세스 토큰을 탈취하고, 계정 이메일을 공격자 소유 Proton Mail 주소([email protected])로 변경했다. 이후 npm CLI를 통해 [email protected][email protected]를 직접 배포했다. 두 버전은 GitHub Actions를 거치지 않아 GitHub 저장소에 흔적이 남지 않았다.
3월 31일
~00:21 직후
악성 패키지 배포 시작 — latest/legacy 태그 동시 적용
공격자는 latestlegacy 태그 모두에 악성 버전을 지정해, npm install axios를 실행하는 모든 사용자가 악성 버전을 받도록 했다. 변경 사항은 package.json 내 의존성 추가 뿐이어서 소스 코드 diff 분석으로는 탐지가 어려웠다.
3월 31일
설치 시점
RAT 설치 자동 실행
plain-crypto-jspostinstall 훅이 트리거되어 백그라운드에서 난독화된 드로퍼 setup.js가 실행됐다. 이 스크립트는 OS를 탐지한 뒤 플랫폼별 WAVESHAPER.V2 백도어 페이로드를 원격 C2 서버(sfrclak[.]com:8000)에서 내려받아 실행했다.
3월 31일
03:15 UTC경
Socket.dev 등 보안 연구진 탐지 및 신고
보안 플랫폼 Socket.dev가 이상 의존성을 탐지하여 공개 경고를 발령했다. StepSecurity, Huntress 등 다수의 보안 기업이 독립적으로 분석 결과를 공유했다.
3월 31일
03:15 UTC
npm, 악성 버전 삭제 완료
배포 후 정확히 2시간 54분이 지난 시점에 npm이 [email protected][email protected]를 레지스트리에서 제거했다. Andrej Karpathy(@karpathy)도 자신의 시스템에서 해당 버전을 감지했다는 사실을 SNS에 공개했다.
3월 31일
이후
Google GTIG, 북한 연계 UNC1069 귀속 발표
Google Threat Intelligence Group이 WAVESHAPER.V2 백도어의 코드 특성과 C2 인프라의 과거 사용 패턴을 분석하여, 이번 공격을 2018년부터 활동 중인 북한 연계 금전 목적 위협 행위자 UNC1069의 소행으로 공식 귀속했다. Vercel, Arctic Wolf, Halborn 등도 분석 보고서를 잇따라 공개했다.
02

공격 기법 상세 분석

이번 공격은 크게 세 단계(계정 탈취 → 악성 패키지 배포 → RAT 실행)로 구성된 정교한 소프트웨어 공급망 공격이다.

⚠ OIDC Trusted Publishing 우회
jasonsaayman 계정은 GitHub Actions의 OIDC Trusted Publishing이 활성화돼 있었으나, 해당 워크플로우가 NPM_TOKEN 환경 변수를 함께 전달하고 있었다. npm은 OIDC보다 NPM_TOKEN을 우선시하므로, 공격자는 탈취한 장기 액세스 토큰만으로 OIDC 검증을 완전히 우회할 수 있었다.

postinstall 훅 (악성 실행 트리거)

// [email protected] / package.json "scripts": { "postinstall": "node setup.js" }

OS별 페이로드 동작 방식

OS 드로퍼 동작 저장 경로 C2 통신
Windows powershell.exe%PROGRAMDATA%\wt.exe로 복사 후 숨김 실행. PowerShell 스크립트 다운로드. %TEMP%\6202033.ps1 sfrclak[.]com:8000

POST body:
packages.npm.org/product*
macOS bash/curl로 Mach-O 바이너리 다운로드 후 실행 권한 부여, zsh 백그라운드 실행. /Library/Caches/
com.apple.act.mond
Linux Python 백도어 스크립트 다운로드 후 실행. /tmp/ld.py
흔적 자기 삭제 (Anti-forensics)
드로퍼 setup.js는 페이로드 실행 성공 후 자기 자신을 삭제하고, 변조한 package.json을 원본(package.md에 백업해둔)으로 교체했다. 이로 인해 설치 후 표준 포렌식 분석으로는 감염 여부 확인이 어렵다.

WAVESHAPER.V2 백도어 주요 기능

최종 페이로드인 WAVESHAPER.V2는 C++ 기반(Windows/macOS) 및 PowerShell·Python 변종으로 구성된 백도어다. 주요 기능은 시스템 정보 수집, 디렉터리 열거, 실행 중인 프로세스 정보 탈취, 추가 페이로드 실행 등이다. 획득한 자격증명을 바탕으로 유사한 방식의 추가 공급망 공격을 연쇄적으로 수행하는 것이 최종 목표로 분석된다.

03

연관 악성 패키지

이번 사고와 동일한 악성 의존성(plain-crypto-js)을 활용한 추가 패키지 두 개가 확인됐다.

@shadanai/openclaw @qqbrowser/[email protected] ← node_modules 내 [email protected] 변조본 포함
참고: 위 패키지들은 axios의 악성 버전이 npm에서 제거된 이후에도 별도로 유통됐을 수 있다. 프로젝트의 전이 의존성(transitive dependency)까지 반드시 점검해야 한다.
04

위협 행위자 귀속 — UNC1069 (북한 연계)

Google GTIG 및 Mandiant는 다음 근거를 바탕으로 이번 공격을 UNC1069로 귀속했다.

  • WAVESHAPER.V2는 UNC1069가 과거 활동에서 사용한 WAVESHAPER의 업데이트 버전이다.
  • C2 인프라(sfrclak[.]com) 관련 아티팩트가 UNC1069 과거 캠페인 인프라와 겹친다.
  • UNC1069는 2018년부터 활동 중인 금전 목적의 북한 연계 위협 행위자로, 암호화폐 및 AI 분야를 주요 표적으로 삼아 온 것으로 알려져 있다.
맥락: 이번 공격은 같은 기간 발생한 LiteLLM 악성 코드 주입 사고 이후 불과 일주일 만에 발생했으며, StepSecurity는 이번 공격을 "상위 10개 npm 패키지를 겨냥한 공격 중 가장 정교한 사례"로 평가했다.
05

즉시 조치 사항 (Remediation)

현재 안전한 버전: [email protected] (또는 그 이전 공식 버전) — 1.14.1, 0.30.4는 사용 금지
→ 01
버전 확인 및 즉시 업데이트: npm list axios 또는 npm audit으로 설치된 버전을 확인하고, 감염 버전이 설치된 경우 안전한 버전으로 교체한다.
→ 02
자격증명 전수 교체: 문제의 기간(3월 31일 00:21–03:15 UTC)에 해당 패키지를 설치했거나 CI/CD 파이프라인이 관련된 환경에서는 모든 시크릿, API 키, 접속 토큰을 즉시 폐기 및 재발급해야 한다.
→ 03
개발자 머신·CI/CD 환경 점검: WAVESHAPER.V2 지표 파일(%PROGRAMDATA%\wt.exe, /Library/Caches/com.apple.act.mond, /tmp/ld.py) 존재 여부 및 C2 IP/도메인(sfrclak[.]com) 통신 로그를 확인한다.
→ 04
전이 의존성 감사: axios를 직접 사용하지 않더라도, 다른 패키지가 간접적으로 감염 버전을 가져왔을 가능성이 있다. npm audit 및 SCA 도구를 통해 전체 의존성 트리를 점검한다.
→ 05
npm 계정 보안 강화: 장기 npm 액세스 토큰을 폐기하고, OIDC Trusted Publishing 설정 시 워크플로우에서 NPM_TOKEN을 제거하여 우회 경로를 차단한다. MFA(다중 인증)를 반드시 활성화한다.

06

참고 자료 및 원문 링크

  • #CRITICAL
  • #Supply Chain Attack
  • #North Korea-nexus

관련 서비스

더 많은 보안 인사이트

SK쉴더스 유튜브 채널에서 확인하세요.

SK쉴더스 유튜브 채널에서 확인하세요.
보안 트렌드와 대응방법

매월 뉴스레터로 확인하세요.

매월 뉴스레터로 확인하세요.