![]()
2026年4月5日,JFrog安全團隊在PyPI倉庫里挖出一個叫hermes-px的Python包。它把自己包裝成"安全AI推理代理",承諾通過Tor網(wǎng)絡保護用戶匿名性——結(jié)果裝了它的開發(fā)者,每一句對話都被偷走,真實IP直接暴露在攻擊者眼前。
這個發(fā)現(xiàn)暴露了一個殘酷現(xiàn)實:開源軟件供應鏈的偽裝成本,已經(jīng)低到令人不安的地步。
一個"完美產(chǎn)品"的陷阱設(shè)計
hermes-px的偽裝精細程度遠超普通惡意軟件。它配備了完整的產(chǎn)品矩陣:詳細文檔、安裝指南、代碼示例、從OpenAI Python SDK遷移的教程,甚至還有一個能跑通的檢索增強生成(RAG)流程。
它虛構(gòu)了一家叫"EGen Labs"的公司,API接口設(shè)計和OpenAI官方庫幾乎一模一樣。
目標用戶畫像極其清晰:需要免費、易用、隱私導向的AI工具替代付費SDK的軟件開發(fā)者。這個群體技術(shù)敏感度高,但對"免費+開源"組合往往降低戒心——hermes-px正是利用了這一心理盲區(qū)。
安裝并集成到項目后,開發(fā)者發(fā)出的每一個prompt都在后臺被靜默記錄,界面沒有任何異常提示。更隱蔽的是,README里埋了一個"交互式學習CLI"功能,誘導用戶從GitHub URL直接獲取并執(zhí)行Python腳本。
這為攻擊者開辟了第二條通道:無需發(fā)布新版本,就能實時投遞更新后的惡意載荷。
24.6萬字符的"借來的大腦"
JFrog安全研究員Guy Korolevski團隊在拆解hermes-px時,發(fā)現(xiàn)了一個叫base_prompt.pz的壓縮文件。解壓后內(nèi)容長達246,000字符——幾乎完整復制了Anthropic的Claude Code系統(tǒng)提示詞。
攻擊者試圖做品牌替換:把"Claude"改成"AXIOM-1","Anthropic"改成"EGen Labs"。但替換并不徹底,留下了明顯的拼湊痕跡。
這意味著hermes-px不僅偷用戶數(shù)據(jù),連核心"智力資產(chǎn)"都是偷來的。
系統(tǒng)提示詞是大語言模型的底層指令集,決定了模型的行為邊界和能力范圍。Claude Code的提示詞經(jīng)過Anthropic大量工程優(yōu)化,包含復雜的工具調(diào)用邏輯、安全約束和上下文管理策略。攻擊者直接整段搬運,說明其技術(shù)能力不足以獨立構(gòu)建同等質(zhì)量的AI交互層——但這并不妨礙他們打造一個看起來專業(yè)的產(chǎn)品外殼。
數(shù)據(jù)流向的欺騙性更值得玩味。hermes-px公開承諾"端到端匿名,通過Tor路由所有請求",實際卻把用戶對話直接灌入攻擊者控制的Supabase數(shù)據(jù)庫。更諷刺的是,數(shù)據(jù)外泄完全繞過了Tor,用的是受害者自己的直連網(wǎng)絡——用戶以為自己在隱身,實則IP地址裸奔。
突尼斯最大私立大學的"被借尸還魂"
hermes-px的AI推理能力并非憑空而來。它劫持了突尼斯中央大學(Universite Centrale)的私有AI基礎(chǔ)設(shè)施,讓全球開發(fā)者在不知情的情況下,無償占用這所北非最大私立大學的計算資源。
這種"基礎(chǔ)設(shè)施寄生"模式比傳統(tǒng)挖礦木馬更難察覺。大學端可能只觀察到異常流量峰值,卻難以定位源頭——因為請求來自全球各地的合法開發(fā)者,他們自己也以為是正常的API調(diào)用。
Guy Korolevski在分析報告中指出,這種攻擊的隱蔽性在于"雙向欺騙":對用戶偽裝成隱私工具,對基礎(chǔ)設(shè)施提供方則偽裝成正常學術(shù)或商業(yè)流量。直到JFrog介入調(diào)查,Universite Centrale才意識到自己的AI端點已被濫用多久。
事件時間線顯示,從包上架到被發(fā)現(xiàn),hermes-px在PyPI存活了足夠長的時間來積累用戶。PyPI作為Python生態(tài)的核心倉庫,每天有數(shù)百萬次下載請求,人工審核幾乎不可能覆蓋全部新上傳包。hermes-px的命名、文檔風格和功能演示都經(jīng)過精心設(shè)計,避開了常見的自動化檢測規(guī)則。
供應鏈攻擊的"用戶體驗升級"
傳統(tǒng)惡意軟件往往功能粗糙、文檔缺失,容易被技術(shù)用戶識別。hermes-px代表了一種新趨勢:攻擊者開始投入真實的產(chǎn)品工程資源,把惡意包做得比很多 legitimate 開源項目更"專業(yè)"。
這種"用戶體驗升級"大幅降低了受害者的警覺門檻。一個需要反復調(diào)試才能跑通的工具會讓人生疑,但一個開箱即用、文檔齊全、遷移成本極低的替代品,反而讓人放松警惕。
hermes-px的RAG流程能跑通,說明攻擊者確實投入了可運行的功能代碼,而非純粹的木馬外殼。
這種"功能性惡意軟件"的檢測難度更高。靜態(tài)代碼分析可能把核心功能識別為正常業(yè)務邏輯,動態(tài)行為監(jiān)控也難以區(qū)分"正常的AI服務調(diào)用"和"惡意的數(shù)據(jù)外泄"——畢竟現(xiàn)代AI應用本身就涉及大量云端數(shù)據(jù)交互。
Supabase作為后端的選擇也有講究。這個開源Firebase替代方案提供實時數(shù)據(jù)庫和邊緣函數(shù),攻擊者可以快速搭建數(shù)據(jù)接收端,且流量特征與正常SaaS應用無異。相比自建C2服務器,使用成熟云服務的隱蔽性顯著增強。
開發(fā)者信任的系統(tǒng)性危機
PyPI并非第一次出現(xiàn)惡意包,但hermes-px的精細度標志著威脅升級。它針對的是AI工程這個特定垂直領(lǐng)域——一個技術(shù)迭代極快、工具鏈碎片化嚴重、開發(fā)者持續(xù)尋找更優(yōu)解的場景。
AI推理的成本敏感性加劇了風險。Claude、GPT-4等主流模型的API費用對獨立開發(fā)者和小團隊是不小負擔,"免費替代方案"的需求真實存在。hermes-px精準卡位這個痛點,用"隱私保護"作為差異化賣點,完美契合目標用戶的心理賬戶。
Guy Korolevski團隊的建議很實際:對任何處理敏感數(shù)據(jù)的第三方包,必須審查其網(wǎng)絡行為——而不僅是代碼靜態(tài)結(jié)構(gòu)。hermes-px的核心外泄邏輯并不復雜,但藏在正常的HTTP請求模式里,常規(guī)審計很難發(fā)現(xiàn)。
更深層的困境在于,現(xiàn)代軟件開發(fā)對供應鏈的依賴已經(jīng)不可逆。一個普通AI項目可能依賴幾十個PyPI包,每個包又有自己的傳遞依賴,完整審計的成本遠超個人開發(fā)者或小團隊的承受范圍。
Universite Centrale的遭遇還揭示了另一個盲點:私有AI基礎(chǔ)設(shè)施的安全邊界。大學、企業(yè)內(nèi)部的模型端點往往假設(shè)"知道地址的人才能訪問",但hermes-px證明,一旦端點信息泄露或被猜測,缺乏額外鑒權(quán)機制的基礎(chǔ)設(shè)施會成為攻擊者的免費算力池。
hermes-px被下架后,PyPI上是否還有未被發(fā)現(xiàn)的同類包?攻擊者從這次行動中獲取的數(shù)據(jù)和IP情報,下一步會被如何利用?當你下次在GitHub或技術(shù)社區(qū)看到"免費AI工具"推薦時,會不會多花一秒鐘檢查它的網(wǎng)絡行為?
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.