# n8n Webhook节点IP白名单绕过漏洞
## 概述
n8n 是一个开源工作流自动化平台。在版本 1.36.0 至 2.2.0 之前,Webhook 节点的 IP 白名单验证采用部分字符串匹配,而非精确 IP 比较,导致安全性被削弱。
## 影响版本
受影响版本:从 1.36.0 到 2.2.0 之前(不含 2.2.0)
已修复版本:2.2.0
## 细节
Webhook 节点在验证请求来源 IP 是否在白名单中时,仅执行了子字符串匹配。例如,若白名单中配置了 `192.168.1.1`,则源 IP 为 `192.168.1.100` 或 `192.168.1.10` 的请求也会被接受。该问题同时影响 IPv4 和 IPv6 地址。
## 影响
攻击者若其 IP 地址与白名单中的某个条目存在前缀或子串匹配,即可绕过 IP 白名单限制,访问受保护的 Webhook。这破坏了依赖 IP 访问控制的安全机制,可能导致未授权访问。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: fix(Webhook Node): Use CIDR matching for IP whitelist check by mfsiega · Pull Request #23399 · n8n-io/n8n · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
- **漏洞类型**: 漏洞类型是 Webhook 节点的安全性问题,具体涉及IP白名单检查。
- **漏洞描述**:
- 原始代码使用了简单的字符串匹配来进行IP白名单检查,这可能导致IP地址验证不准确或过于宽松。
- 更改为使用CIDR(无类别域间路由)匹配,以提高IP地址验证的准确性和安全性。
- **相关问题/讨论**:
- 参考了与Linear ticket相关的GitHub问题和社区论坛帖子,确保与其他问题的关联性和一致性。
- 对合并前后的部分代码进行了详细的审查和讨论。
- **修复措施**:
- 使用更精确的CIDR匹配来替代原有的简单字符串匹配。
- 代码审查过程中,提出了针对AI代理的提示,以改进对CIDR块的处理方式。
- 优化了IP白名单检查逻辑,避免了不必要的迭代并提高了性能。
- **影响版本**:
- 该修复被包含在项目 n8n 2.2.0 版本中发布。
- **讨论的参与者**:
- 主要贡献者 mfsiega 和审阅者 tom 和 cubic-dev-ai 对此进行了广泛的讨论和代码审查。
标题: fix(Webhook Node): Use CIDR matching for IP whitelist check by mfsiega · Pull Request #23399 · n8n-io/n8n · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
## 漏洞关键信息总结
**漏洞描述**
- **漏洞类型**: IP Whitelist Check Vulnerability
- **修复措施**: 使用CIDR匹配进行IP白名单检查,而非简单的字符串匹配。
**相关链接和讨论**
- **相关Issue**: [Webhook Node - Use CIDR matching for IP whitelist check](https://linear.app/n8n/issue/CAT-1846)
**代码变更和讨论**
- 提议从简单的字符串匹配更改为CIDR匹配,以增强IP白名单的检查。
- 在处理IP地址时,CIDR表示法如“192.168.0.0/24”将引发错误并被静默忽略。建议使用`addSubnet`方法以解析CIDR表示法。
**代码审查**
- 代码变更通过了代码覆盖率检查,自动化测试通过。
- 审查中提出一个简化IP白名单迭代的建议,被采纳并简化。
**发布**
- **发布版本**: n8n@2.2.0
标题: IP Whitelist Bypass via Partial String Matching · Advisory · n8n-io/n8n · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
### 关键信息总结
#### 漏洞描述:
- **漏洞名称**: IP Whitelist Bypass via Partial String Matching
- **包**: n8n (npm)
- **受影响版本**: >= 1.36.0
- **修复版本**: 2.2.0
#### 影响:
- Webhook节点的IP白名单验证仅进行部分字符串匹配而非精确IP比较,导致含有白名单条目子字符串的源IP地址的请求被接受。这影响了依赖IP访问控制限制webhook访问的工作流实例,攻击者可以利用部分前缀与信任地址相同的非白名单IP绕过限制,破坏安全边界。IPv4和IPv6地址均受影响。
#### 修复措施:
- 已在2.2.0版本修复,建议用户升级到此版本或更高版本,以实现严格的IP比较逻辑。
#### 绕过建议:
- 无法立即升级的用户应避免仅依赖IP白名单保护webhook,推荐措施包括:
- 添加共享密钥、HMAC签名或API密钥等认证机制。
- 避免使用短或前缀基础的白名单条目。
- 在网络层强制IP过滤(如使用反向代理或防火墙)。
#### 其他信息:
- **严重性**: 中等,CVSS v3基础指标为5.3/10。
- **CVE ID**: CVE-2025-68949
- **漏洞类型**: CWE-183 和 CWE-284
- **报告人**: berkdedekarginoglu
标题: fix(Webhook Node): Use CIDR matching for IP whitelist check (#23399) · n8n-io/n8n@11f8597 · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
### 关键信息
- **漏洞类型**: Webhook节点的IP白名单检查方法存在问题。
- **解决方法**: 使用CIDR(Classless Inter-Domain Routing)匹配来确定IP地址是否在白名单中。
- **代码变更**:
- 文件 `packages/nodes-base/nodes/Webhook/utils.test.ts` 和 `packages/nodes-base/nodes/Webhook/utils.ts` 进行了修改。
- 测试用例 `it('CAT-1846: should use CIDR matching to determine if ip is in the whitelist', ...)` 被添加。
- 添加了新的白名单IP校验逻辑,使用了新的 `BlockList` 和 `allowList` 变量。
- **相关Issue**: #23399
- **提交作者**: mfsiega
- **提交时间**: 最近一个月内
- **提交验证**: 已验证
### 建议
应该进一步检查 `BlockList` 和 `allowList` 的处理逻辑,确保在所有情况下都能正确地进行CIDR匹配和验证。同时,确认更新后的代码在整个系统中的兼容性和性能表现。
暂无评论