漏洞概述 该漏洞涉及HTTP/3响应缓冲区的限制问题。具体表现为: 在接收到消息后, 函数会重置其每块超时(GRSA-JQ4M)。 如果对端发送了一个小数据块,并且该数据块在超时前到达,则循环会无限期地保持活跃,导致进程堆增长直到OOM(Out of Memory)。 影响范围 受影响组件: 文件中的 函数。 影响场景:当HTTP/3响应数据流中每块数据量较小且频繁到达时,可能导致内存耗尽。 修复方案 1. 引入绝对时钟超时: - 为整个响应设置一个绝对时钟超时,而不是每块超时。 - 超时时间可以通过配置项 进行控制,默认值为512 MiB,最大可配置为16 GiB。 2. 限制缓冲区大小: - 缓冲的响应体大小被限制在 内,防止内存无限增长。 3. 代码修改: - 在 文件中,修改了 函数,增加了绝对时钟超时和缓冲区大小限制。 - 新增配置项 和 ,用于控制最大响应体大小。 POC代码 以下是修复后的关键代码片段: 总结 该修复通过引入绝对时钟超时和限制缓冲区大小,有效防止了因HTTP/3响应数据流导致的内存耗尽问题。