CVE-2025-58186CVE-2025-58186是Go语言标准库net/http包中的一个拒绝服务漏洞。尽管HTTP头有1MB的默认大小限制,但Cookie解析函数没有对Cookie数量设置上限。攻击者通过发送大量极小的Cookie(如"a=;"),使HTTP服务器分配大量结构体,导致严重的内存消耗。当服务器接收包含数千个微小Cookie的请求时,每个Cookie都会触发独立的内存分配,由于没有数量上限检查,服务器内存消耗会急剧增长,最终可能导致内存耗尽、服务崩溃或系统不稳定。该漏洞影响所有使用Go语言net/http包处理HTTP请求的服务,攻击者无需认证即可发起攻击,对服务的可用性造成严重影响。
漏洞根源在于Go语言net/http库的cookie解析逻辑缺乏数量限制机制。HTTP头字段虽然存在1MB的默认大小上限,但解析器在处理Cookie时是逐个处理的,并为每个Cookie分配独立的struct结构体内存。攻击者可以构造包含大量短小Cookie的恶意HTTP请求,例如发送包含数千个"a=;"格式Cookie的Cookie头。由于解析函数没有对Cookie数量进行上限检查,每个Cookie都会触发一次内存分配操作,导致服务器内存消耗随Cookie数量呈线性增长。当Cookie数量达到一定规模时(如数万个),服务器内存会被迅速耗尽,引发OutOfMemory错误或触发OOM Killer,最终导致服务崩溃。这种攻击方式简单有效,攻击者只需发送少量请求即可对目标服务器造成严重影响。