Axios 해킹: 계정 탈취 3시간이 17만 4천 패키지에 미친 영향
2026년 3월 30일, Axios 유지보수자 계정에 접근한 공격자가 라이브러리의 악성 버전을 배포해 약 17만 4천 개의 종속 패키지에 영향을 미쳤습니다. 단 3시간 동안 지속된 이번 공격은 종속성 관리 프로세스와 보안 도구의 사각지대 덕분에 가능했습니다. 어떻게 일어났는지, 그리고 어떻게 보호할 수 있는지 자세히 살펴보겠습니다.
공격 메커니즘: 계정 탈취에서 RAT까지
사건은 jasonsaayman 계정(Axios 리드 유지보수자)의 이메일을 [email protected]로 변경하고 신뢰할 수 있는 OIDC 파이프라인에서 direct CLI-publish로 전환하면서 시작됐습니다. 이러한 변경은 Elastic Security Labs의 공급망 모니터링을 통해 자동으로 감지됐습니다. 악성 버전 Axios 1.14.1(latest 태그)과 0.30.4(legacy 태그)에는 의심스러운 종속성 plain-crypto-js가 포함되어 있었습니다.
공격자는 두 단계 전략을 사용했습니다:
- [email protected] — 이전에 게시된 합법 버전으로 히스토리를 생성
- [email protected] — postinstall 훅으로 sfrclak[.]com:8000 서버에서 RAT를 로드하는 악성 버전
공격의 핵심 특징은 Axios 소스 코드 수정이 없다는 점입니다. 대신 공격자는 종속성 목록에 악성 패키지를 추가했습니다. RAT는 크로스플랫폼으로 C2 서버에 연결된 후 macOS, Windows, Linux에 대한 완전한 원격 액세스를 제공합니다.
표준 보안 도구가 실패한 이유
대부분의 CI/CD 파이프라인은 여러 이유로 위협을 감지하지 못했습니다. 패키지를 CVE 데이터베이스와 비교하는 npm audit는 새로운 버전이 알려진 취약점에 아직 등재되지 않아 깨끗한 상태를 반환했습니다. 이 도구는 근본적으로 계정 탈취를 통한 신규 공격을 감지하도록 설계되지 않았습니다 — 알려진 CVE만 처리합니다.
많은 팀의 프로세스에서 치명적인 실수는 고정된 종속성 버전 부재입니다. ^1.x.x를 사용할 때 파이프라인은 자동으로 latest로 해결되어 3시간 창구 동안 악성 버전을 끌어당겼습니다. OpenSSF Scorecard 2024에 따르면 20% 미만의 프로젝트만 고정 종속성 해시를 사용합니다. transitive dependencies(빌드 타임에만 필요한 패키지)는 잠재적 위협임에도 검사 범위 밖에 있습니다.
새로운 공급망 보안 규칙
Axios 사건은 전통 보안 모델의 시스템적 허점을 드러냈습니다. 이전에는 팀 리드(모듈 선택), DevOps(배포), 보안 팀(SAST/DAST)이 책임을 분담했습니다. 하지만 유지보수자 계정 무결성 모니터링은 누구도 맡지 않았습니다. 서명된 패키지에 대한 신뢰는 특정 계정에 묶여 있었는데, 이는 탈취될 수 있습니다.
취약점 규모는 생태계 내 Axios의 지배력으로 설명됩니다: 주간 1억 다운로드와 17만 4천 종속 패키지. 전형적인 Node.js 프로젝트는 40~60개의 직접 종속성을 가지며, 각 패키지가 5~7개의 transitive dependencies를 끌어당겨 200개 이상의 별도 계정 소유 패키지가 됩니다. 이들의 보안은 종종 무시됩니다.
위협 확대에서 AI의 역할
현대 공격은 국가 후원과 AI 활용을 특징으로 합니다. 이 경우 귀속은 북한 위협 행위자(Google Cloud Threat Intelligence)로 지목됩니다. 신경망은 오픈소스 취약점 사냥을 가속화합니다: 예전엔 몇 시간 걸리던 일이 이제 몇 분입니다.
Google Project Zero(2023)에 따르면 취약점 발견에서 패치까지 중간 시간은 25일입니다. AI는 보안 팀 성장 속도보다 공격자의 취약점 탐색 시간을 더 빠르게 단축합니다. 오픈소스 미감지 취약점은 수백만 건에 달해 공격자들이 활용할 광대한 영역을 만듭니다.
효과적인 보호 조치
이번 공격은 표준 보안이 아닌 Elastic Security Labs의 행동 모니터링으로 중지됐습니다. 유사 사건을 막기 위해 CI/CD에 다음을 구현하세요:
- 고정 버전 —
npm install --frozen-lockfile사용하고 package-lock.json을 커밋 - 서명 검사 —
npm audit signatures로 SLSA provenance 검증 - 종속성 SAST — 설치된 패키지에 대한 정적 분석
- 자동 알림 — CVE 추적을 위한 Dependabot
- 메타 모니터링 — 이메일 변경, 게시 방법, 종속성 히스토리 분석
대기업은 이미 DevSecOps에서 이러한 관행을 도입하고 있습니다. 영향을 받은 패키지 대부분을 차지하는 소규모 프로젝트는 복잡성과 자원 부족으로 이를 무시하는 경우가 많습니다.
주요 교훈
- 서명 확인이 중요 — 게시 방법이 OIDC에서 CLI로 전환된 것을
npm audit signatures로 즉시 감지할 수 있습니다. - Transitive Dependencies도 위협 — 프로덕션에 도달하지 않는 패키지도 빌드 단계에서 악성 코드를 실행할 수 있습니다.
- 행동 분석이 CVE 검사보다 우월 — 신규 공격에서 메타데이터(이메일, 게시 히스토리) 모니터링이 취약점 데이터베이스보다 더 중요합니다.
- 버전 고정이 핵심 — ^1.x.x 사용을 중단하면 악성 latest 버전의 자동 끌어당김을 막을 수 있습니다.
Axios 사건은 전환점이 됐습니다: 보안 경계는 이제 타사 코드와 유지보수자 계정을 포함합니다. 프로세스를 적응시키지 않으면 표적 공급망 공격에 취약해집니다. 응답 시간은 이제 시간 단위로 줄었으니 보호는 모든 단계를 자동으로 커버해야 합니다.
— Editorial Team
아직 댓글이 없습니다.