漏洞概述 该漏洞涉及 仓库中的一个合并提交(Commit 9c5d37c),主要修改了 和 文件。漏洞的核心问题在于对查询嵌套深度的限制,具体表现为: 1. 最大嵌套深度限制:在 中,新增了一个 常量,值为 32,用于限制查询的最大嵌套深度。 2. 嵌套深度检查:在多个函数中增加了 函数调用,用于检查当前嵌套深度是否超过 。如果超过,则抛出 异常。 影响范围 影响模块: 模块,该模块负责解析和处理 HTTP 请求中的查询参数。 影响场景:当用户提交的查询参数嵌套深度超过 32 层时,系统会抛出异常,可能导致服务不可用或拒绝服务攻击(DoS)。 修复方案 1. 增加嵌套深度限制:在 中定义 常量,并在相关函数中调用 函数进行检查。 2. 抛出异常:当检测到嵌套深度超过限制时,抛出 异常,防止潜在的安全风险。 POC 代码 以下是 中的测试用例,用于验证嵌套深度限制的有效性: 这些测试用例确保了当查询嵌套深度超过 32 层时,系统会正确抛出异常,从而防止潜在的安全问题。