2025年7月2日,SlowMist安全團隊接到一名用戶報案,其Solana錢包資產被盜。調查後發現,受害者由於使用了一個名為“solana-pumpfun-bot”的開源項目,下載了含有惡意代碼的NPM包。調查顯示,該項目的代碼更新異常,且其依賴的“crypto-layout-utils”已被NPM官方下架。
深入分析發現,攻擊者通過偽裝合法項目,誘導用戶運行惡意依賴。這些惡意代碼含有掃描用戶電腦中與錢包或私鑰相關文件的邏輯,進而將敏感信息上傳至攻擊者控制的服務器。整個過程涉及多個GitHub賬號協同操作,增加了攻擊的可信度。
最終,研究表明,此次攻擊利用了社會工程學與技術手段的結合,給開發者和用戶敲響警鐘。建議在操作前仔細審查來路不明的開源項目,並在安全環境中進行調試,以防止敏感數據的洩露。
惡意開源項目植入後門NPM包,竊取用戶私鑰致Solana錢包資產被盜。
作者:Thinking
編輯:Liz
背景概述
2025 年7 月2 日,一名受害者聯繫到慢霧安全團隊,尋求協助分析其錢包資產被盜的原因。事件起因於他前一天使用了一個託管在GitHub 上的開源項目—— zldp2002/solana-pumpfun-bot,隨後加密貨幣資產被盜。
分析過程
我們隨即著手調查此次事件。首先訪問該項目的GitHub 倉庫:https://github.com/zldp2002/solana-pumpfun-bot,可以看到它的Star 和Fork 數量相對較高,但其各個目錄下的代碼提交時間均中心化在三週前,呈現出明顯的異常,缺乏正常項目應有的持續更新軌跡。
這是一個基於Node.js 的項目。我們首先對其依賴包進行了分析,發現其引用了一個名為crypto-layout-utils 的第三方包。
進一步核查發現,該依賴包已被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 數量,引誘更多用戶關注,以便擴大惡意程序的分發範圍。
我們還識別出多個Fork 項目也存在類似惡意行為,其中部分版本使用了另一款惡意包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