2萬Star的開源AI工具遭挖礦木馬入侵 這些隱憂你需要知道
來源:Higress
01 事情經過
OneAPI 是在開源程式碼託管平台 GitHub 上擁有 2萬 Star 的 AI 閘道工具,該工具的用戶發現安裝最新版本鏡像後,會固定消耗一定比例的 CPU[1]。
最終定位是 DockerHub 的映像被投毒,向鏡像植入了 XMR 門羅幣挖礦腳本,導致 CPU 跑高:
目前可以確認是 DockerHub 的推送密鑰洩漏,導致駭客向多個映像版本植入了挖礦腳本:
因為加密貨幣行情的火熱,近年來挖礦腳本相關的安全事件也呈不斷上升趨勢,駭客會找一些流行開源專案的 DockerHub 倉庫進行攻破。
Palo Alto Network 的安全研究員 Aviv Sasson 曾發現了 30 個被植入挖礦木馬的 Docker 鏡像,這些鏡像總共被下載了 2000萬次。 估計幫助駭客挖掘了價值 20 萬美元的加密貨幣。
Docker 映像被注入挖礦腳本並不是個別現象,而是需要重視的安全問題。
02 一些背景知識
2.1. DockerHub
DockerHub 是世界上最大的容器映像託管服務,有來自軟體供應商、開源專案的超過十萬個容器映像。
容器鏡像是一個軟體及其運作環境的完整包。 安裝時,可以省去複雜的設定過程。
容器鏡像託管服務是一個線上平台,用於儲存和分享軟體的容器鏡像。 可以把它看作應用程式的“大商店”,裡面有各種軟體的包裝。
因為 DockerHub 提供免費服務,許多開源軟體專案選擇在這裡發布他們的容器映像。 這使得用戶可以很方便地獲取、安裝和使用這些軟體。
2.2. AI 網關
被駭客植入木馬的 OneAPI 是一款開源的 AI 閘道工具。
隨著 AI 供應商越來越多,LLM 模型的能力也逐漸趨同。 為了解決使用中的各種需求,出現了 AI 閘道這項工具。 AI 閘道能統一接收使用者的問題,然後轉送給不同的 LLM 模型處理。
使用 AI 閘道有幾個常見的使用情境:
提高整體服務的穩定性:當一個模型出問題時,可以切換到另一個模型。
降低成本:可以在適當的時候用便宜的模型取代昂貴的模型,例如使用 DeepSeek 取代 ChatGPT。
並且,這種切換對使用者是無感知的,使用體驗不會受到影響。 透過 AI 網關,可以更靈活高效地利用各種模型資源。 因此被 AI 應用開發者廣泛採納。
03 如何防範類似風險
本文作者是另一款開源 AI 閘道專案 Higress 的維護成員之一。 在關注 OneAPI 時,看到了這個問題,所以向大家分享下 Higress 防範此類風險的相關經驗。
Higress 是由阿里雲開源的網關軟體[1] ,與OneAPI 這款僅支援AI 網關的工具不同,Higress 是基於API 網關的能力之上構建了AI 網關能力,並且由阿里雲API 網關這 款商業產品背後的研發團隊共同維護,而非個人專案。
Higress 一直使用阿里雲容器鏡像服務用於鏡像存儲,並有自己官方的 Helm 倉庫(K8s 環境的安裝包管理)。
使用阿里雲容器鏡像服務至少有兩個好處:
不受 DockerHub 網路封鎖影響,對國內用戶更友好,鏡像拉取速度也更快。
可以進行鏡像安全掃描,自動攔截有風險的鏡像提交
第二點,也是防範開源鏡像投毒的核心,如下截圖所示:
基於阿里雲容器鏡像服務的雲端原生交付鏈功能,可以在鏡像推送之後,立即進行惡意腳本掃描,如若發現風險可以立即刪除鏡像。
此外,每次新版本發布,不依賴人,而是由程式自動完成也很重要。 Higress 社群在每次版本 release 發布後,會透過 GitHub Action 自動製作容器鏡像以及安裝包,鏡像倉庫金鑰基於 GitHub Secret 儲存。 發布版本的權限可以給社區裡其他合作者,但無需提供給合作者鏡像倉庫的密碼。
04 如何防範類似風險快速體驗 Higress AI 網關
Higress AI 閘道支援一行指令安裝:
curl -sS https://higress.cn/ai-gateway/install.sh | bash執行完指令後可以透過命令列初始化配置,可以看到,Higress 的 AI 閘道能力支援對接國內外所有主流 LLM 模型供應商:
也可以選擇跳過這個步驟,到 Higress 的控制台進行設定對應供應商的 API Key:
配置後,就可以直接使用了,例如使用 OpenAI 的 SDK:
import jsonfrom openai import OpenAIclient = OpenAI( api_key=xxxxx, # ?可以透過Higress產生消費者Key實作API key的二次分租 base_url="http://127.0.0.1:8080/v1")completion = clicli 我們. .completions.create( # model="qwen-max", # model="gemini-1.5-pro", model="deepseek-chat", # ? 可以填寫任何模型名稱,Higress根據模型名稱路由到對應供應商 messages=[ ": "user", "content": "你好"} ], stream=True)for chunk in completion: print(chunk.choices[0].delta)可以在監控面板中看到每個模型,以及每個消費者的 token 消耗情況以及呼叫延遲:
此外,相較於 OneAPI,Higress 提供了更多實用的功能,例如:
API Key 治理:支援配置 API Key 池實現多 Key 均衡,API Key 被限流等不可用情況會自動屏蔽,並在可用時自動恢復。
消費者管理:可以透過建立消費者,實現API Key 的二次分租,無需將真正的供應商API Key 暴露給呼叫方,並且可以精細化管理不同消費者的呼叫權限和 調用額度。
兜底模型:支援配置兜底模型,例如當請求 DeepSeek 模型失敗時,自動降級到 OpenAI 模型。
模型灰度:支援模型平滑按比例灰度,可以參考《DeepSeek-R1來了,如何從OpenAI平滑遷移到DeepSeek》。
Higress 的插件市場裡還有很多開箱即用的插件,例如提示詞模版,AI 緩存,數據脫敏,內容安全等等:
插件程式碼也都是開源的,並且支援自己開發插件,支援在網關上熱裝載,對流量完全無損。 這對於 RealTime API 等即時會話的場景十分友好,不會斷開長連接。