CVE-2026-5766Django 在 6.0.5 和 5.2.14 之前的版本中发现一个安全问题。攻击者通过构造缺少或低估 `Content-Length` 头部的 ASGI 请求,可以绕过框架内部的 `FILE_UPLOAD_MAX_MEMORY_SIZE` 限制。这种攻击方式允许将大文件加载到服务器内存中,可能导致内存资源耗尽,进而引发服务降级或拒绝服务。
该漏洞源于 Django 在处理 ASGI 请求时对 `Content-Length` 头部的校验逻辑存在缺陷。在 Django 的 ASGI 处理机制中,`FILE_UPLOAD_MAX_MEMORY_SIZE` 配置项旨在限制上传文件在内存中的最大占用,防止恶意大文件攻击。然而,当攻击者发送的 ASGI 请求中缺少 `Content-Length` 头部,或者该头部的数值被刻意低估时,Django 无法正确执行该限制检查。攻击者利用这一逻辑漏洞,可以发送远超配置预期的数据流。服务器在处理此类请求时,会尝试将接收到的数据全部加载到内存缓冲区中。随着攻击者持续发送大量数据,服务器内存资源会被迅速耗尽,导致系统性能显著下降,甚至引发服务崩溃,造成拒绝服务。此漏洞无需用户认证即可被利用,且攻击成本低,对运行受影响版本的 Django 应用构成严重威胁。