수백만 명의 개발자들이 사용하는 자바스크립트 생태계가 또 한 번 악성코드 위협에 직면했다. 이번에는 인기 라이브러리들에 암호화폐 탈취를 목적으로 하는 악성 코드가 숨겨져 있어 전 세계 웹과 서버 애플리케이션까지 영향을 받고 있다.
보안 전문가들에 따르면, 이번 사건은 오픈소스 패키지 저장소인 NPM(Node Package Manager)을 겨냥한 소프트웨어 공급망 공격으로, 자바스크립트 및 Node.js 환경을 중심으로 확산 중이다. 공격자는 유명 개발자 ‘qix’의 NPM 계정을 피싱으로 탈취한 뒤, 그가 관리하던 주요 라이브러리들에 악성코드를 포함시킨 버전을 게시했다. 해당 라이브러리는 주 10억 회 이상 다운로드되는 핵심 유틸리티 패키지를 포함하고 있어, 그 영향력은 전례 없이 광범위하다.
특히 이번 악성코드는 ‘크립토 클리퍼’ 유형으로 밝혀졌다. 사용자의 지갑 주소를 가로채고, 이더리움(ETH) 및 솔라나(SOL) 등을 포함한 암호화폐 전송 시 수신 주소를 공격자의 지갑으로 바꾸는 기능이 핵심이다. 심지어 지갑이 설치되지 않은 환경에서는 네트워크 요청 자체를 가로채기 위해 브라우저의 fetch나 HTTP 요청 기능을 교란시켜 비정상적인 주소 교체 알고리즘을 적용한다. 이 과정에서 시각적으로 유사한 지갑 주소를 생성해, 사용자가 피해를 자각하기 어렵도록 설계돼 있다.
이번 공격은 단순한 웹사이트만이 아니라, 데스크톱 앱, 모바일 앱, 서버 프로그램 등 자바스크립트 기반의 다양한 플랫폼을 노린다는 점에서도 위험성이 크다. 악성코드가 숨겨진 대표 패키지로는 ‘chalk’, ‘strip-ansi’, ‘color-convert’, ‘color-name’ 등이 있으며, 대부분 수많은 오픈소스 프로젝트의 하위 종속성으로 자리 잡고 있다.
악성코드는 한 개발자가 자동 빌드 파이프라인에서 "fetch is not defined"라는 오류를 접하면서 우연히 발견됐다. 분석 결과, 공격자는 사용자의 서명 이전 메모리 내 트랜잭션 정보를 실시간 편집해 자금을 탈취하는 고도화된 방식을 사용하고 있었다.
이에 대해 하드웨어 지갑 제조사인 레저의 CEO는 “하드웨어 지갑 사용자라면 서명 전 모든 트랜잭션 내용을 반드시 확인하라”며 “소프트웨어 지갑을 사용하는 경우, 가급적 온체인 트랜잭션은 당분간 자제하라”고 조언했다.
이번 공급망 공격과 관련된 프로젝트들의 대응도 이어지고 있다. 디파이 대표 플랫폼 유니스왑은 “우리는 감염된 패키지 버전을 사용하지 않으므로 사용자 시스템은 안전하다”고 발표했고, 블록스트림 또한 자사는 영향권에서 벗어나 있다고 밝혔다.
NPM 생태계에 대한 공격 빈도는 점차 늘어나고 있으며, 이번 사건은 암호 자산을 주요 타깃으로 삼아 그 위험성을 한층 더 높이고 있다. 전문가들은 “단순한 임의 클릭 한 번이 향후 수백만 원 이상 손실로 이어질 수 있다”고 경고한다.
이번 사건은 단순한 개인 지갑 해킹을 넘어, 전 세계적으로 통용되는 현대 개발 생태계의 보안 구조적 취약성을 드러낸 사례다. 개발자와 사용자 모두 향후 NPM 관련 프로젝트 사용 시 더욱 면밀한 검토가 요구된다는 지적이 나온다.