2026년 3월 31일에 크게 화제가 된 axios 공급망 공격 사건을 개발자가 아닌 사람도 이해할 수 있게 풀어 설명하고, package.json의 버전 표기와 감염 이후 대응까지 짚은 영상입니다. npm으로 패키지를 설치해 쓰는 프론트엔드·Node.js 개발자, 그리고 회사 빌드 서버를 관리하는 분께 해당하는 내용입니다. 영상 게시 시점(2026-04-02) 기준의 설명입니다.
무슨 일이 있었나
단테는 먼저 오해를 바로잡습니다. axios라는 프로그램이 원래 악성 코드였던 것이 아니라, 개발자들이 믿고 설치하던 배포 경로에 문제가 생겨서 정상 설치처럼 보이는 과정에 악성 코드가 함께 들어올 수 있었던 사건이라는 것입니다. 정상 쇼핑몰에서 물건을 주문했는데 배송 도중 누군가 상자를 바꿔치기한 상황에 비유했습니다. 겉보기에는 주문한 물건이지만 상자 안에 나쁜 물건이 같이 들어 있는 셈입니다.
axios는 프론트엔드뿐 아니라 Node.js로 HTTP 요청을 보내는 수많은 애플리케이션에서 쓰는 라이브러리입니다. 사람들이 평소처럼 설치하는 동안 짧은 시간에 문제가 된 버전이 배포됐고, 그 사이 설치한 환경에는 악성 코드가 섞여 들어갈 수 있었습니다. 영상에서 문제가 된 버전으로 언급한 것은 1.14.1과 0.30.4이며, 그 안에 plain-crypto-js라는 악성 의존성이 들어 있었습니다. 단테는 일반 사용자라면 이름을 외울 필요 없이 "문제 버전 두 개가 있었고 그 안에 나쁜 파일이 숨어 있었다" 정도만 기억해도 충분하다고 했습니다.
왜 위험한가: 공급망 공격
이 사건의 핵심은 사용자가 수상한 파일을 따로 내려받거나 이상한 링크를 누른 것이 아니라, 평소처럼 npm install을 실행했을 뿐인데도 위험할 수 있었다는 점입니다. 피싱이나 스팸 메일과 달리 평소의 정상적인 행동이 공격 통로가 되어, 사용자가 인식하지 못한 채 자기 프로그램 안에 백도어를 설치하는 꼴이 됩니다.
영상은 이 사건이 주목받는 이유를 세 가지로 정리합니다.
- 매우 많이 쓰는 도구라 영향 범위가 넓습니다.
- 링크를 누르지 않아도 설치만으로 감염될 수 있었습니다.
- 설치가 일어나는 곳이 개발자 컴퓨터나 회사 빌드 서버라서, 비밀번호와 토큰 같은 중요한 정보가 있을 가능성이 높습니다.
프로그램 하나가 고장 나는 문제가 아니라 그 프로그램을 믿고 쓰던 서버 전체가 영향을 받을 수 있는 구조이기 때문에 공급망 공격이라고 부릅니다. 영상에서는 "프로그램이 배포되는 길목이 뚫린 것" 정도로 이해하면 된다고 설명했습니다.
버전 표기와 자동 업데이트의 함정
예방책으로 단테는 세 가지를 들었습니다. 아무 버전이나 자동으로 받지 말고 버전을 지정해서 쓰기, 설치 목록을 고정해 예상하지 못한 버전이 들어오지 않게 하기, 그리고 패키지를 배포하는 계정과 인증 방식을 강화하기입니다.
특히 package.json의 버전 표기를 자세히 설명합니다. 예를 들어 axios를 1.13.5로 쓰고 있다면 "나는 1.14.1이 아니니 안전하다"고 생각하기 쉽습니다. 하지만 버전 앞에 캐럿(^)이나 틸드(~)가 붙어 있으면 새 버전이 나왔을 때 어디까지 자동으로 올라갈 수 있는지가 달라집니다. 버전은 메이저, 마이너, 패치의 세 자리로 구성되는 시맨틱 버저닝을 따르는데, 많은 프로젝트가 쓰는 캐럿은 메이저 버전은 고정하되 마이너와 패치는 최신으로 올라가는 것을 허용합니다. 그래서 package.json에 ^1.13.5처럼 적혀 있어도 레지스트리에 1.14.1이 올라와 있으면 새로 설치할 때 그 버전이 들어올 수 있습니다.
영상은 마이너 업데이트를 막고 패치 업데이트만 허용하는 틸드 표기, 또는 보안 위협이 없는 특정 버전을 고정해서 쓰는 방법을 제안합니다. 덧붙이면 틸드도 패치 버전은 자동으로 올라가므로, 이번처럼 특정 버전 자체가 오염된 경우까지 확실히 막으려면 정확한 버전을 고정하고 lock 파일을 커밋해 그 파일대로만 설치하는 습관이 함께 필요합니다. 영상이 말한 "설치 목록 고정"이 바로 이 부분입니다.
이미 설치했다면
단테는 문제 버전을 이미 설치했다면 삭제하고 다시 설치하는 것으로 끝나지 않는다고 강조합니다. 문제가 된 시간대에 해당 버전을 실제로 설치했다면 그 컴퓨터나 서버가 이미 노출됐을 가능성부터 생각해야 합니다. 권장하는 대응은 다음과 같습니다.
- 해당 시스템을 잠시 멈춥니다.
- 가능하면 깨끗한 환경에서 다시 만듭니다.
- 그 환경에 있던 비밀번호, 토큰 같은 중요한 정보를 모두 교체합니다.
업데이트 한 번으로 끝났다고 보지 말고, 그 기간에 사고가 났다고 가정하고 조심스럽게 대응해야 한다는 뜻입니다.
정리
- axios 사건은 라이브러리 자체가 아니라 배포 경로가 잠시 뚫려 악성 버전(1.14.1, 0.30.4)이 퍼진 공급망 공격입니다.
- 사용자가 평소처럼 npm install만 해도 감염될 수 있었고, 개발자 PC와 빌드 서버의 비밀 정보가 위험해질 수 있었습니다.
- 캐럿(^) 표기는 마이너·패치 업데이트를 자동으로 허용하므로, 버전을 고정하고 lock 파일로 설치 목록을 묶어 두는 것이 안전합니다.
- 문제 버전을 설치했다면 재설치로 끝내지 말고 시스템을 깨끗이 다시 만들고 비밀번호와 토큰을 교체해야 합니다.
- 이제는 프로그램의 기능뿐 아니라 어떻게 배포되고 설치되는지도 함께 봐야 합니다.

