對於許多開發者來說,Ollama 是在本地端部署大型語言模型(LLM)最方便的工具之一。然而,近期披露的幾個安全性漏洞提醒我們,將 AI 推理服務直接暴露在網路環境中具有極高風險。本文將為工程師詳細分析這兩類漏洞的技術原理及其對實務運作的影響。
記憶體洩漏漏洞:Bleeding Llama (CVE-2026-7482)
這是一個極為嚴重的漏洞,被安全研究人員命名為 Bleeding Llama。其核心問題在於 Out-of-Bounds Read,也就是越界讀取。簡單來說,程式在讀取記憶體時,沒有正確檢查邊界限,導致它讀取到了不應該被訪問的記憶體區域。
技術背景與成因
Ollama 使用 GGUF 格式來儲存模型。GGUF 是為了讓 LLM 能在本地端高效加載而設計的統一格式。在處理 GGUF 檔案時,Ollama 的程式碼中使用了 Go 語言的 unsafe package。
unsafe package 允許開發者繞過 Go 語言原本提供的記憶體安全檢查(Memory Safety),直接操作記憶體位址以追求極致效能。但在這個案例中,漏洞發生在模型加載器的 WriteTo 函數中。當攻擊者上傳一個經過特殊構造的 GGUF 檔案,並在檔案中聲明一個極大且不真實的張量(Tensor)偏移量與大小時,系統會因為相信了檔案中的聲明,而讀取超出實際緩衝區範圍的堆疊記憶體(Heap Memory)。
攻擊路徑與影響
攻擊者可以透過以下三個步驟完成攻擊: 首先,利用 HTTP POST 請求將惡意 GGUF 檔案上傳至暴露在網路上的 Ollama 伺服器。 接著,呼叫 /api/create 接口觸發模型創建流程,此時會觸發越界讀取,將伺服器記憶體中的內容讀入模型產物中。 最後,利用 /api/push 接口將包含洩漏資訊的模型產物推送到攻擊者控制的倉庫。
這次洩漏的內容可能包含環境變數、API 金鑰、系統提示詞(System Prompts),甚至是其他併發使用者的對話數據。如果工程師將 Ollama 與 Claude Code 等工具整合,所有工具的輸出都會經過 Ollama 伺服器並暫存在記憶體中,這意味著企業的專有代碼或客戶合約都有可能被盜取。
Windows 平台的持久化執行漏洞 (CVE-2026-42248, CVE-2026-42249)
除了記憶體問題,Ollama 的 Windows 版本在更新機制上存在兩個可以被串聯(Chain)起來的漏洞,最終導致遠端代碼執行(RCE)且具備持久化特性。
漏洞一:缺乏簽名驗證 (CVE-2026-42248) 在 macOS 版本中,更新二進位檔會經過簽名驗證,但 Windows 版本卻缺少此機制。這意味著只要攻擊者能控制更新伺服器,就能讓客戶端下載並安裝未經授權的惡意程式。
漏洞二:路徑穿越 (CVE-2026-42249) Windows 更新程式在創建臨時安裝目錄時,直接使用了 HTTP 回應標頭中的路徑,而沒有進行適當的清理(Sanitization)。這允許攻擊者利用路徑穿越(Path Traversal)技巧,將檔案寫入到系統的其他位置。
攻擊實務脈絡
當這兩個漏洞結合時,攻擊者可以將惡意執行檔直接寫入 Windows 的啟動資料夾(Startup folder)。由於缺乏簽名檢查,該檔案會被保留在系統中。每當使用者登入 Windows 時,系統會自動執行該惡意程式,從而實現持久化攻擊。
這種攻擊的風險在於它運行在當前使用者的權限等級,足以執行反向 Shell(Reverse Shell)、竊取瀏覽器金鑰或 SSH 私鑰。
實務防禦建議
針對上述漏洞,建議採取以下工程防護措施:
第一,立即更新。將 Ollama 更新至 0.17.1 或更高版本以修復 Bleeding Llama 漏洞。
第二,禁止直接暴露 API。Ollama 的 REST API 原生不提供身份驗證機制。絕對不要將 11434 端口直接對外開放,應在前端部署身份驗證代理(Authentication Proxy)或 API 閘道(API Gateway)。
第三,網路隔離。將 AI 推理伺服器放置在防火牆後方,僅允許受信任的內部 IP 訪問。
第四,Windows 用戶臨時對策。在官方完全修復 Windows 持久化漏洞前,建議關閉自動更新功能,並檢查並清除 %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup 資料夾中不必要的 Ollama 快捷方式。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。