[긴급 보안리포트] Axios 공급망 공격 사태: npm 생태계를 뒤흔든 3시간의 기록

"당신이 믿고 npm install을 누른 그 순간, 서버의 통제권이 넘어갔을지도 모릅니다."
어제(2026년 3월 31일), 자바스크립트 생태계의 심장부인 Axios 라이브러리가 전례 없는 공급망 공격(Supply Chain Attack)을 당했습니다. 메인테이너의 계정이 탈환되었고, 악성코드가 심어진 버전이 배포되었습니다.
단 3시간 동안 벌어진 이 '디지털 학살'의 전말을 분석하고, 지금 당장 여러분의 서버와 개발 환경을 보호하기 위해 취해야 할 액션 아이템을 정리해 드립니다.
📋 긴급 보안 리포트 목차
- 어떻게 뚫렸나? 공격자의 침투 경로
- 악성코드가 심어졌을 때의 행위 (Payload Analysis)
- 🛡️ npm vs pnpm: 왜 pnpm 사용자는 무사했나?
- 🚨 확인 방법: 당신도 감염되었는지 체크하는 법
- 🛠️ 긴급 조치 가이드: 검토, 폐기, 그리고 재구축
1. 어떻게 뚫렸나? 공격자의 침투 경로
공격자는 Axios의 소스 코드를 해킹한 것이 아닙니다. 대신 배포 권한이 있는 메인테이너의 npm 계정을 노렸습니다.
- 취약한 계정 탈취: 리드 메인테이너 중 한 명의 계정이 '세션 토큰 탈취' 또는 '패스워드 스프레이' 공격을 통해 장악되었습니다.
- 교묘한 버전 배포: 공격자는 계정 장악 즉시
axios@1.14.1및axios@0.30.4버전을 배포했습니다. 이 버전들은 겉보기에 정상적으로 작동하지만, 내부에 치명적인 의존성을 포함하고 있었습니다.
2. 악성코드가 심어졌을 때의 행위 (Payload Analysis)
이번 공격의 핵심은 package.json에 추가된 숨겨진 의존성인 plain-crypto-js@4.2.1입니다.
🧪 악성코드 실행 프로세스 (Attack Workflow)
graph TD
A[npm install 실행] --> B[plain-crypto-js 설치]
B --> C[postinstall 스크립트 트리거]
C --> D{시스템 환경 감지}
D -- Win/Mac/Linux --> E[C2 서버로 비콘 전송]
E --> F[추가 RAT 페이로드 다운로드]
F --> G[민감 정보 탈취 시작]
G --> H[자체 삭제 및 흔적 인멸]
시스템 내부의 AWS/GCP 자격 증명, SSH 키, npm 토큰 등을 즉시 탈취하여 C2 서버로 전송한 뒤, 자신의 흔적을 지우는 지능형 수법을 사용했습니다.
3. 🛡️ npm vs pnpm: 왜 pnpm 사용자는 무사했나?
흥미로운 점은 이번 공격에서 pnpm을 사용하는 환경은 상대적으로 안전했다는 보고가 잇따르고 있다는 것입니다.
| 매니저 | 감염 여부 | 이유 |
|---|---|---|
| npm | 위험 (감염) | 모든 의존성의 라이프사이클 스크립트(postinstall)를 기본적으로 실행함 |
| pnpm | 안전 (차단) | 기본적으로 의존성의 스크립트 실행이 제한적이며, 엄격한 의존성 격리(Isolation)로 인해 악성 페이로드의 비정상적 접근을 차단함 |
pnpm의 **콘텐츠 주소 지정 저장소(Content-addressable store)**와 엄격한 링크 구조가 공격자의 postinstall 주입 시도를 무력화시킨 것으로 분석됩니다. 현대적인 패키지 매니저의 선택이 보안의 갈림길이 된 셈입니다.
4. 🚨 확인 방법: 당신도 감염되었는지 체크하는 법
지금 바로 터미널에서 다음 명령어를 실행하여 감염 여부를 확인하십시오.
① 패키지 로그 및 잠금 파일 확인
# package-lock.json에서 악성 패키지를 검색합니다.
grep -r "plain-crypto-js" .
위 검색 결과에서 단 하나라도 탐지된다면 해당 환경은 완전히 오염된 상태입니다.
② 네트워크 연결 확인
시스템에서 낯선 외부 IP(공격자 C2 서버)로의 연결이 있는지 확인합니다.
- Linux/Mac:
lsof -i -P | grep -i "ESTABLISHED"
5. 🛠️ 긴급 조치 가이드: 검토, 폐기, 그리고 재구축
본부장으로서 권고합니다. '수정'하려고 하지 마십시오. **'폐기'**가 답입니다.
- 격리 및 재설치: 감염된 장비는 네트워크에서 즉시 차단하고, 3월 30일 이전의 클린 이미지로 재구축하십시오.
- 자격 증명 무효화(Revoke): 해당 장비에서 노출된 모든 API 키와 패스워드를 폐기하십시오.
- 잠금 파일 롤백:
axios버전을1.14.0으로 고정하십시오.
🏁 마치며: 보안은 도구의 선택에서부터 시작됩니다.
"어떤 도구를 쓰느냐가 당신의 인프라 생사를 결정지을 수 있습니다."
이번 사태는 pnpm과 같은 현대적인 도구의 보안적 우수성을 증명했습니다. 기술 스택을 결정할 때 편의성뿐만 아니라 '방어적 설계'를 고려하는 혜안을 가지시길 바랍니다.
#Axios사태 #npm보안 #pnpm승리 #공급망공격 #악성코드 #RAT #Nodejs보안 #개발자루틴 #시스템보안 #2026보안대응