Windmill 是一個開源的開發者平台,旨在簡化工作流與腳本的自動化管理。然而,近期安全研究機構 VulnCheck 揭露該平台存在一個高風險漏洞 CVE-2026-29059,且已被駭客在實際環境中利用。對於開發者而言,這個案例非常典型地展示了路徑穿越漏洞如何從一個簡單的讀檔問題,演變成完全控制伺服器的災難。
路徑穿越漏洞的成因與影響
這次漏洞的核心在於 Windmill 的一個 API 端點 get_log_file。這個 API 的設計目的是讓使用者能夠獲取工作紀錄檔,但它在處理檔名參數時缺乏足夠的清理與驗證。
在工程實務中,這被稱為 Path Traversal 或 Directory Traversal(路徑穿越)。當程式直接將使用者輸入的字串與伺服器路徑拼接在一起,而沒有過濾掉如 ../(代表返回上一層目錄)這樣的特殊序列時,攻擊者就可以構造特殊的請求,跳出原本預期的日誌資料夾,進而讀取伺服器上任何該權限可存取的檔案。
最常見的攻擊目標通常是 /etc/passwd,這是一個 Linux 系統檔案,紀錄了系統中的使用者帳號資訊。雖然這不能直接讓駭客進入系統,但它是確認漏洞是否存在且能讀取任意檔案的標準證明。
從讀檔到拿到最高權限的攻擊路徑
單純讀取檔案雖然危險,但這次漏洞最致命的地方在於它可以導致 RCE,即 Remote Code Execution(遠端程式碼執行)。
攻擊者發現,透過路徑穿越,他們可以讀取 /proc/1/environ 檔案。在 Linux 容器環境中,這個檔案儲存了 PID 1 進程的所有環境變數。如果系統管理員設定了名為 SUPERADMIN_SECRET 的環境變數,駭客就能直接從中竊取這個秘密金鑰。
這個 SUPERADMIN_SECRET 扮演著超級管理員的 Bearer Token(一種身分驗證令牌)。一旦駭客拿到這個 Token,就可以偽裝成最高權限的管理員,透過 Windmill 的 Job Preview API 隨意執行任何程式碼。這意味著攻擊者從不需要帳號密碼,就能直接接管整個伺服器。
需要注意的是,SUPERADMIN_SECRET 並非預設開啟。如果管理員沒有設定此變數,漏洞的影響範圍會被限制在任意檔案讀取,而不會直接導致伺服器被完全控制。
實務上的防禦與修補
Windmill 官方已在 1.603.3 版本中修復此問題。修復的核心在於對檔名參數導入 Sanitization(清理機制),確保輸入內容不會包含路徑跳轉符號,強制請求僅能留在指定的目錄內。
對於維運工程師而言,這次事件提供了幾個重要的安全教訓。首先,永遠不要信任使用者的輸入,任何涉及檔案路徑的操作都必須經過嚴格的白名單驗證或路徑正規化處理。其次,敏感資訊如管理員金鑰,應儘量避免儲存在容易被讀取的環境變數中,或採取更嚴格的權限隔離。
除了 Windmill,近期 CISA(美國網路安全與基礎設施安全局)也將多個高危漏洞列入 KEV 目錄,包括 WordPress 的 wp2shell 漏洞以及 Langflow 的遠端執行漏洞。這些漏洞的共同點在於:只要 API 端點缺乏驗證且對輸入處理不慎,攻擊者就能利用公開的 PoC(概念證明程式碼)快速進行大規模掃描與攻擊。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。