关键漏洞信息 漏洞概述 CVE ID: CWE-674 - Uncontrolled Recursion CVSS 3.1 Score: 7.5 (High) CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H 影响范围 Attack Vector: Network (N) Attack Complexity: Low (L) Privileges Required: Low (L) User Interaction: None (N) Scope: Unchanged (U) Confidentiality: None (N) Integrity: None (N) Availability: High (H) 技术描述 ezBookkeeping 使用 Go 的标准库包 和 进行数据解析。这些库在默认配置下,不强制执行递归深度限制,导致处理深层嵌套数据结构时出现问题: 1. 栈耗尽: 深层递归调用消耗过多的栈内存。 2. CPU 资源饱和: 解析器必须遍历每个嵌套层次。 3. 指数响应时间: 解析时间随着深度呈指数增长。 漏洞代码路径 代码示例显示了在解析 JSON 和 XML 数据时未对嵌套深度进行验证的问题。 漏洞验证 攻击向量: 深层嵌套的 GnuCash XML 文件 测试环境: Docker 容器,1 CPU 核心,512MB RAM 观测结果 300 次请求处理 1000 层 XML 导致 CPU 使用率 100% 和 RAM 使用率 100% 10 次请求处理 5000 层 XML 导致立即崩溃 漏洞影响 总带宽: 400 KB (10 x 40 KB 文件) 攻击成本: 极低 (小文件尺寸) 影响范围: 完全服务中断 恢复: 需要手动重启容器 利用性评估 远程可利用: 通过 HTTP API 文件上传 技术门槛: 极低,单行 Python 脚本生成的有效载荷 绕过大小限制: 10,000 层嵌套仅使用 20-40KB 数据 需要身份验证: 攻击者需要有效的用户账户 缓解措施 立即措施: 1. 强制请求超时 2. 配置 WAF/反向代理规则 3. 启用速率限制