Axios NPM 공급망 공격 방식 및 API 프로젝트 보호 방법

Ashley Innocent

Ashley Innocent

1 April 2026

Axios NPM 공급망 공격 방식 및 API 프로젝트 보호 방법

TL;DR

2026년 3월 31일, 공격자들은 주간 다운로드 수 8,300만 회를 기록하는 가장 인기 있는 JavaScript HTTP 클라이언트인 Axios의 주요 관리자 npm 계정을 침해했습니다. 그들은 개발자 컴퓨터에서 자격 증명, SSH 키 및 클라우드 토큰을 훔치는 크로스 플랫폼 RAT(원격 액세스 트로이 목마)를 포함하는 악성 버전(1.14.1 및 0.30.4)을 게시했습니다. 즉시 Axios 1.14.0으로 다운그레이드하고, 모든 비밀을 교체하며, 시스템에서 침해 지표를 스캔하십시오.

소개

Axios는 다른 어떤 JavaScript 라이브러리보다 많은 HTTP 요청을 처리합니다. 지난 5년 동안 API 클라이언트를 구축했거나, 엔드포인트를 테스트했거나, 프론트엔드를 백엔드에 연결했다면 아마도 Axios를 사용했을 것입니다.

2026년 3월 31일 00:21 UTC, 위협 행위자가 탈취된 관리자 계정을 통해 Axios 버전 1.14.1을 게시했습니다. 해당 패키지는 합법적인 릴리스와 동일하게 보였습니다. 차이점은 정교했습니다: 86개 파일 중 `package.json`만 변경되었습니다. 하지만 이 단일 파일은 `plain-crypto-js`라는 유령 종속성을 주입하여 `npm install`을 실행하는 모든 컴퓨터에 원격 액세스 트로이 목마를 배포했습니다.

악성 버전은 npm이 이를 제거하기 전까지 약 2~3시간 동안 활성 상태를 유지했습니다. 주간 8,300만 회 다운로드되는 패키지에서 2~3시간이라는 짧지 않은 시간이었습니다.

💡
API를 구축하거나 테스트하는 경우, 이 공격은 여러분의 툴체인을 직접적으로 노렸습니다. Apidog의 내장 HTTP 클라이언트는 API 테스트 워크플로우에서 서드파티 HTTP 라이브러리의 필요성을 제거하여 이러한 전체 공격 표면을 없앱니다. 아래 보안 감사 단계를 따라 하려면 Apidog를 무료로 다운로드하세요.
버튼

이 글은 공격이 어떻게 작동했는지, 시스템이 침해되었는지 감지하는 방법, 그리고 API 팀이 향후 종속성 관리에 대해 무엇을 변경해야 하는지 자세히 설명합니다.

Axios 공급망 공격 전개 방식

타임라인

공격자는 18시간 동안 이 작업을 정밀하게 실행했습니다.

계정 침해 방식

공격자는 Axios의 주요 관리자인 `jasonsaayman` npm 계정을 장악했습니다. 그들은 등록된 이메일을 `ifstap@proton.me`로 변경했습니다. 주요 포렌식 증거는 다음과 같습니다.

이러한 구별은 중요합니다. 조직이 npm 패키지를 게시하는 경우, 릴리스에 OIDC 바인딩 및 CI/CD 출처가 없다는 것은 자동화된 확인을 받을 가치가 있는 위험 신호입니다.

종속성 주입 기술

이것이 이 공격을 교묘하게 만든 이유입니다. 공격자는 Axios 소스 코드를 수정하지 않았습니다. 그들은 `package.json`의 한 줄을 변경하여 `plain-crypto-js@^4.2.1`을 런타임 종속성으로 추가했습니다. 이 패키지는 Axios 코드베이스의 어느 곳에서도 임포트되지 않았습니다. 이것은 `npm install` 중에 `postinstall` 훅을 트리거하기 위해서만 존재했습니다.

바이너리 분석 결과 정밀한 정교함이 확인되었습니다: 패키지의 86개 파일 중 깨끗한 1.14.0 릴리스와 침해된 1.14.1 릴리스 간에는 `package.json`만 달랐습니다.

악성 페이로드의 기능

드로퍼 메커니즘

`plain-crypto-js`의 `postinstall` 훅은 `setup.js`라는 4.2KB 크기의 난독화된 파일을 실행했습니다. 이는 두 가지 난독화 계층을 사용했습니다.

  1. 1단계: 문자열 `"OrDeR_7077"`에서 파생된 키를 사용한 XOR 암호
  2. 2단계: 문자 반전이 포함된 Base64 인코딩

디코딩된 후, 드로퍼는 호스트 운영 체제를 식별하고 플랫폼별 페이로드를 실행했습니다.

플랫폼별 공격 경로

macOS:

AppleScript를 /tmp/6202033에 작성
osascript를 통해 실행
페이로드를 /Library/Caches/com.apple.act.mond로 다운로드

Windows:

PowerShell을 %PROGRAMDATA%\wt.exe로 복사 (지속성 아티팩트)
cscript를 통해 VBScript 드로퍼 실행

Linux:

Python RAT을 /tmp/ld.py로 다운로드
nohup python3를 통해 실행

세 가지 브랜치 모두 플랫폼별 POST 본문을 사용하여 명령 및 제어 서버와 통신했습니다.

RAT(원격 액세스 트로이 목마) 기능

배포된 원격 액세스 트로이 목마는 다음을 지원합니다.

간단히 말해, 공격자는 개발 머신에 대한 완전한 원격 제어 권한을 얻습니다. 그들은 `.env` 파일을 읽고, API 키를 훔치고, SSH 키를 복사하고, 수천 개의 조직에서 클라우드 공급자 토큰을 수확할 수 있습니다.

포렌식 방지: 자체 삭제 페이로드

실행 후, 드로퍼는 세 가지 정리 단계를 수행했습니다.

  1. `setup.js` 자체 삭제
  2. 악성 `package.json` 삭제
  3. 사전에 준비된 `package.md` (버전 4.2.0 보고)를 `package.json`으로 이름 변경

이것은 `npm list`가 페이로드를 실행한 4.2.1 대신 4.2.0 버전을 보고하는 기만 계층을 만들었습니다. 나중에 종속성을 확인하는 개발자는 아무런 문제가 없다고 생각할 것입니다.

이 공격의 배후

Google 위협 인텔리전스 그룹은 Axios 공격을 북한으로 의심되는 위협 행위자 UNC1069의 소행으로 지목했습니다. macOS 악성웨어는 2026년 2월 Mandiant가 추적한 C++ 백도어 WAVESHAPER와 "상당한 유사점"을 보입니다.

북한의 국가 지원 그룹은 공급망 공격에 대한 깊은 경험을 가지고 있습니다. 그들은 역사적으로 침해된 개발자 도구를 사용하여 암호화폐를 훔쳤으며, 이 작전은 동일한 전략을 따릅니다: 널리 사용되는 개발자 도구를 침해하여 수천 개의 조직에서 자격 증명 및 클라우드 인프라에 대한 접근 권한을 얻습니다.

정교함 수준이 주목할 만합니다. 2단계 종속성 주입, 다중 플랫폼 RAT 배포 및 포렌식 방지 정리는 모두 충분한 자원이 투입된 작전을 가리킵니다. 이것은 암호화폐 채굴기를 배포하는 스크립트 키디의 소행이 아닙니다. 이것은 개발자 워크스테이션을 대상으로 하는 정보 작전입니다.

영향을 받았는지 확인하는 방법

1단계: Axios 버전 확인

Axios를 사용하는 모든 프로젝트에서 다음을 실행하십시오.

npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"

이것이 결과를 반환하면 프로젝트가 침해된 버전을 설치한 것입니다.

2단계: 악성 종속성 확인

ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENTIALLY AFFECTED"

드로퍼가 자체적으로 정리했더라도 해당 디렉터리의 존재는 페이로드가 실행되었음을 확인합니다.

3단계: 시스템에서 RAT 아티팩트 확인

macOS:

ls -la /Library/Caches/com.apple.act.mond 2>/dev/null

Linux:

ls -la /tmp/ld.py 2>/dev/null

Windows (PowerShell):

Test-Path "$env:PROGRAMDATA\wt.exe"

4단계: 네트워크 지표 확인

다음으로의 연결을 차단하고 스캔하십시오.

5단계: CI/CD 빌드 로그 확인

2026년 3월 31일 00:21 UTC와 03:15 UTC 사이에 실행된 모든 CI/CD 파이프라인을 검토하십시오. 이 시간 동안 Axios를 해결한 `npm install` 또는 `npm ci` 실행은 빌드 환경에서 드로퍼를 실행했을 수 있습니다.

즉각적인 완화 조치

침해 지표를 발견하면 해당 시스템을 완전히 침해된 것으로 간주하십시오. 다음은 우선순위 목록입니다.

1. Axios 즉시 다운그레이드

npm install axios@1.14.0

또는 0.x 브랜치의 경우:

npm install axios@0.30.3

2. `package.json`에 버전 오버라이드 추가

악성 버전으로의 전이적 해결을 방지합니다.

{
  "overrides": {
    "axios": "1.14.0"
  }
}

Yarn의 경우:

{
  "resolutions": {
    "axios": "1.14.0"
  }
}

3. 악성 패키지 제거

rm -rf node_modules/plain-crypto-js

4. 모든 자격 증명 교체

드로퍼가 컴퓨터에서 실행되었다면 다음이 침해되었다고 가정하십시오.

모든 것을 교체하십시오. RAT가 활성 시간 동안 무엇을 유출했는지 알 방법은 없습니다.

5. 네트워크 수준에서 C2 차단

호스트 파일 또는 방화벽 규칙에 추가하십시오.

echo "0.0.0.0 sfrclak.com" | sudo tee -a /etc/hosts

6. 아티팩트가 발견되면 시스템 재구축

셸 실행 및 파일 시스템 접근 권한이 있는 RAT는 무엇이든 수정할 수 있습니다. 3단계에서 아티팩트를 발견했다면 시스템을 신뢰하지 마십시오. 알려진 양호한 상태에서 재구축하십시오.

API 개발팀을 위한 장기적인 방어책

잠금 파일 사용 및 정확한 버전 고정

Axios 공격은 `^` 셈버 범위(semver ranges)를 악용했습니다. `package.json`에 `"axios": "^1.14.0"`이라고 되어 있다면, npm은 공격 기간 동안 최신 호환 버전인 1.14.1을 해결합니다.

{
  "dependencies": {
    "axios": "1.14.0"
  }
}

정확한 버전을 고정하십시오. 항상 `package-lock.json` 또는 `yarn.lock`을 커밋하십시오. CI/CD에서 `npm install` 대신 `npm ci`를 실행하여 잠금 파일 해결을 강제하십시오.

CI/CD에서 postinstall 스크립트 비활성화

전체 공격은 `npm install` 중에 `postinstall` 훅이 실행되는 것에 의존했습니다. 다음을 사용하여 이를 비활성화할 수 있습니다.

npm ci --ignore-scripts

이것은 네이티브 컴파일이 필요한 일부 패키지를 손상시킬 수 있습니다. 먼저 빌드를 테스트한 다음, `.npmrc`를 사용하여 필요한 패키지에 대해서만 스크립트를 선택적으로 허용하십시오.

ignore-scripts=true

종속성 정기 감사

npm audit
npx socket-security/cli audit

CI/CD에서 이를 게이트로 실행하십시오. 중요 또는 높은 취약점은 빌드를 차단해야 합니다.

HTTP 클라이언트 종속성 노출 영역 축소

이 공격이 제기하는 더 심층적인 질문은 다음과 같습니다: 왜 API 테스트 워크플로우가 침해될 수 있는 서드파티 HTTP 라이브러리에 의존합니까?

Apidog는 API 테스트, 디버깅 및 문서화를 위한 내장 HTTP 클라이언트를 제공합니다. 테스트 스택에 Axios, node-fetch 또는 got이 필요하지 않습니다. HTTP 클라이언트는 플랫폼의 일부이며, 침해될 수 있는 서드파티 종속성이 없습니다.

특히 API 테스트의 경우, HTTP 요청을 Apidog로 이동하면 전체 공격 표면이 제거됩니다.

Apidog를 무료로 사용해보고 API 워크플로우에서 HTTP 라이브러리 종속성을 제거하는 것이 공급망 위험을 어떻게 줄이는지 확인하십시오.

패키지 출처 확인

npm은 이제 Sigstore를 통한 패키지 출처 확인을 지원합니다. 의존하는 패키지가 이를 사용하는지 확인하십시오.

npm audit signatures

악성 Axios 버전에는 OIDC 출처가 없었습니다. CI/CD 파이프라인의 합법적인 릴리스는 빌드 원본에 대한 암호화 증명을 포함합니다. 출처 없이 새 버전이 나타나면 의심해야 합니다.

JavaScript 생태계에 미치는 영향

신뢰 모델이 깨졌다

npm의 신뢰 모델은 관리자 계정 보안에 의존합니다. 단일 침해된 자격 증명은 공격자에게 매주 8,300만 개의 프로젝트가 설치하는 패키지에 대한 제어권을 부여합니다. 2단계 인증이 도움이 되지만, 장기 액세스 토큰은 침해된 개발 환경에서 여전히 도난당할 수 있습니다.

커뮤니티는 여러 구조적 변화를 논의하고 있습니다.

공급망 공격은 둔화되지 않고 있다

이 공격은 RubyGems 분열 사건 및 현재 진행 중인 PyPI 종속성 문제 발생 후 며칠 내에 발생했습니다. 모든 언어 생태계의 패키지 레지스트리는 지속적인 공격을 받고 있습니다. API 개발자는 종속성 트리를 편리함이 아닌 공격 표면으로 생각해야 합니다.

레딧 토론은 이러한 정서를 잘 포착했습니다: “NPM은 오늘날 인터넷의 가장 큰 약점이며 여전히 거대한 재앙을 초래할 것입니다.” 과장된 표현에 동의하든 안 하든, Axios 공격은 그 폭발 반경이 현실임을 보여줍니다.

비교: HTTP 클라이언트 종속성 접근 방식

접근 방식 공급망 위험 유지보수 부담 테스트 기능
Axios + 사용자 정의 스크립트 높음 (서드파티 종속성) 높음 (버전 관리) 수동 설정 필요
Node.js 기본 fetch 낮음 (런타임에 내장) 낮음 제한된 테스트 기능
Apidog 내장 클라이언트 없음 (npm 종속성 없음) 없음 (플랫폼 관리) 완전한 테스트, 모의, 문서화
curl/httpie 스크립트 낮음 (시스템 수준 도구) 중간 제한된 자동화

자주 묻는 질문

Axios는 지금 사용해도 안전한가요?

네. 버전 1.14.0 및 0.30.3은 깨끗합니다. 침해된 버전(1.14.1 및 0.30.4)은 약 3시간 이내에 게시 취소되었습니다. `npm list axios`로 설치된 버전을 확인하고 잠금 파일을 확인하여 안전한 버전을 사용 중인지 확인하십시오.

내 컴퓨터에서 RAT이 실행되었는지 어떻게 알 수 있나요?

플랫폼별 아티팩트를 확인하십시오: macOS의 `/Library/Caches/com.apple.act.mond`, Linux의 `/tmp/ld.py`, 또는 Windows의 `%PROGRAMDATA%\wt.exe`. 또한 프로젝트에 `node_modules/plain-crypto-js`가 있는지 확인하십시오. 드로퍼는 자체적으로 정리하므로, 아티팩트가 없다고 해서 침해된 버전을 설치했다면 안전하다고 보장할 수는 없습니다.

Axios 사용을 완전히 중단해야 하나요?

반드시 그렇지는 않습니다. Axios는 강력한 실적을 가진 잘 관리된 라이브러리입니다. 그러나 이 공격은 서드파티 HTTP 클라이언트가 정말 필요한지 평가하도록 유도해야 합니다. Node.js 18+에는 기본 `fetch`가 포함되어 있습니다. API 테스트의 경우, Apidog와 같은 플랫폼은 이러한 종속성을 제거하는 내장 HTTP 클라이언트를 제공합니다.

프로젝트에서 공급망 공격을 어떻게 방지할 수 있나요?

정확한 종속성 버전을 고정하고, 잠금 파일을 커밋하고, CI/CD에서 `npm ci --ignore-scripts`를 실행하고, 종속성을 정기적으로 감사하고, `npm audit signatures`로 패키지 출처를 확인하고, 종속성 트리를 최소화하십시오. HTTP 통신을 위해 npm 패키지에 의존하지 않는 통합 플랫폼으로 API 테스트 워크플로우를 이동하는 것을 고려하십시오.

이 공격은 Claude 코드 소스 유출과 관련이 있었나요?

두 사건 모두 같은 날(2026년 3월 31일) 발생했지만 관련이 없습니다. Axios 공격은 국가 지원 위협 행위자에 의한 의도적인 공급망 침해였습니다. Claude 코드 유출은 Bun 빌드 도구 버그로 인해 소스 맵이 프로덕션에 배포된 결과였습니다. 우연한 타이밍은 npm 레지스트리 보안 전반에 대한 논의를 촉발했습니다.

Axios 공격의 배후는 누구인가요?

Google 위협 인텔리전스 그룹은 이 공격을 북한으로 의심되는 위협 행위자 UNC1069의 소행으로 지목했습니다. macOS 악성웨어는 Mandiant가 추적한 백도어 WAVESHAPER와 상당한 유사점을 공유합니다. 북한 그룹은 공급망 공격에 대한 광범위한 경험이 있으며, 일반적으로 개발자 자격 증명과 암호화폐 인프라를 노립니다.

몇 명의 개발자가 영향을 받았나요?

악성 버전은 약 2~3시간 동안 활성 상태였습니다. 주간 8,300만 회 다운로드를 고려하면 잠재적 노출은 상당합니다. npm은 공식적인 영향 수를 발표하지 않았습니다. StepSecurity의 런타임 탐지는 `npm install` 시작 후 1.1초 이내에 드로퍼가 C2와 접촉했음을 확인했으며, 이는 종속성 해결이 완료되기 전입니다.

Apidog가 공급망 공격 방지에 도움이 될 수 있나요?

Apidog는 API 테스트, 디버깅 및 문서화를 위한 내장 HTTP 클라이언트를 제공함으로써 주요 공격 벡터 중 하나를 제거합니다. 테스트 워크플로우에 Axios, node-fetch 또는 다른 HTTP 라이브러리를 설치할 필요가 없습니다. 이는 npm 종속성 노출 영역을 줄이고 API 개발 프로세스에 영향을 미치는 침해된 HTTP 클라이언트 패키지의 위험을 제거합니다.

핵심 요약

Axios 공격은 경고 신호입니다. `node_modules`의 모든 종속성은 신뢰 결정입니다. 기본적으로가 아니라 의도적으로 이러한 결정을 내리고 있는지 확인하십시오.

버튼

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요