CVE-2025-69229AIOHTTP是一个用于asyncio和Python的异步HTTP客户端/服务器框架。在3.13.2及以下版本中,处理HTTP分块传输编码(chunked transfer encoding)消息时存在性能缺陷。当服务器接收包含大量分块的请求时,分块消息处理逻辑可能导致过多的阻塞CPU使用。如果应用程序在端点中使用了request.read()方法处理请求体,攻击者可以发送特制的分块请求,使服务器在处理该请求时消耗大量CPU时间(例如约1秒)。由于Python的GIL(全局解释器锁)限制,这种阻塞操作会阻止服务器处理其他并发请求,从而造成拒绝服务(DoS)条件。攻击者无需认证即可发起攻击,且可以通过网络远程利用此漏洞。此问题已在版本3.13.3中得到修复。
该漏洞源于AIOHTTP框架在处理HTTP分块传输编码时的实现问题。在HTTP/1.1协议中,分块传输编码允许将消息体分割成多个独立的分块进行传输,每个分块以十六进制长度值开头,后跟实际数据内容。AIOHTTP 3.13.2及更早版本在解析这些分块时,可能在特定条件下触发大量CPU密集型操作。当攻击者发送包含大量小分块的请求时(例如数百甚至数千个分块),每个分块的解析和处理都会累积CPU开销。由于request.read()方法会完整读取请求体,期间框架需要逐个解析所有分块数据,这会导致同步阻塞。在Python的异步环境中,这种同步阻塞会占用事件循环,使得其他异步任务无法获得执行时间片,从而造成服务不可用。攻击者只需构造一个带有大量分块的HTTP POST请求即可触发此漏洞,无需特殊的认证或用户交互。