工作流程自動化平臺n8n修補高風險表達式沙箱漏洞
工作流程自動化平臺n8n近日修補了一項高風險的表達式沙箱漏洞,該漏洞允許具備工作流程編輯權限的使用者藉精簡箭頭函式取得Node.js全域物件,進而在主機執行命令。官方已於n8n 2.31.5與2.32.1完成修補,建議使用者升級至這些版本或後續版本。
背景分析
n8n是一個工作流程自動化平臺,允許使用者將不同網路服務串接成自動化流程,並在流程節點中加入JavaScript表達式,處理前一個步驟傳來的資料。為防止這些程式碼直接接觸伺服器底層環境,n8n設有表達式沙箱,也就是將程式碼限制在特定範圍內執行的隔離機制。
漏洞分析
該漏洞與沙箱處理箭頭函式(Arrow Function)的方式有關。箭頭函式是JavaScript中較精簡的函式寫法,部分省略大括號、直接傳回單一運算式的箭頭函式,過去未套用原有的變數替換與檢查程序。攻擊者可藉此接觸原本應由沙箱隔離的Node.js全域物件,再呼叫作業系統功能。
修補措施
新版已補上檢查程序,確保直接傳回單一運算式的箭頭函式,其中使用的變數會從受限制的資料環境取得,而不是連到n8n主機的Node.js執行環境。開發團隊也加入測試,確認這類表達式無法再取得主機中的Node.js全域物件,也無法藉此透過內建模組執行系統命令。
未來展望
雖然該漏洞並非未登入即可利用,攻擊者還是必須先取得有效帳號,以及建立或修改工作流程的權限,不過,一旦成功利用,原本僅能編輯自動化流程的使用者,就可能以n8n服務程序擁有的權限操作主機。因此,使用者應盡快升級至最新版本,以確保系統安全。
資安建議
無法立即升級的管理員,可暫時限制n8n執行個體的存取,並只讓完全可信任的使用者建立或編輯工作流程,但官方表示這些措施無法完全排除風險。因此,使用者應密切關注官方的安全公告,及時升級和修補,以確保系統安全。同時,使用者也應注意資安知識的更新,了解最新的資安風險和防護措施,共同維護網路安全。
