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 json
from openai import OpenAI
client = OpenAI(
api_key=xxxxx, # ? 可以通過Higress生成消費者Key實現API key的二次分租
base_url="http://127.0.0.1:8080/v1"
)
completion = client.chat.completions.create(
# model="qwen-max",
# model="gemini-1.5-pro",
model="deepseek-chat", # ? 可以填寫任意模型名稱,Higress根據模型名稱路由到對應供應商
messages=[
{"role": "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 等實時會話的場景十分友好,不會斷开長連接。
標題:
地址:https://www.pressbased.com/post/10873.html