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

2026-04-01
#Axios#Security#SupplyChainAttack#npm#pnpm#Malware#RAT

Axios Supply Chain Attack

"당신이 믿고 npm install을 누른 그 순간, 서버의 통제권이 넘어갔을지도 모릅니다."

어제(2026년 3월 31일), 자바스크립트 생태계의 심장부인 Axios 라이브러리가 전례 없는 공급망 공격(Supply Chain Attack)을 당했습니다. 메인테이너의 계정이 탈환되었고, 악성코드가 심어진 버전이 배포되었습니다.

단 3시간 동안 벌어진 이 '디지털 학살'의 전말을 분석하고, 지금 당장 여러분의 서버와 개발 환경을 보호하기 위해 취해야 할 액션 아이템을 정리해 드립니다.


📋 긴급 보안 리포트 목차

  1. 어떻게 뚫렸나? 공격자의 침투 경로
  2. 악성코드가 심어졌을 때의 행위 (Payload Analysis)
  3. 🛡️ npm vs pnpm: 왜 pnpm 사용자는 무사했나?
  4. 🚨 확인 방법: 당신도 감염되었는지 체크하는 법
  5. 🛠️ 긴급 조치 가이드: 검토, 폐기, 그리고 재구축

1. 어떻게 뚫렸나? 공격자의 침투 경로

공격자는 Axios의 소스 코드를 해킹한 것이 아닙니다. 대신 배포 권한이 있는 메인테이너의 npm 계정을 노렸습니다.

  • 취약한 계정 탈취: 리드 메인테이너 중 한 명의 계정이 '세션 토큰 탈취' 또는 '패스워드 스프레이' 공격을 통해 장악되었습니다.
  • 교묘한 버전 배포: 공격자는 계정 장악 즉시 axios@1.14.1axios@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. 🛠️ 긴급 조치 가이드: 검토, 폐기, 그리고 재구축

본부장으로서 권고합니다. '수정'하려고 하지 마십시오. **'폐기'**가 답입니다.

  1. 격리 및 재설치: 감염된 장비는 네트워크에서 즉시 차단하고, 3월 30일 이전의 클린 이미지로 재구축하십시오.
  2. 자격 증명 무효화(Revoke): 해당 장비에서 노출된 모든 API 키와 패스워드를 폐기하십시오.
  3. 잠금 파일 롤백: axios 버전을 1.14.0으로 고정하십시오.

🏁 마치며: 보안은 도구의 선택에서부터 시작됩니다.

"어떤 도구를 쓰느냐가 당신의 인프라 생사를 결정지을 수 있습니다."

이번 사태는 pnpm과 같은 현대적인 도구의 보안적 우수성을 증명했습니다. 기술 스택을 결정할 때 편의성뿐만 아니라 '방어적 설계'를 고려하는 혜안을 가지시길 바랍니다.

#Axios사태 #npm보안 #pnpm승리 #공급망공격 #악성코드 #RAT #Nodejs보안 #개발자루틴 #시스템보안 #2026보안대응