
최근 Trivy 깃허브액션 공격에 이어 Axios 해킹으로 공급망 보안에 대한 경각심이 그 어느때보다 고조되고 있습니다.
주간 다운로드 3억 건의 배신, 당신의 서버가 '좀비'가 될 수도 있습니다
전 세계 자바스크립트 개발자라면 한 번쯤 Axios를 사용해봤을 것입니다. HTTP 요청 처리에 있어 사실상 표준처럼 자리 잡은 이 라이브러리가 이번에는 공급망 공격(Supply Chain Attack)의 진원지가 됐습니다. 단순한 코드 결함이 아닙니다. 북한 연계 해킹 그룹으로 지목된 UNC1069(일명 WAVESHAPER)가 Axios의 공식 npm 관리자 계정을 탈취한 후, 공식 레지스트리에 직접 악성 코드를 심어 배포했습니다.
핵심 요약: Axios 공급망 공격 사태
| 항목 | 내용 |
| 침해 버전 | axios@1.14.1, axios@0.30.4 |
| 주요 위협 | Windows / macOS / Linux 원격 접속 트로이목마(RAT) 설치 |
| 공격 배후 | 북한 연계 위협 행위자 UNC1069 (Google GTIG 분석) |
| 안전 버전 | axios@1.14.0, axios@0.30.3 |
지금 이 순간에도 CI/CD 파이프라인이나 개발 환경에서 npm install 한 번으로 서버의 제어권이 탈취될 수 있습니다. 더 까다로운 점은, 악성 코드가 설치 직후 스스로 흔적을 지우는 안티 포렌식(Anti-Forensic) 기법을 사용한다는 것입니다. 일반적인 로그 검사로는 감염 여부조차 확인이 어렵습니다.
정교한 위장술과 플랫폼별 공격 분석
(1) plain-crypto-js의 정체
이번 공격의 핵심은 '의존성 주입' 기법에 있습니다. 공격자는 Axios 악성 버전에 plain-crypto-js라는 낯선 패키지를 종속성으로 추가했습니다. 이름만 보면 일반적인 암호화 라이브러리처럼 보이지만, 실제로는 외부 C2(Command & Control) 서버에서 RAT(원격 제어 악성 프로그램)를 내려받는 통로였습니다.
공격 경위 - Sonatype 블로그 발췌
2026년 3월 30일과 31일 사이에 공격자들이 axios 관리자와 관련된 npm 게시 계정을 탈취하여 해당 패키지의 악성 버전 두 가지를 배포했습니다.
- axios@1.14.1 (2026년 3월 31일 00:21 UTC에 게시됨)
- axios@0.30.4 (2026년 3월 31일 01:00 UTC에 게시됨)
Sonatype은 두 패키지 모두 를 sonatype-2026-001623 으로 추적했습니다 .
주목할 점은 두 버전 모두 악성 코드를 직접 포함하지는 않았다는 것입니다. 대신, 두 버전 모두 새로 게시된 패키지에 대한 숨겨진 종속성을 도입했습니다 .
- plain-crypto-js@4.2.1 (2026년 3월 30일 23:59 UTC에 게시됨), sonatype-2026-001622 로 추적됨
이 패키지의 이름과 공개 시점을 보면, 의도적으로 합법적인 암호화 라이브러리처럼 보이도록 게시된 것으로 보이며, 이는 초기 분석 단계에서 연구자들을 혼란시키거나 단념시키려는 목적이었을 가능성이 높습니다.
Sonatype은 2026년 3월 31일 01:04 UTC에 해당 패키지를 악성으로 탐지하고 몇 분 만에 플래그를 지정했습니다. Sonatype 의 자동화된 방어 시스템을 사용하는 조직의 경우 , 이러한 신속한 탐지는 개발자 환경에 도달하기 전에 악성 구성 요소의 다운로드를 차단하는 자동 보호 기능을 의미했습니다.
특히 이 공격이 위험한 이유는 postinstall 훅을 악용한다는 점입니다. npm 패키지 설치 과정에서 별도 승인 없이 스크립트가 자동 실행되는 구조를 그대로 이용했기 때문에, 개발자가 의심할 틈이 없었습니다.
(2) 플랫폼별 공격 방식
공격자는 감염된 시스템의 운영체제를 자동으로 식별하여 최적화된 페이로드를 실행하는 방식을 택했습니다.
- Windows: PowerShell 스크립트를 내려받아 %PROGRAMDATA%\wt.exe로 복사 후 숨김 속성으로 실행합니다. 일반 프로세스 목록에서 눈에 띄지 않도록 시스템 경로를 위장합니다.
- macOS: AppleScript를 통해 Mach-O 바이너리를 다운로드하고 /Library/Caches/com.apple.act.mond 경로에 저장해 실행합니다. 시스템 캐시 디렉터리를 위장 경로로 사용한 것이 특징입니다.
- Linux: Python 백도어 스크립트(ld.py)를 다운로드하여 백그라운드에서 데몬 형태로 실행합니다.
세 플랫폼 모두 기존 시스템 경로나 파일명으로 위장하는 공통점이 있으며, 이것이 자동 탐지를 어렵게 만드는 핵심 요인입니다.
내 프로젝트 감염 여부 확인 및 긴급 대응
(1) 확인 방법 (소요 시간: 약 1분)
악성 코드는 실행 직후 로그를 삭제하므로, 반드시 의존성 트리를 직접 확인해야 합니다.
bash
# 1. Axios 버전 확인
npm list axios
# 2. 전반적인 보안 감사
npm audit
# 3. 악성 의존성 직접 확인
ls node_modules | grep plain-crypto-js
plain-crypto-js 디렉터리가 존재한다면, 그 자체로 감염의 증거입니다. 즉시 다음 단계를 진행하세요.
(2) ✅ 긴급 보안 대응 체크리스트
- 패키지 교체: 안전한 버전인 axios@1.14.0 또는 axios@0.30.3으로 즉시 변경하세요.
- 인증 토큰 폐기: 해당 장비에서 사용된 AWS Access Key, npm 토큰, API Key 등 모든 자격 증명을 무효화하고 재발급받아야 합니다.
- 네트워크 차단: 방화벽에서 C2 서버 IP(142.11.206.73) 및 도메인(sfrclak.com)으로의 접속을 즉시 차단합니다.
- 시스템 재구축: 감염이 확인된 개발자 머신이나 self-hosted CI/CD 러너는 초기화 후 재설치하는 것을 권장합니다.
오픈소스 보안, 이제 '신뢰'가 아닌 '검증'의 시대입니다
이번 Axios 해킹 사태는 우리가 매일 의존하는 오픈소스 도구가 언제든 공격의 통로가 될 수 있음을 보여주는 사례입니다. 업데이트 자체를 무조건 신뢰하기보다, 보안 원칙을 먼저 적용하는 습관이 필요한 시점입니다.
향후 공급망 공격 예방을 위한 3대 원칙
- 고정 버전 관리: package.json의 버전 범위를 엄격하게 고정해 예상치 못한 악성 버전 설치를 원천 차단하세요. ^ 또는 ~ 같은 유연한 범위 지정은 공급망 공격에 취약합니다.
- 취약점 스캔 자동화: CI/CD 파이프라인에 npm audit, Snyk, Socket.dev 같은 보안 스캔 도구를 통합하세요. PR 단계에서 의존성 변경을 자동으로 검토하는 것이 이상적입니다.
- MFA 필수 적용: npm을 포함한 모든 패키지 관리 계정에 다단계 인증(MFA)을 적용해 계정 탈취 위험을 줄이세요. 이번 사건 역시 관리자 계정 탈취에서 시작됐습니다.
보충: 공급망 공격의 증가와 개발 조직이 알아야 할 것
왜 npm 생태계는 반복적으로 공격 대상이 되는가
npm 레지스트리는 하루 수십억 건의 패키지 다운로드가 발생하는 거대한 생태계입니다. 그만큼 공격자 입장에서는 하나의 인기 패키지를 장악하는 것만으로도 수천 개의 프로젝트에 동시에 영향을 미칠 수 있습니다. 실제로 최근 몇 년간 event-stream, ua-parser-js, colors 등 유명 패키지를 대상으로 한 공급망 공격이 반복되어 왔습니다.
이번 Axios 사태가 기존 사례와 다른 점은, 국가 지원 위협 행위자(Nation-State Actor)로 분류되는 UNC1069가 배후로 지목됐다는 것입니다. Google GTIG(Google Threat Intelligence Group)의 분석에 따르면, UNC1069는 북한과 연계된 조직으로 금전적 이익과 정보 수집을 동시에 추구하는 것으로 알려져 있습니다. 단순한 스크립트 키디(Script Kiddie) 수준의 공격이 아니라, 체계적으로 기획된 국가 단위 사이버 작전의 일환으로 봐야 합니다.
SBOM(소프트웨어 자재 명세서)의 중요성
이번 사건을 계기로 SBOM(Software Bill of Materials) 도입을 검토하는 것이 좋습니다. SBOM은 소프트웨어에 포함된 모든 구성 요소와 의존성의 목록을 체계적으로 문서화한 것입니다. 감염된 컴포넌트가 어느 서비스에 포함됐는지를 즉각적으로 파악할 수 있어, 사고 발생 시 피해 범위를 빠르게 특정하고 대응 시간을 단축할 수 있습니다.
미국 행정부는 이미 2021년 사이버보안 행정명령을 통해 연방 시스템에 납품하는 소프트웨어 벤더에게 SBOM 제출을 요구하고 있으며, 국내에서도 금융권과 공공 부문을 중심으로 도입 논의가 활발해지고 있습니다.
개발 조직 차원의 대응 체계 구축
개인 개발자의 주의만으로는 공급망 공격을 완전히 방어하기 어렵습니다. 조직 차원의 대응 체계가 함께 갖춰져야 합니다.
- 의존성 변경 검토 프로세스: 외부 패키지 추가 또는 버전 업그레이드 시, 보안 리뷰를 거치는 프로세스를 정착시키세요.
- 프라이빗 레지스트리 운영: Nexus, Artifactory 등 사내 프라이빗 레지스트리를 통해 검증된 패키지만 사용하도록 제한하는 것도 효과적인 방법입니다.
- 최소 권한 원칙 적용: CI/CD 파이프라인에서 사용하는 자격 증명은 필요한 권한만 부여하고, 정기적으로 로테이션하세요. 탈취된 자격 증명의 활용 범위를 최소화하는 것이 피해를 줄이는 핵심입니다.
작은 의존성 하나가 전체 시스템의 보안을 무너뜨릴 수 있는 시대입니다. 지금 바로 프로젝트의 의존성 트리를 점검해보시길 바랍니다.
Sonatype Repository Firewall을 통해 Nexus Repository에서 원천적으로 유입을 차단할 수 있는 방안에 대한 소개를 희망하실 경우, 아래 양식에 문의를 남겨주세요. Sonatype Repository Firewall 문의하기>>
원문 출처:
Axios Compromise on npm Introduces Hidden Malicious Package
How Sonatype's Container Scanning Protects You From Zero-Days
인기 JS 라이브러리 ‘액시오스’ 해킹... 구글, “배후는 北 해킹 그룹 UNC1069”
axios Compromised on npm - Malicious versions drop remote access Trojan
참고 링크: