
악성 NPM 패키지, 개인 키 탈취로 Solana 사용자 자산 도난당해
작성자: Thinking
편집: Liz
배경 개요
2025년 7월 2일, 한 피해자가 슬로우머스트(SlowMist) 보안 팀에 연락하여 자신의 지갑 자산이 도난당한 원인 분석을 요청했습니다. 이 사건은 전날 GitHub에 호스팅된 오픈소스 프로젝트인 zldp2002/solana-pumpfun-bot를 사용한 후 암호화 자산이 유출되면서 발생했습니다.
분석 과정
저희는 즉시 해당 사례를 조사하기 시작했습니다. 먼저 프로젝트의 GitHub 저장소(https://github.com/zldp2002/solana-pumpfun-bot)에 접속한 결과, Star와 Fork 수치가 비교적 높았지만 각 디렉터리 내 코드 커밋 시간이 모두 3주 전으로 집중되어 있었으며 정상적인 프로젝트가 가져야 할 지속적인 업데이트 기록이 부족해 명백한 이상 징후를 보였습니다.

이 프로젝트는 Node.js 기반입니다. 저희는 먼저 종속 패키지를 분석하였고, 그 중 crypto-layout-utils라는 제3자 패키지를 참조하고 있는 것을 발견했습니다.

추가 확인 결과, 이 종속 패키지는 이미 NPM 공식 사이트에서 삭제되었으며, package.json 파일에 명시된 버전도 NPM 공식 기록상 존재하지 않았습니다. 저희는 이를 의심스러운 구성 요소로 판단했고, 현재 NPM 공식 소스를 통해 다운로드할 수 없습니다. 그렇다면 피해자는 어떻게 이 악성 종속 패키지를 획득할 수 있었을까요?

프로젝트를 더 깊이 파고들어 package-lock.json 파일에서 핵심 단서를 발견했습니다. 공격자는 crypto-layout-utils의 다운로드 링크를 https://github.com/sjaduwhv/testing-dev-log/releases/download/1.3.1/crypto-layout-utils-1.3.1.tgz 로 교체한 것입니다.

저희는 이 의심스러운 종속 패키지인 crypto-layout-utils-1.3.1을 다운로드하여 조사한 결과, jsjiami.com.v7을 사용해 매우 복잡하게 난독화된 코드임을 확인했습니다. 이는 분석 난이도를 크게 증가시켰습니다.


난독화를 해제한 후, 이 NPM 패키지가 악성임을 확인하였습니다. 공격자는 crypto-layout-utils-1.3.1에 피해자의 컴퓨터 파일을 스캔하는 로직을 삽입했으며, 지갑이나 개인 키 관련 내용 또는 파일을 발견하면 공격자가 통제하는 서버(githubshadow.xyz)로 업로드하도록 되어 있었습니다.
악성 NPM 패키지가 민감한 파일 및 디렉토리를 스캔:

악성 NPM 패키지가 개인 키를 포함한 내용이나 파일을 업로드:

저희는 공격 수법을 추가적으로 조사한 결과, 프로젝트 작성자(https://github.com/zldp2002/)가 일련의 GitHub 계정을 장악하여 악성 프로젝트를 포크(Fork)하고 악성 프로그램을 배포하며 동시에 프로젝트의 Fork 및 Star 수를 부풀려 더 많은 사용자를 유인, 악성 프로그램의 유포 범위를 확대한 것으로 추정됩니다.

또한 여러 포크된 프로젝트에서도 유사한 악성 행위를 발견했으며, 일부 버전은 또 다른 악성 패키지 bs58-encrypt-utils-1.0.3을 사용하고 있었습니다.
이 악성 패키지는 2025년 6월 12일에 생성되었으며, 공격자가 당시부터 악성 NPM 패키지 및 악성 Node.js 프로젝트를 유포하기 시작했을 가능성이 큽니다. 그러나 NPM이 bs58-encrypt-utils를 삭제한 이후, 공격자는 NPM 패키지 다운로드 링크를 교체하는 방식으로 유포를 계속한 것으로 보입니다.

또한 저희는 체인상 자금세탁 방지 및 추적 도구인 MistTrack를 활용하여 분석한 결과, 공격자 중 한 명의 주소가 도난한 코인을 거래소 FixedFloat로 이체한 것을 확인했습니다.

요약
본 공격 사건에서 공격자는 합법적인 오픈소스 프로젝트(solana-pumpfun-bot)로 위장하여 사용자가 악성 코드를 다운로드하고 실행하도록 유도했습니다. 프로젝트의 인기를 조작하여 신뢰를 구축함으로써, 사용자는 전혀 경계하지 않은 상태에서 악성 종속 패키지를 포함한 Node.js 프로젝트를 실행하게 되었고, 결국 지갑의 개인 키가 유출되어 자산이 도난당하는 결과를 초래했습니다.
공격 체인 전체는 여러 GitHub 계정이 협업하여 전개되어 유포 범위를 넓히고 신뢰성을 높였으며, 매우 기만적인 특성을 보였습니다. 또한 이러한 공격은 사회공학과 기술 수단을 결합하여 이루어져 조직 내부에서도 완전한 방어가 어렵습니다.
저희는 개발자와 사용자들이 출처가 불분명한 GitHub 프로젝트에 대해 극도의 경계를 가져야 한다고 권고합니다. 특히 지갑이나 개인 키 조작이 필요한 경우 더욱 주의해야 하며, 실제로 실행하거나 디버깅이 필요할 경우 민감한 데이터가 없는 독립된 환경의 기기에서 진행할 것을 권장합니다.
악성 종속 패키지 관련 정보
악성 Node.js 프로젝트의 GitHub 저장소:
2723799947qq2022/solana-pumpfun-bot
2kwkkk/solana-pumpfun-bot
790659193qqch/solana-pumpfun-bot
7arlystar/solana-pumpfun-bot
918715c83/solana-pumpfun-bot
AmirhBeigi7zch6f/solana-pumpfun-bot
asmaamohamed0264/solana-pumpfun-bot
bog-us/solana-pumpfun-bot
edparker89/solana-pumpfun-bot
ii4272/solana-pumpfun-bot
ijtye/solana-pumpfun-bot
iwanjunaids/solana-pumpfun-bot
janmalece/solana-pumpfun-bot
kay2x4/solana-pumpfun-bot
lan666as2dfur/solana-pumpfun-bot
loveccat/solana-pumpfun-bot
lukgria/solana-pumpfun-bot
mdemetrial26rvk9w/solana-pumpfun-bot
oumengwas/solana-pumpfun-bot
pangxingwaxg/solana-pumpfun-bot
Rain-Rave5/solana-pumpfun-bot
wc64561673347375/solana-pumpfun-bot
wj6942/solana-pumpfun-bot
xnaotutu77765/solana-pumpfun-bot
yvagSirKt/solana-pumpfun-bot
VictorVelea/solana-copy-bot
Morning-Star213/Solana-pumpfun-bot
warp-zara/solana-trading-bot
harshith-eth/quant-bot
악성 NPM 패키지:
crypto-layout-utils
bs58-encrypt-utils
악성 NPM 패키지 다운로드 링크:
https://github.com/sjaduwhv/testing-dev-log/releases/download/1.3.1/crypto-layout-utils-1.3.1.tgz
악성 NPM 패키지가 데이터를 업로드하는 서버:
githubshadow.xyz
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News














