CVE-2025-68949n8n是一个开源工作流自动化平台。在1.36.0到2.2.0之前的版本中,Webhook节点的IP白名单验证存在严重的安全缺陷。该漏洞源于IP白名单验证逻辑使用了部分字符串匹配(substring matching)而非精确IP比较(exact IP comparison)。这意味着当配置IP白名单时,系统仅检查请求来源IP是否包含白名单条目作为子字符串,而不是进行严格的IP段匹配或精确地址比较。攻击者可以利用此漏洞,通过拥有一个与受信任IP共享部分前缀的IP地址来绕过IP访问控制。例如,如果白名单中配置了192.168.1.1,攻击者可以使用192.168.1.10或包含该字符串的其他IP地址(如192.168.1.1.evil.com解析到的IP)来绕过验证。该漏洞同时影响IPv4和IPv6地址。由于n8n的工作流通常涉及敏感业务逻辑和自动化任务,Webhook节点的IP限制功能被广泛用于限制对关键工作流的访问。此漏洞的存在使得依赖IP白名单进行安全边界防护的实例面临未授权访问风险,可能导致敏感数据泄露或业务逻辑被恶意触发。
漏洞根本原因在于n8n的Webhook节点IP白名单验证代码使用了JavaScript的字符串includes()或类似的子字符串匹配方法,而非进行规范的IP地址比较。正确的IP白名单验证应该包括:1)解析IP地址为数值格式;2)处理CIDR范围或子网掩码;3)进行精确的数值比较或范围匹配。而漏洞代码可能使用了类似以下的错误实现:if (whitelist.some(entry => requestIP.includes(entry)))。攻击者可以利用IPv4/IPv6地址的分段特性构造恶意IP。例如,白名单配置为10.0.0.1时,攻击者可以使用10.0.0.10、10.0.0.100或10.0.0.1.attack等地址,只要这些地址的字符串表示包含白名单条目作为子字符串即可绕过验证。此外,IPv6地址的复杂表示形式(如::1、::ffff:192.168.1.1)也增加了绕过的可能性。攻击者可以通过简单的HTTP请求到目标Webhook端点,使用伪造或经过特殊构造的源IP来绕过IP限制。修复方案(版本2.2.0)应使用精确的IP比较、严格的CIDR范围匹配或使用专业的IP库进行验证。