漏洞概要
- 修復版本:1.120.4、1.121.1、1.122.0 以上
- 公開日期:2025/12/19
這個漏洞的核心問題在於 Expression 的 Sandbox 隔離不足。
Expression 是 n8n 常用的表達式語言 用在動態控制資料,例如:
{{ $now.format('yyyy-MM-dd') }}
會得到今天的日期
2025-12-24
而這個漏洞的意思是:只要擁有「編輯 workflow」權限的使用者, 就能透過特製的表達式執行任意系統指令,進而操控 n8n 主機。不需要管理員權限,攻擊門檻極低。
白話來說,攻擊前提是:攻擊者能登入你的 n8n,並且有 workflow 編輯權限(Editor),才有機會利用 Expression 來觸發風險。
根據公開掃描統計,全球有 超過 10 萬個 n8n 實例可能受影響,且 PoC 攻擊程式碼已在網路上流傳。 雖然資安問題看起來很嚴重,不過如果你的 n8n 不對外開放登入、也沒有其他人帳號/分享 Editor 權限,風險相對較低 但只要有人能登入並編輯 workflow,就要當成高風險。
被攻擊的可能有哪些?
意外分享 n8n 權限給外部使用者
一旦外部使用者擁有 n8n 的編輯權限 他就可以修改 workflow 中的 expression 來執行系統指令 可能會從中竊取資料或執行任意指令 這時候你的 n8n 主機就會被攻擊
另一種帳號的問題 就是原本登入的帳密不小心被別人知道 那他也能登入到你的 n8n 進行編輯
匯入來路不明的模板
這是另一個可能比較容易中招的方式 如果他把惡意的 expression 藏在模板中 那就有可能在你匯入模板並且執行時就會中招!
還好目前問題已經被修復,並且有更新的版本 身為使用者的我們就是去更新 n8n 的版本就能解決問題 下面教大家怎麼檢查版本跟更新版本
如何檢查版本
方法一:從 UI 查看
進入 n8n 後台,點擊左下角的 ❔ icon → About n8n → 就會顯示目前版本
如果版本號在 0.211.0 ~ 1.120.3 之間或是 1.121.0,請立即更新。
方法二:從命令列查看(Docker / npm 常用)
# npm 全域安裝
n8n --version
# Docker(容器內)
docker exec -it <container_name> n8n --version
更新修復方式
Docker 環境
選項 A:升級到 1.x 修復版(推薦,最快速)
# 指定修復版本
docker pull n8nio/n8n:1.122.0
# 重新啟動容器
docker compose down && docker compose up -d
選項 B:升級到 2.x 版本
2.x 有 breaking changes,升級前請先:
- 到 Settings > Migration Report 檢查相容性
- 備份所有 workflows
docker pull docker.n8n.io/n8nio/n8n:latest
docker compose down && docker compose up -d
官方 2.x 遷移指南:n8n v2.0 breaking changes
n8n 2.0 大更新要來了!包含新功能介紹、Migration Report 使用教學、Breaking Changes 詳解

Zeabur 平台
- 進入 n8n 服務,點選上方的「設定」頁籤
- 往下捲動到「來源」區塊,點擊
docker.io/n8nio/n8n那列
- 彈窗中找到「映像標籤」欄位,將版本號改為目標版本後點「儲存」
建議更新原則(以官方公告為準): → 1.x:升級到 1.120.4 / 1.121.1 / 1.122.0(或以上) → 2.x:升級到最新的 Patch 版本
npm 全域安裝(非 Docker)
如果你是用 npm 全域安裝 n8n,建議直接升到修復版本或最新版本:
# 直接升到最新版本
npm i -g n8n@latest
# 或指定升到某個修復版(示例)
npm i -g n8n@1.122.0
常見問題
延伸閱讀
參考資料:







