Axios npm 패키지 탈취, 3억 건 다운로드 HTTP 클라이언트의 치명적 공급망 공격
Axios의 npm 계정 탈취를 통해 악성 버전(1.14.1, 0.30.4) 배포, 원격 접근 트로이목마(RAT) 삽입
plain-crypto-js@4.2.1 의존성 주입, postinstall 스크립트를 통한 멀웨어(Malware) 실행 및 C2 서버 연결
공격자는 계정 탈취, 악성 의존성 사전 준비, 코드 난독화(Obfuscation) 등 고도화된 공격 기법 사용
pnpm/bun 사용자는 postinstall 스크립트 실행을 수동으로 승인해야 하므로 피해를 예방 가능
공격 방식: 계정 탈취 및 악성 코드 삽입
공격자는 Axios의 핵심 개발자 계정을 탈취하여 악성 코드를 삽입한 버전을 배포했다. 특히, GitHub Actions CI/CD 파이프라인(Pipeline)을 우회하여 npm CLI를 통해 직접 패키지를 게시했다는 점이 특징이다. 악성 코드는 plain-crypto-js@4.2.1이라는 가짜 의존성을 통해 삽입되었으며, 이 패키지의 postinstall 스크립트는 다중 플랫폼(Multi-Platform)을 타겟으로 하는 RAT를 실행한다.
영향: 3억 건 다운로드 라이브러리의 광범위한 피해
Axios는 주간 3억 건 이상 다운로드되는 JavaScript 생태계의 핵심 라이브러리이므로, 이번 공격의 파급력은 매우 크다. 공격에 성공한 버전은 macOS, Windows, Linux 등 다양한 운영체제를 대상으로 하며, 설치 후 자체 삭제 및 정상 버전으로 위장하는 은폐 기술(Stealth Technique)을 사용한다. 따라서, 감염 여부를 확인하기 어렵게 설계되었다.
대응 방안: 감염 확인 및 추가 피해 방지
만약 axios@1.14.1 또는 axios@0.30.4 버전을 설치했다면, 시스템 감염을 의심하고 즉시 대응해야 한다. 의존성 고정(Dependency Pinning)을 통해 악성 버전으로의 업데이트를 방지하고, plain-crypto-js 패키지를 제거해야 한다. 또한, 감염된 시스템에서는 모든 자격 증명(npm 토큰, AWS 액세스 키 등)을 변경하고, CI/CD 파이프라인에서 악성 버전이 실행된 기록을 확인해야 한다.
보안 강화: 공급망 공격 예방을 위한 노력
이번 공격은 npm 생태계의 공급망 취약성을 여실히 보여준다. StepSecurity는 패키지 릴리스 시점의 보안 검사, 네트워크 트래픽 제한, 그리고 위협 인텔리전스(Threat Intelligence)를 활용하여 공격을 예방할 수 있다고 강조한다. 또한, 2단계 인증(2FA), 최소 릴리스 기간 설정, 그리고 CI/CD 파이프라인에서 --ignore-scripts 옵션 사용 등 개발 환경 전반의 보안 강화가 필요하다.