漏洞概述 漏洞名称: [BUG] WEBrick reparses trailer Content-Length into canonical request state, enabling request metadata confusion / request smuggling #198 漏洞描述: 最新的ruby/webrick仍然接受来自分块请求的Content-Length值,并将其作为规范的请求元数据暴露给应用程序。一个构造的分块请求,其真实主体为1字节,但尾部说Content-Length: 5,使应用程序认为 = "5" 和 == "5"。 安全相关行为: 此行为在CVE-2015-7518中被视为权威请求长度元数据。 影响范围 影响: 这是一个请求解析/元数据信任边界问题,具有请求走私的影响。 具体影响: 应用程序如果信任 或 ,可能会基于攻击者控制的尾部数据做出安全相关决策,即使实际主体长度不同。 修复方案 修复措施: 对于分块请求,尾部提供的Content-Length不应成为权威的请求元数据。它应该被拒绝、忽略,或与正常请求头状态分开。 修复代码: - 在 中,修改 方法,确保尾部数据不被解析为规范请求状态。 - 在 中,修改 方法,确保尾部数据不被用于生成 。 POC代码 总结 漏洞: WEBrick错误地解析了分块请求的尾部Content-Length,导致请求元数据混淆和请求走私。 影响: 可能导致安全决策基于攻击者控制的数据。 修复: 修改WEBrick代码,确保尾部数据不被解析为规范请求状态。