이번에 정말 충격적인 사건이 터졌습니다. 전 세계에서 가장 많이 쓰이는 HTTP 클라이언트 라이브러리 axios가 npm 공급망 공격을 당했습니다.
이번 공격은 단순한 버그가 아니라, maintainer 계정을 해킹해 악성 버전을 직접 배포한 전형적인 Supply Chain Attack입니다.
무슨 일이죠?
- 2026년 3월 31일 (UTC 기준 새벽)
- axios 리드 메인테이너 jasonsaayman의 npm 계정이 해킹당함
- 공격자가 두 개의 악성 버전을 직접
- axios@1.14.1 (latest 태그)
- axios@0.30.4 (legacy 태그)
- npm이 약 2~3시간 만에 해당 버전을 삭제했지만, 이미 많은 CI/CD와 개발 머신이 감염
무서운 점
axios 소스 코드는 하나도 건드리지 않았습니다.
package.json에만 phantom dependency (plain-crypto-js@4.2.1)를 추가했습니다.
npm install 하는 순간 postinstall 스크립트가 자동 실행되어 크로스 플랫폼 RAT(Remote Access Trojan)이 설치됩니다.
공격의 특징
- Windows, macOS, Linux 모두 공격 가능
- 클라우드 키, SSH 키, npm token, AWS credential 등 대량 탈취
- 설치 후 자기 흔적을 지우고 package.json을 정상 버전으로 바꿔 포렌식 회피
- 일부 분석에 따르면 북한 연계 공격 그룹으로 의심 (Sapphire Sleet 등)
확인 방법
# 1. 현재 설치된 axios 버전 확인
npm list axios
# 2. lockfile에서 악성 버전 검색
grep -E "axios@1\.14\.1|axios@0\.30\.4" package-lock.json
# 3. plain-crypto-js도 확인
npm list plain-crypto-js
안전한 버전으로 다운그레이드
npm install axios@1.14.0 # 1.x 사용자
# 또는
npm install axios@0.30.3 # 0.x 사용자
감염이 의심된다면?
- 해당 머신/CI 환경을 즉시 isolated
- 모든 credential 전체 rotate (GitHub, AWS, DB, npm token 등)
- EDR 솔루션 또는 안티바이러스로 전체 스캔
- lockfile을 강제로 clean한 뒤 재설치
axios는 우리 대부분의 프로젝트에 이미 깊숙이 박혀 있는 라이브러리입니다.
지금 당장 프로젝트 전체를 점검해보시죠.