Endor Patches CVE-2026-44791: n8n XML Node Prototype Pollution Bypass Fixed(2026-07-14)

2026年7月14日,安全研究团队Endor Labs披露并修复了一个影响广泛使用的自动化平台n8n的高危漏洞——CVE-2026-44791。该漏洞允许攻击者通过XML节点的特殊构造,绕过已有的安全防护,实现原型污染攻击(Prototype Pollution Attack)。对于日常依赖n8n进行业务流程自动化的开发者和运维人员来说,这无疑是一记警钟。

漏洞核心:原型污染的"隐形"突破

什么是原型污染?

原型污染是一种JavaScript/Node.js环境下常见的攻击手法。想象一下,在JavaScript中,几乎所有对象都继承自一个"原型"(prototype)。攻击者如果能修改这个"原型",就能影响所有基于该原型的对象,从而篡改应用行为。例如,攻击者可以注入恶意属性,导致系统执行禁用检查、绕过权限验证,甚至远程执行代码。

CVE-2026-44791的特殊性

此前,n8n团队已针对XML节点添加了某些输入验证,试图拦截已知的原型污染载荷(如包含__proto__constructor.prototype的字符串)。然而,Endor Labs发现了一种"绕过技巧":攻击者可以在XML输入中利用嵌套的命名空间前缀特殊编码的XML标签以及未充分清理的XPath表达式来传递恶意数据。具体来说,攻击者通过构造类似以下的XML:

<root xmlns:evil="http://evil.com">
  <evil:item>__proto__.pollutedKey</evil:item>
</root>

配合n8n XML节点内部的Javascript解析逻辑,这些看似无害的标签名会被错误地视为对象属性,进而注入到全局原型中。测试显示,约12%采用默认配置的n8n实例(版本低于2.58.1)存在此漏洞。

案例分析:一个真实世界的"后门"

假设一家电商公司使用n8n自动处理订单数据。攻击者通过供应链邮件附件向n8n工作流投递带有恶意XML订单的请求。XML节点在解析时,被污染的属性导致系统自动将"isAdmin"字段覆盖为true,攻击者随即获得管理员权限,窃取用户支付信息。整个过程无需登录,仅靠一次数据输入即可完成。

实用建议:开发者的三步防护法

1. 立即升级

这是最直接有效的措施。n8n官方已在v2.58.1及更高版本中修复CVE-2026-44791。请尽快运行:

npm update n8n
# 或 Docker: docker pull n8nio/n8n:latest

团队应在48小时内完成升级,若无法立即升级,可先禁用XML节点。

2. 实施输入深度清理

即使升级后,也应加固防御。在n8n工作流中,对XML节点的输入增加自定义过滤节点,使用validator库检查所有传入的字符串是否包含__proto__constructorprototype等敏感关键字(即便被编码)。例如:

// 自定义函数节点
function filterPrototypePollution(input) {
  const dangerous = [/__proto__/gi, /constructor/gi, /prototype/gi];
  for (let pattern of dangerous) {
    if (pattern.test(JSON.stringify(input))) {
      throw new Error('检测到潜在的污染攻击');
    }
  }
  return input;
}

3. 监控与日志审计

开启n8n的详细日志记录,并接入SIEM(如Splunk或ELK)监控异常模式。重点关注:

根据OPSWAT的测试数据,实施上述三点后,90%以上的原型污染攻击可以被有效拦截。

行动号召

别等到被入侵了才想起修复。 如果你正在使用n8n,现在就做两件事:第一,检查你的版本并升级;第二,评估工作流中所有XML节点的安全性。安全的自动化,才是真正高效的自动化。请与你的团队分享此文,并立即行动。


免责声明:本文内容仅供教育及安全研究目的使用。读者应确保在合法授权环境下进行任何安全测试。作者及发布平台不对因使用本文信息导致的任何直接或间接损失承担责任。请始终遵循本地法律法规及厂商的安全公告。