CVE-2025-13836CVE-2025-13836是Python标准库中的一个高危拒绝服务漏洞。该漏洞存在于Python的HTTP客户端实现中,当使用urllib等模块从HTTP服务器读取响应时,如果未明确指定读取的数据量,系统会默认使用Content-Length头字段的值作为读取长度。攻击者可以构造一个恶意HTTP服务器,返回一个极大的Content-Length值(远超实际发送的数据量),迫使Python客户端尝试分配巨量内存来存储响应数据。这种行为可能导致目标系统发生内存耗尽(Out of Memory,OOM)情况,进而引发拒绝服务攻击。由于该漏洞利用简单、无需认证且可通过网络远程触发,对使用Python HTTP客户端的应用构成严重威胁。CVSS评分7.5分,属于高危漏洞。
漏洞根源在于Python的http.client模块和urllib.request模块在处理HTTP响应时的默认行为。当调用read()方法且未指定size参数时,代码会优先使用Content-Length头来确定要读取的字节数。恶意服务器可以发送一个包含巨大Content-Length值(如9999999999)的HTTP响应头,但实际只发送很少的数据或根本不发送数据。客户端收到响应头后会尝试预分配相应大小的缓冲区,导致内存快速消耗。攻击者通过持续发送此类恶意响应,可以耗尽目标系统的所有可用内存。此外,该漏洞可能被用于绕过某些安全限制或导致应用程序崩溃,影响服务的可用性。修复方案包括限制单次读取的数据量大小,或在读取前验证Content-Length与实际可读数据的一致性。