新闻公告使用手机扫一扫查看
< 返回

Django 曝出四项安全缺陷,官方发布新版本集中修补

2026-09-15 17:34 作者:数掘云算 阅读量:6

近日,Django 项目发布安全更新,集中修复了四项影响受支持版本的安全漏洞,问题涉及空间查询、内存资源消耗、几何数据处理以及管理后台 URL 渲染等多个场景。

其中,部分漏洞在特定条件下可能进一步造成文件写入、服务器端网络请求甚至远程代码执行风险。官方已在 Django 6.0.8 和 5.2.17 中完成相关修复,建议仍在使用受影响版本的开发者和运维人员尽快安排升级。

一、高危漏洞:空间查询可能引发文件写入风险

漏洞编号:CVE-2026-15307
风险等级:高危

该漏洞主要与 Django GIS 功能中的 GDALRaster 栅格数据处理机制有关。

在此前的实现中,当 Django 执行涉及栅格数据的空间查询时,可以接收部分字符串或字典形式的值。如果攻击者能够控制相关输入,则可能结合特定 GDAL 栅格驱动的处理特性,使服务器执行非预期操作。

潜在影响包括以 Django 应用程序权限向服务器写入文件,或者主动向外部网络地址发起请求。在部分部署环境下,如果文件写入位置及应用权限等条件同时满足,风险还有可能进一步扩大至远程代码执行。

Django 管理后台同样可能受到影响。例如,拥有相应查看权限的后台员工账号,如果能够对包含空间字段的模型进行筛选,就可能触发存在风险的查询流程。

修复后,Django 对空间查询输入进行了更加严格的限制,不再允许直接使用字典值,同时会阻止不符合要求的字符串参与相关空间查询。

需要注意的是,此项调整主要针对查询行为,模型字段本身的赋值机制并未完全采用相同限制。因此,使用 GeoDjango 或处理外部空间数据的系统仍应做好输入校验。

二、语言代码缓存可能造成内存资源消耗

漏洞编号:CVE-2026-15337
风险等级:低危

第二项漏洞存在于 django.utils.translation.check_for_language() 的处理逻辑中。

在特定情况下,应用可能将大量不同且长度异常的语言代码写入内存缓存。如果攻击者持续构造包含超长语言值的请求,例如针对可选的 set_language() 视图提交恶意 POST 数据,就可能不断增加应用的内存消耗。

虽然 Django 本身存在请求大小以及缓存条目数量等限制,使漏洞造成的实际影响受到一定约束,但持续的大量异常请求仍可能对应用可用性产生影响。

新版本增加了长度检查机制,在执行缓存查询前会拒绝长度超过 500 个字符的语言代码,从而降低利用异常输入持续消耗内存资源的可能性。

三、恶意几何数据可能导致 Django 服务崩溃

漏洞编号:CVE-2026-15830
风险类型:拒绝服务

该问题与 Django 地理空间功能所使用的 GEOS 几何处理有关。

攻击者可以构造具有大量深层嵌套结构的 GEOMETRYCOLLECTION 几何集合。当这些异常数据被传递至空间字段查询或者 GeometryField 表单字段进行解析时,底层 GEOS 库可能出现段错误,进而导致 Django 应用进程异常终止。

这意味着,允许用户提交或处理不可信地理空间数据的应用需要重点关注该漏洞。

针对这一问题,Django 对几何集合复杂度增加了限制。其中,WKT 数据最多允许 198 层嵌套几何集合,WKB 数据则限制几何集合的总数量。

同时,新版本增加了 max_geom_collections 参数,开发者可以根据实际业务场景,对 GEOSGeometry 以及相关模型字段、表单字段的限制进行调整。

GeoJSON 数据由于采用不同的解析方式,因此不受该项限制直接影响。

四、管理后台 URLField 存在存储型 XSS 风险

漏洞编号:CVE-2026-15920
风险等级:中危

此次更新还解决了 Django 管理后台 URLField 字段渲染过程中存在的存储型跨站脚本风险。

此前,当 URLField 中保存了某些特殊协议内容时,Django 管理后台可能直接将其显示为可点击链接,而没有充分确认 URL 所采用的协议是否安全。

如果攻击者能够向相关字段写入恶意内容,并诱导具有后台权限的用户点击,就可能带来跨站脚本攻击风险。

修复之后,Django 会先通过 URLValidator 对 URLField 中保存的数据进行有效性检查。只有符合要求的 URL 才会被渲染成可点击链接,不符合验证规则的数据则仅按照普通文本进行展示,从而降低恶意链接被直接执行的风险。

安全建议

此次披露的四项漏洞覆盖了 Django GIS、国际化功能、GEOS 几何数据处理以及 Admin 管理后台等不同组件。尤其对于使用 GeoDjango、开放管理后台给内部员工使用,或者允许外部用户提交地理空间数据的业务系统,建议重点排查。

目前官方已发布包含安全修复的新版本。使用 Django 6.0 系列的项目建议升级至 6.0.8 或更高安全版本,使用 Django 5.2 系列的项目建议升级至 5.2.17 或后续安全版本。

在完成升级后,还应重点测试现有空间查询功能是否受到新的输入限制影响,并重新检查管理后台账号权限、URLField 数据来源以及外部空间数据的输入校验机制。

对于暂时无法立即升级的生产环境,应尽可能减少不可信用户对 GIS 查询、GeometryField 以及 Django Admin 相关功能的访问,同时加强异常请求监测和输入过滤。

从本次安全更新来看,涉及 GIS 和管理后台的 Django 项目风险相对更加突出。对于互联网暴露系统,不建议仅依赖框架自身的安全机制,还应结合最小权限、输入验证、访问控制以及日志监测等措施降低漏洞被利用的可能性。

联系我们
返回顶部