수백만 명의 자바스크립트 개발자가 해킹당했습니다... (axios 보안 침해)

BBetter Stack
컴퓨터/소프트웨어경제 뉴스AI/미래기술

Transcript

00:00:00이것은 우리가 지금까지 본 것 중 가장 큰 NPM 공급망 침해 사례 중 하나일 수 있으며,
00:00:03만우절 장난이 아닙니다. 타이밍이 안 좋았을 뿐이며 사람들이 이 사실을 꼭 알아야 합니다.
00:00:07이번 주에만 1억 100만 번 설치된 HTTP 클라이언트인 Axios 패키지에서 발생했습니다.
00:00:13그리고 17만 4천 개 이상의 종속 항목을 가지고 있습니다. 그래서 이미 Datadog,
00:00:18OpenClaw, WordPress와 같은 패키지에 영향을 미쳤으며, 북한 해커와도 연관이 있습니다.
00:00:22그럼 바로 들어가서 무슨 일이 일어났는지 살펴보겠습니다.
00:00:29사건의 전말은 이렇습니다. 2026년 3월 31일, 공격자가 NPM 계정을 탈취했습니다.
00:00:34Axios의 리드 메인테이너 계정으로 두 개의 백도어 버전을 배포했습니다. 최신 릴리스로 태그된
00:00:391.14.1 버전과 레거시로 태그된 0.30.4 버전입니다.
00:00:44이 패키지들에는 "plaincryptojs"라는 유령 종속성을 도입했는데,
00:00:48이것은 본질적으로 일반적인 crypto.js 패키지였지만 한 가지 작은 수정 사항이 있었습니다.
00:00:52바로 setup.js라는 포스트 인스톨 스크립트가 있었습니다. 즉, 이 오염된 패키지를 설치하는
00:00:58모든 사용자와 모든 CI 환경에서 이 스크립트가 실행되었다는 뜻입니다. 스크립트 자체에는
00:01:02사용 중인 운영 체제를 확인한 다음, 서버에 연결하여 해당 OS에 맞는
00:01:07두 번째 페이로드를 다운로드하는 난독화된 코드가 포함되어 있었습니다. 따라서 이 공격으로부터
00:01:12안전한 사람은 없었으며, 공격자들은 심지어 macOS 페이로드가 Intel과 Apple Silicon Mac
00:01:16모두에서 작동하도록 만들었습니다. 그리고 진짜 심각한 것은 바로 이 두 번째 페이로드입니다.
00:01:20이것은 RAT(원격 제어 트로이 목마)이며, 모든 운영 체제에서 기본적으로 동일하게 작동합니다.
00:01:25먼저 문서, 데스크톱, 설정 폴더를 훑으며 파일을 스캔합니다.
00:01:29윈도우 버전은 심지어 OneDrive, AppData 및 시스템의 모든 드라이브 문자를 스캔한 다음,
00:01:33파일 목록을 서버로 다시 전송했습니다. 아마도 훔칠 만한 가치가 있는 것이 있는지 확인하기 위해서였겠죠.
00:01:38그 후에는 비콘(Beaconing)을 시작합니다. 60초마다 여러분의 호스트 이름, 사용자 이름,
00:01:42운영 체제, 시간대, 하드웨어 모델 및 실행 중인 모든 프로세스의 전체 목록을 서버로 보냅니다.
00:01:47이를 통해 공격자는 사용자가 어떤 소프트웨어를 실행 중인지, 그리고 활발히 사용 중인지 확인할 수 있습니다.
00:01:52이 모든 것이 충분히 나쁘지 않게 들린다면, 더 최악인 부분이 남아 있습니다.
00:01:56공격자가 원격으로 네 가지 명령을 내릴 수 있는데, 이를 통해 시스템의 모든 디렉토리를 탐색하고,
00:02:00임의의 쉘 명령이나 스크립트를 실행하며, 추가 맬웨어를 심고 실행하거나,
00:02:05흔적을 지우기 위해 프로세스 전체를 종료할 수도 있습니다. 실제로 공격자들은
00:02:10원래의 셋업 스크립트가 스스로를 삭제하게 만든 다음, 포스트 인스톨 설정이 포함된
00:02:15package.json을 삭제하고 깨끗한 버전으로 교체하여 최대한 감지되지 않도록 설계했습니다.
00:02:19보시다시피 이 해킹은 정말 심각하며, 개발자 워크스테이션과 CI/CD 러너를 타겟으로 하여
00:02:23.env 파일, NPM 토큰, SSH 키와 같은 모든 유형의 비밀 정보를 찾도록 설계되었습니다.
00:02:28이 악성 페이로드를 실행한 모든 시스템은 전체 자격 증명 탈취 시나리오로 간주해야 합니다.
00:02:34이 모든 상황에 더해, 어떻게 NPM 계정이 침해되었는지에 대한 의문도 남아 있습니다.
00:02:38메인테이너는 2단계 인증(2FA)을 사용 중이었고, GitHub Action 파이프라인에도 인증이 활성화되어 있었다고 언급했습니다.
00:02:43따라서 현재로서는 수명이 긴 NPM 액세스 토큰을 사용하여 NPM CLI를 통해
00:02:47패키지가 배포된 것으로 보입니다. 다음 질문은 그들이 어떻게 그 토큰에 액세스했느냐는 것이며,
00:02:53메인테이너는 누군가가 자신의 계정 복구 코드를 얻었을 수도 있다고 생각하지만,
00:02:56어떻게 그렇게 했는지는 현재로서는 완전히 미스터리입니다. 만약 여러분이 이번 사건의
00:03:01영향을 받았는지 확인하고 싶다면, 잠금(lock) 파일에서 영향을 받은 axios 버전과
00:03:04plaincryptojs 패키지를 검색해 보십시오. 또한 node_modules에서 해당 패키지 자체를 검색해 보십시오.
00:03:09만약 발견된다면 불행히도 나쁜 소식입니다. 또한 시스템에서 RAT의 흔적을
00:03:14확인할 수 있으며, 제가 아래에 링크된 전체 분석 글을 남겨둘 테니 절차를 따라 하시고
00:03:18침해되었을 경우 어떻게 해야 할지 확인하십시오. 앞으로는 이러한 공격을
00:03:22예방하기 위해 취할 수 있는 몇 가지 단계가 있습니다. 첫 번째는 항상 잠금 파일을 커밋하고,
00:03:26파이프라인에서 'npm install' 대신 'npm ci' 명령어를 사용하는 것입니다.
00:03:31또한 패키지 관리자에서 최소 게시 기간을 설정하여, 패키지가 설치되기 전
00:03:35최소 48시간이 지난 것인지 확인하는 것이 좋습니다. 이를 통해 악성 패키지가 제때 적발되기를 바라는 것이죠.
00:03:39실제로 이번 Axios 건은 배포 3시간 만에 발견되어 삭제되었습니다. 마지막으로
00:03:44가능하다면 npm install 시 '--ignore-scripts' 플래그를 사용하거나, 기본적으로
00:03:48모든 포스트 인스톨 스크립트를 차단하고 신뢰하는 종속성에서만 실행하는 Bun과 같은 패키지 관리자를 사용하십시오.
00:03:53올해 우리가 보게 될 가장 큰 공격이 이것이기를 바라지만, 점점 더 많은 공격이 발생하고 있으니
00:03:57항상 안전에 유의하시기 바랍니다. 이에 대해 어떻게 생각하시는지 아래 댓글로 알려주시거나
00:04:01구독 버튼을 눌러주세요. 그럼 언제나 그렇듯, 다음 영상에서 뵙겠습니다.
00:04:04시청해 주셔서 감사합니다.

Key Takeaway

Axios 패키지 메인테이너 계정 탈취로 배포된 백도어 버전은 개발자 시스템의 SSH 키와 토큰 등 모든 비밀 정보를 노리며, npm ci와 스크립트 실행 차단을 통해 공급망 공격에 대비해야 합니다.

Highlights

2026년 3월 31일 Axios 메인테이너의 계정이 탈취되어 백도어가 포함된 1.14.1 버전과 0.30.4 버전이 배포되었습니다.

악성 패키지는 plaincryptojs라는 유령 종속성을 통해 모든 OS와 CI 환경에서 작동하는 원격 제어 트로이 목마(RAT)를 설치합니다.

탈취된 시스템은 60초마다 호스트 이름, 사용자 이름, 실행 중인 모든 프로세스 목록을 공격자 서버로 비콘 전송합니다.

공격자는 원격으로 임의의 쉘 명령 실행, 디렉토리 탐색, 추가 맬웨어 설치, 프로세스 종료 등 4가지 핵심 명령을 내릴 수 있습니다.

침해된 Axios 버전은 배포 3시간 만에 발견되어 삭제되었으나, 해당 기간 설치한 모든 시스템은 자격 증명 탈취 시나리오로 간주해야 합니다.

npm install 시 --ignore-scripts 플래그를 사용하거나 Bun과 같은 패키지 관리자를 사용하여 포스트 인스톨 스크립트를 차단함으로써 예방이 가능합니다.

Timeline

Axios 공급망 침해 사고 개요

  • 주간 1억 100만 건 이상 설치되는 Axios 패키지에서 대규모 공급망 침해가 발생했습니다.
  • Datadog, OpenClaw, WordPress 등 17만 4천 개 이상의 종속 항목을 가진 프로젝트들이 이번 공격의 사정권에 들어왔습니다.
  • 이번 사건은 북한 해커 조직과 연관된 정황이 포착되었습니다.

Axios는 자바스크립트 생태계에서 가장 널리 쓰이는 HTTP 클라이언트 중 하나입니다. 이번 공격은 단순한 장난이 아닌 실제 보안 위협이며, 그 파급력은 현재까지 확인된 NPM 공급망 침해 사례 중 가장 큰 규모에 해당합니다. 방대한 종속성 네트워크를 통해 전 세계 수많은 기업과 서비스에 영향을 미쳤습니다.

백도어 유입 경로와 작동 메커니즘

  • 공격자는 리드 메인테이너의 계정을 탈취한 후 1.14.1과 0.30.4 버전에 악성 스크립트를 주입했습니다.
  • plaincryptojs라는 가짜 종속성에 포함된 setup.js 스크립트가 설치 직후 자동으로 실행됩니다.
  • 사용자의 운영 체제를 식별한 뒤 Intel 및 Apple Silicon을 포함한 각 환경에 맞는 2차 페이로드를 다운로드합니다.

공격자는 최신 버전과 레거시 버전을 동시에 공략하여 사용자 층을 넓혔습니다. 설치 후 실행되는 스크립트는 난독화되어 있으며, 서버에 연결하여 각 OS별 최적화된 악성 코드를 가져옵니다. 특히 macOS의 경우 인텔 칩과 애플 실리콘 모두를 지원하도록 설계되어 공격 대상을 가리지 않습니다.

원격 제어 트로이 목마(RAT)의 침투 범위

  • 악성 페이로드는 문서, 데스크톱, OneDrive 폴더를 스캔하여 파일 목록을 탈취합니다.
  • 감염된 시스템은 60초 주기로 사용자 정보와 하드웨어 모델, 실행 중인 프로세스 목록을 외부 서버로 전송합니다.
  • 공격자는 임의의 쉘 명령 실행과 추가 맬웨어 설치를 통해 시스템을 완전히 장악할 수 있습니다.

설치된 RAT는 시스템 전체를 훑으며 가치 있는 정보를 탐색합니다. 윈도우 환경에서는 모든 드라이브 문자와 AppData까지 스캔 범위에 포함됩니다. 공격자는 package.json을 원래 상태로 복구하는 방식을 사용하여 자신들의 흔적을 지우고 감지를 회피하도록 설계했습니다. 주된 목적은 개발자의 .env 파일, NPM 토큰, SSH 키와 같은 민감한 자격 증명을 훔치는 것입니다.

계정 탈취 원인과 사후 대응 방안

  • 2단계 인증(2FA)이 활성화되어 있었음에도 불구하고 수명이 긴 액세스 토큰이나 복구 코드가 유출되어 계정이 탈취된 것으로 추정됩니다.
  • 잠금 파일에서 plaincryptojs 패키지가 포함되어 있는지 확인하여 감염 여부를 파악해야 합니다.
  • 재발 방지를 위해 npm ci 사용, 최소 48시간 이상의 패키지 게시 기간 설정, 포스트 인스톨 스크립트 차단 등의 조치가 필요합니다.

강력한 인증 수단이 있었음에도 공격이 성공한 배경에는 관리 토큰 관리의 취약점이 있었을 가능성이 큽니다. 사고 발생 후 3시간 만에 해당 패키지는 삭제되었지만, 그 사이 설치를 진행한 사용자들은 모든 암호를 변경하고 시스템을 점검해야 합니다. Bun과 같이 기본적으로 스크립트 실행을 제한하는 도구를 활용하는 것도 효과적인 방어 수단입니다.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video