CVE-2025-62727CVE-2025-62727是Starlette框架中的一个高危拒绝服务漏洞。Starlette是一个轻量级的ASGI框架/工具包,广泛应用于Python Web开发中。该漏洞存在于Starlette 0.39.0至0.49.0版本的FileResponse组件中,攻击者可以通过发送精心构造的HTTP Range请求头,触发Range解析和合并逻辑中的二次时间复杂度处理问题。当Range头包含大量重叠或分散的范围时,服务器需要进行O(n²)级别的计算处理,导致单个HTTP请求就能造成严重的CPU资源耗尽。这种攻击方式使得攻击者可以在短时间内对目标服务器实施拒绝服务攻击,影响所有使用StaticFiles或FileResponse提供文件服务的端点。由于无需认证且利用简单,该漏洞对互联网暴露的Starlette应用构成严重威胁。
该漏洞的核心问题在于Starlette的FileResponse对HTTP Range头的解析和合并逻辑存在算法效率缺陷。当客户端发送包含多个范围的Range请求时(如:Range: bytes=0-1000,2000-3000,4000-5000,...),服务器需要对这些范围进行排序、去重和合并操作。在存在大量范围或重叠范围的情况下,合并算法的时间复杂度达到O(n²),其中n为范围数量。攻击者可以通过构造包含数百甚至数千个重叠范围的Range头(如:Range: bytes=0-1,0-2,0-3,0-4,...),使服务器在处理单个请求时消耗大量CPU资源。正常情况下,处理简单文件请求可能只需要几毫秒,但恶意构造的Range请求可能需要数秒甚至数十秒才能完成,从而造成服务器响应缓慢或完全无响应。此漏洞影响所有使用FileResponse或StaticFiles的应用,特别是那些提供大文件下载服务的端点。