// 威脅簡報
Hermes Agent 內建 MCP 目錄釘選分支而非 commit:上游若被接管,安裝就會執行別人的程式碼
- CVSS
- 9.0 CRITICAL
- CISA KEV
- 未列入
- 弱點類型
- CWE-494
人工審稿 2026-09-24指令測試:未提供漏洞重現:未進行驗證紀錄 ↓
Hermes Agent 內建 MCP 目錄的 n8n 橋接項目指向會變動的分支;若上游儲存庫被接管,安裝時就會執行對方放進去的程式碼。目前沒有遭利用的紀錄。
| 誰會中 | 在 Hermes Agent 0.18.2 以上、0.19.0 以前(日曆版號 2026.7.7.2 至 2026.7.20 前)透過內建目錄安裝或重新安裝 n8n 橋接項目的使用者。2026 年 5 月下旬起、早於 0.18.2 的版本可能也有同樣問題,但官方範圍未涵蓋,尚未確認。 |
|---|---|
| 後果 | 前提是上游儲存庫真的被攻擊者控制。若如此,安裝 n8n 項目時會在你的電腦上以你的權限執行任意程式碼。目前沒有任何來源指出上游曾遭入侵。 |
| 現在該做什麼 | 升級到 Hermes Agent 0.19.0(2026.7.20)以上;檢查是否裝過 n8n 橋接項目,若有,考慮改用 n8n-official 或移除它。查看依據(4)
|
| 受影響版本 | 官方範圍:0.18.2 以上、0.19.0 以前(日曆版號 2026.7.7.2 以上、2026.7.20 以前)。2026-05-26 起納入目錄的更早版本可能也受影響(未確認)。查看依據(4)
|
| 修好的版本 | 0.19.0(2026.7.20)以上查看依據(3)
|
| CVSS 向量 | 顯示完整向量CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H |
| 時間點 |
|
| CISA KEV | 未列入(未列入 KEV 不代表沒有被利用)查看依據(3)
|
藍隊應對手冊
確認、修補 / 緩解、應變、強化。版本符合受影響條件不等於已被入侵;檢查沒有結果也不等於安全,每一項都有能證明與不能證明的範圍。標記的步驟對應下方攻擊流程裡可以擋下攻擊的那一步。
- 01確認是否裝過 n8n 橋接項目
Hermes 把 MCP 伺服器設定放在 ~/.hermes/config.yaml 的 mcp_servers 底下;互動式的 hermes mcp 選單也會顯示每個項目的狀態(可用、已啟用、已安裝但停用)。沒有裝過 n8n 橋接項目,就不在這個問題的範圍內。
唯讀查詢grep -n -i 'n8n' ~/.hermes/config.yaml - 02確認安裝時用的 Hermes 版本
官方受影響範圍是 0.18.2 以上、0.19.0 以前。如果你是在 2026 年 5 月下旬之後、0.18.2 之前的版本安裝,也可能拿到同一個未釘選的項目(未確認)。目前沒有官方公布的入侵指標(IoC),因為沒有已知的入侵事件。
- 01升級到 0.19.0(2026.7.20)以上
修補後 n8n 項目改為固定 commit SHA,並新增測試強制所有目錄清單精確釘選。注意:升級 Hermes 不會替換已經安裝的 n8n 橋接程式。
- 02改用 n8n-official 或移除舊橋接
n8n 橋接項目已於 2026-09-19 從目錄下架,無法再從目錄重新安裝。官方文件指向新的 n8n-official 項目,它透過 HTTP 與 OAuth 連線,不需要本機橋接程式。可在 hermes mcp 選單中解除安裝或停用,或從 config.yaml 刪除。這是 PlainCVE 的建議,不是官方針對本漏洞的指引。
- 01預防性輪替 n8n API 金鑰
若想多一層保障,輪替存放在 ~/.hermes/.env 的 n8n API 金鑰。這是 PlainCVE 的預防性建議,並不代表上游曾遭入侵;目前沒有任何來源這樣說。
完整修復步驟與說明
- 升級不等於清掉舊的 n8n 橋接。 升級到 0.19.0(2026.7.20)以上可修正目錄本身,但已經安裝的 n8n 橋接不會被替換,因為目錄項目不會自動更新。
- n8n 橋接已無法從目錄重裝。 它在 2026-09-19 被下架(commit 8d4abc3 沒有說明安全理由)。既有安裝的設定會保留;要繼續串接 n8n,官方文件指向
n8n-official,它用 HTTP 加 OAuth 連線,不需本機橋接程式。 - 相關檔案位置。 MCP 設定在
~/.hermes/config.yaml的mcp_servers;憑證在~/.hermes/.env。 - 沒有官方的暫時緩解或入侵指標。 因為沒有已知的入侵事件,也沒有來源公布任何 IoC。上方「檢查、改用、輪替金鑰」都是 PlainCVE 的建議,不是 Nous Research 的官方指引。
攻擊流程
從左到右是攻擊發生的順序。藍色盾牌代表這一步可以被擋下,越早擋下越好。點圖示可看細節。
- 攻擊者
(假設情境)攻擊者取得上游儲存庫的控制權
n8n 項目從第三方儲存庫 CyberSamuraiX/hermes-n8n-mcp 安裝。這是利用的前提;沒有任何來源指出這件事真的發生過。
- 攻擊者
把惡意變更推上 main 分支
分支名稱像一張會被移動的書籤,推上新的 commit 後,「main」就指向新的程式碼。
防禦: 改為釘選完整 40 字元的 commit SHA:SHA 固定指向一份已審查的程式碼,無法被上游移動。
- 你的系統
使用者在受影響版本上安裝 n8n 目錄項目
執行 hermes mcp install 時,Hermes 依照清單(manifest)中的 ref: main 抓取程式碼。已裝好的副本不會自動更新,所以風險發生在安裝或重新安裝的當下(PlainCVE 的推論)。
防禦: 升級到 0.19.0(2026.7.20)以上,目錄改用固定 SHA,並有自動測試強制所有項目都要精確釘選。
- 你的系統
Hermes 複製分支並執行 bootstrap 指令
例如建立 Python 虛擬環境、安裝套件。此時上游分支上有什麼,就執行什麼,沒有完整性檢查。
防禦: 安裝前先閱讀清單中的 source: 與 install.bootstrap:(官方文件建議)。
- 你的系統
橋接程式以使用者權限在本機執行
本機 MCP 伺服器就是電腦上的一般程序,若程式碼被換掉,可以做到使用者本人能做的事。
防禦: 只給 stdio 伺服器必要的環境變數;若有疑慮,輪替存在 ~/.hermes/.env 的 n8n API 金鑰。
影響範圍
| 條件 | 是否受影響 |
|---|---|
| Hermes Agent 0.18.2 以上、0.19.0 以前(日曆版號 2026.7.7.2 以上、2026.7.20 以前),並從目錄安裝或重新安裝 n8n 橋接項目 | 受影響(官方範圍) |
| 2026-05-26 之後、0.18.2 之前含 MCP 目錄的版本,並安裝了 n8n 項目 | 可能受影響;程式碼歷史顯示同一個未釘選項目早已存在,但 CVE 紀錄的範圍從 0.18.2 起算,未確認 |
| Hermes Agent 0.19.0(2026.7.20)以上 | 已修補 |
| 從未安裝 n8n 橋接項目 | 不受此問題影響;沒有來源指出其他目錄項目實際受影響 |
要讓風險成真,兩件事必須同時成立:你在受影響版本上安裝了 n8n 項目,而且當時上游儲存庫 CyberSamuraiX/hermes-n8n-mcp 的 main 分支上有惡意程式碼。目前沒有任何來源指出上游曾遭入侵,也沒有遭利用的紀錄;本漏洞未列入 CISA KEV。
原理
Hermes Agent 有一份 Nous Research 核准的 MCP 目錄。MCP(Model Context Protocol)是讓 AI 呼叫外部工具的協定,目錄中的每個項目是一份清單檔(manifest),寫明要從哪裡下載程式碼、要跑哪些安裝指令。使用者執行 hermes mcp install <名稱> 時,Hermes 會複製清單指定的 git 儲存庫、執行 bootstrap 指令(例如建立 Python 虛擬環境、安裝套件),然後把它當成本機程序執行。
問題出在 n8n 項目寫的是 ref: main。main 是一個分支,像一張可以被移動的書籤:上游每推一次新 commit,它就指向新的程式碼。因此 Nous 審查通過的是某一天的程式碼,使用者安裝時拿到的卻是「那個當下分支上的任何東西」,中間沒有任何完整性檢查。這對應 CWE-494(下載程式碼未做完整性檢查)。
有趣的是,建立目錄的 PR #30870 本身就寫明 git 項目要「釘選、絕不浮動於 main」,但它的範例與實際出貨的 n8n 項目卻都用了 ref: main。
有問題的寫法(概念示意,不是原始檔案):
展開程式碼範例(yaml)
source: <第三方 git 儲存庫>
install:
ref: main # 分支,上游可以隨時改變它指向的程式碼修好的寫法:
展開程式碼範例(yaml)
source: <第三方 git 儲存庫>
install:
ref: <完整 40 字元的 commit SHA> # 固定指向一份已審查的快照,無法被移動修補(commit 9df5f87)還加了一個自動測試,檢查每份出貨清單:git 安裝必須用完整 SHA;uvx、npx、pipx、bunx、pnpx 這類套件啟動器必須寫精確版本;走 HTTP 連線的項目例外。文件也建議新釘選的版本至少要發布兩週。
風險發生在安裝或重新安裝的當下。 CVE 描述與 VulnCheck 公告說,上游儲存庫被接管後,惡意程式碼會送到每一台「安裝」受影響目錄項目的主機,之後不需操作者再做什麼。Hermes 文件與 PR #30870 則說目錄項目「從不自動更新」,要重新執行安裝才會更新。兩者並不衝突:安裝時會從上游抓最新的程式碼,而已經裝好的副本不會自己改變。所以要留意的是上游被接管期間的每一次安裝或重新安裝。CVSS 向量中的「需要使用者互動」也與此相符。
時間軸
| 日期 | 事件 |
|---|---|
| 2026-05-26 | MCP 目錄加入(PR #30870),n8n 項目以 ref: main 出貨 |
| 2026-07-07 | 釋出 v0.18.2 / v2026.7.7.2(官方受影響範圍起點;該版說明未提到 MCP 目錄) |
| 2026-07-14 | CNA 標示的公開日期(datePublic) |
| 2026-07-15 | 修補 commit / PR #64463 合併 |
| 2026-07-20 | 釋出 v0.19.0 / v2026.7.20,含修補 |
| 2026-08-28 | CVE 與 VulnCheck 公告公開 |
| 2026-08-31 | CVE 紀錄更新 |
| 2026-09-08 | NVD 最後修改(狀態:Deferred) |
| 2026-09-19 | n8n 橋接項目從目錄下架 |
通報給 Nous Research 的日期不明。發現者為 Helmet Security 的 Zubair Ashraf。
延伸閱讀
- 評分: 唯一的評分來自 CNA VulnCheck:CVSS 4.0 為 9.0(嚴重)、CVSS 3.1 為 8.3(高),是同一個評估在兩套系統下的結果。NVD 沒有自行評分,只把 VulnCheck 的分數列為次要來源,並將條目標為 Deferred。分數高是因為後果是在主機上完整執行程式碼;「攻擊複雜度高」反映攻擊者得先接管上游儲存庫。CVE 紀錄中的 CISA SSVC 資料:利用狀態「無」、不可自動化、技術影響「完全」。
- 沒有官方公告: Nous Research 的 GitHub 安全公告頁沒有相關條目。修補夾在標題為「新增 Blender 到 MCP 目錄」的 PR #64463 裡,v0.19.0 的發布說明也只把它當成新增 Blender,沒提到安全修正。
- 版本寫法: CVE 描述寫「0.18.2 prior to 0.19.0」,結構化資料寫「lessThan 0.19.0」,兩者一致:0.19.0 已修補。
- 這不是入侵事件: 沒有來源把本 CVE 與任何攻擊活動或蠕蟲連結,也沒有來源指出
CyberSamuraiX/hermes-n8n-mcp曾遭入侵。 - 更大的教訓: AI 代理的核准外掛清單本身就是軟體發行管道;釘選到不可變的 SHA、用自動測試強制、並設冷卻期,是標準的供應鏈防護做法。
驗證紀錄 已人工審稿、核對來源;尚未在我們的環境重現
| 人工審稿 | 2026-09-24 |
|---|
驗證紀錄只寫環境與結果,不公開重現步驟或可攻擊他人系統的程式。詳見 政策.
來源
- 安全公告Hermes Agent 0.18.2 < 0.19.0 MCP Catalog Supply Chain RCE via Mutable Branch Reference · VulnCheck, 2026-08-28 · 查閱 2026-09-24
- 安全公告CVE-2026-82021 record (CVE Services API JSON) · CVE Program / VulnCheck (CNA), 2026-08-28 · 查閱 2026-09-24
- CVE / NVD / OSVNVD CVE API – CVE-2026-82021 · NIST NVD, 2026-08-28 · 查閱 2026-09-24
- 修補 commit / 版本feat(mcp): enforce exact version pins across the whole MCP catalog · Nous Research (GitHub), 2026-07-15 · 查閱 2026-09-24
- 修補 commit / 版本feat(mcp): add Blender to the MCP catalog with a curated 4-tool default (#64463) · Nous Research (GitHub), 2026-07-15 · 查閱 2026-09-24
- 修補 commit / 版本PR #64463 files changed · Nous Research (GitHub), 2026-07-15 · 查閱 2026-09-24
- 修補 commit / 版本optional-mcps/n8n/manifest.yaml at fix commit · Nous Research (GitHub), 2026-07-15 · 查閱 2026-09-24
- 廠商說明Hermes Agent v0.19.0 (v2026.7.20) – The Quicksilver Release · Nous Research (GitHub), 2026-07-20 · 查閱 2026-09-24
- 廠商說明Hermes Agent v0.18.2 (v2026.7.7.2) · Nous Research (GitHub), 2026-07-07 · 查閱 2026-09-24
- 廠商說明feat(mcp): Nous-approved MCP catalog with interactive picker (#30870) · Nous Research (GitHub), 2026-05-26 · 查閱 2026-09-24
- 其他optional-mcps/n8n/manifest.yaml as first added · Nous Research (GitHub), 2026-05-26 · 查閱 2026-09-24
- 其他History for optional-mcps/n8n/manifest.yaml · Nous Research (GitHub) · 查閱 2026-09-24
- 廠商說明fix(mcp): retire the n8n bridge catalog entry (#116048) · Nous Research (GitHub), 2026-09-19 · 查閱 2026-09-24
- 廠商說明Security advisories · NousResearch/hermes-agent · Nous Research (GitHub) · 查閱 2026-09-24
- 廠商說明MCP (Model Context Protocol) – Hermes Agent docs · Nous Research · 查閱 2026-09-24
媒體簡報
一句話
Hermes Agent 是 Nous Research 的開源 AI 代理程式,內建一份經官方核准、可一鍵安裝的 MCP 外掛目錄。其中 n8n 橋接項目指向第三方儲存庫會變動的分支,而不是固定版本;若該儲存庫落入攻擊者手中,使用者安裝時就會在自己電腦上執行惡意程式碼。這是一個釘選設計上的弱點,目前沒有任何來源指出上游曾遭入侵或有人實際利用,也未列入 CISA 已知遭利用漏洞清單。修補版 0.19.0 已於 2026 年 7 月 20 日釋出。
關鍵數字
- 嚴重度
- CVSS 4.0 9.0 / CVSS 3.1 8.3(CNA:VulnCheck;NVD 未自行評分) cveawg.mitre.org
- 弱點類型
- CWE-494:下載程式碼未做完整性檢查 services.nvd.nist.gov
- 修補版本
- 0.19.0 / 2026.7.20(2026-07-20 釋出) github.com
- 修補合併
- 2026-07-15(PR #64463) github.com
- CVE 公開
- 2026-08-28 cveawg.mitre.org
- 發現者
- Zubair Ashraf(Helmet Security) cveawg.mitre.org
已確認
- n8n 目錄項目在修補前使用 ref: main,修補 commit 將它改為完整的 commit SHA。
- 修補後新增自動測試,強制所有目錄清單使用精確釘選。
- CVE 紀錄中的 CISA 評估資料標示利用狀態為「無」,本漏洞未列入 KEV。
- CVE 描述與 VulnCheck 公告說的是:上游被接管後,惡意程式碼會送到「每一台安裝受影響目錄項目的主機」,不需操作者再做什麼;並沒有說已裝好的副本會自動更新。
尚未確認 / 說法不一
- 0.18.2 之前、2026 年 5 月下旬之後含目錄的版本是否也受影響;程式碼歷史顯示很可能是。
- 是否有 n8n 以外的目錄項目當時也未釘選;沒有來源這樣說。
- 通報給 Nous Research 的日期;Nous Research 也沒有發布自己的安全公告。
可引用的一句話
官方審查的是某一天的程式碼,但使用者安裝到的,是那個分支後來變成的樣子。
圖片
引用時請標示「PlainCVE」並附上本頁連結。 完整引用格式見下方「如何引用本頁」。有事實錯誤請回報.
Hermes Agent 內建 MCP 目錄釘選分支而非 commit:上游若被接管,安裝就會執行別人的程式碼 Hermes Agent 是 Nous Research 的開源 AI 代理程式,內建一份經官方核准、可一鍵安裝的 MCP 外掛目錄。其中 n8n 橋接項目指向第三方儲存庫會變動的分支,而不是固定版本;若該儲存庫落入攻擊者手中,使用者安裝時就會在自己電腦上執行惡意程式碼。這是一個釘選設計上的弱點,目前沒有任何來源指出上游曾遭入侵或有人實際利用,也未列入 CISA 已知遭利用漏洞清單。修補版 0.19.0 已於 2026 年 7 月 20 日釋出。 關鍵數字: - 嚴重度:CVSS 4.0 9.0 / CVSS 3.1 8.3(CNA:VulnCheck;NVD 未自行評分)(https://cveawg.mitre.org/api/cve/CVE-2026-82021) - 弱點類型:CWE-494:下載程式碼未做完整性檢查(https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2026-82021) - 修補版本:0.19.0 / 2026.7.20(2026-07-20 釋出)(https://github.com/NousResearch/hermes-agent/releases/tag/v2026.7.20) - 修補合併:2026-07-15(PR #64463)(https://github.com/NousResearch/hermes-agent/pull/64463) - CVE 公開:2026-08-28(https://cveawg.mitre.org/api/cve/CVE-2026-82021) - 發現者:Zubair Ashraf(Helmet Security)(https://cveawg.mitre.org/api/cve/CVE-2026-82021) 已確認: - n8n 目錄項目在修補前使用 ref: main,修補 commit 將它改為完整的 commit SHA。 - 修補後新增自動測試,強制所有目錄清單使用精確釘選。 - CVE 紀錄中的 CISA 評估資料標示利用狀態為「無」,本漏洞未列入 KEV。 - CVE 描述與 VulnCheck 公告說的是:上游被接管後,惡意程式碼會送到「每一台安裝受影響目錄項目的主機」,不需操作者再做什麼;並沒有說已裝好的副本會自動更新。 尚未確認 / 說法不一: - 0.18.2 之前、2026 年 5 月下旬之後含目錄的版本是否也受影響;程式碼歷史顯示很可能是。 - 是否有 n8n 以外的目錄項目當時也未釘選;沒有來源這樣說。 - 通報給 Nous Research 的日期;Nous Research 也沒有發布自己的安全公告。 「官方審查的是某一天的程式碼,但使用者安裝到的,是那個分支後來變成的樣子。」— PlainCVE https://plaincve.date/vulns/cve-2026-82021-hermes-agent-mcp-unpinned-branch
如何引用本頁
本文採 CC BY 4.0,轉載請保留署名與連結。
PlainCVE 團隊(2026)。《Hermes Agent 內建 MCP 目錄釘選分支而非 commit:上游若被接管,安裝就會執行別人的程式碼》。PlainCVE。https://plaincve.date/vulns/cve-2026-82021-hermes-agent-mcp-unpinned-branch(查閱日期:YYYY-MM-DD)BibTeX
@misc{cve202682021hermesagentmcpunpinnedbranch2026,
title = {Hermes Agent 內建 MCP 目錄釘選分支而非 commit:上游若被接管,安裝就會執行別人的程式碼},
author = {PlainCVE 團隊},
year = {2026},
howpublished = {PlainCVE},
url = {https://plaincve.date/vulns/cve-2026-82021-hermes-agent-mcp-unpinned-branch},
note = {更新於 2026-09-24}
}