安全问题存档 — Django 文档
安全问题档案
如 Django 的安全政策 中所述,Django 的开发团队坚定地致力于负责任地报告和披露与安全相关的问题。
作为该承诺的一部分,我们保留以下已修复和披露的历史问题列表。 对于每个问题,下面的列表包括日期、简要说明、CVE 标识符 (如果适用)、受影响版本的列表、完整披露的链接以及相应补丁的链接。
一些重要的注意事项适用于这些信息:
- 受影响的版本列表仅包括在披露时具有稳定的、受安全支持的版本的 Django 版本。 这意味着旧版本(其安全支持已过期)和在披露时处于预发布 (alpha/beta/RC) 状态的版本可能已受到影响,但未列出。
- Django 项目有时会发布安全建议,指出可能由不当配置或 Django 本身以外的其他问题引起的潜在安全问题。 其中一些公告已收到 CVE; 在这种情况下,它们会在此处列出,但由于它们没有随附的补丁或版本,因此只会列出描述、披露和 CVE。
Django 安全流程之前的问题
在 Django 使用正式的安全流程之前,一些安全问题已经得到处理。 对于这些,当时可能没有发布新版本,也可能没有分配 CVE。
2006 年 8 月 16 日 - :cve:`2007-0404`
翻译框架中的文件名验证问题。 完整描述
受影响的版本
- 姜戈 0.90 :提交:`(补丁)<518d406e53>`
- 姜戈 0.91 :提交:`(补丁)<518d406e53>`
- 姜戈 0.95 :提交:`(补丁) ` (2007 年 1 月 21 日发布)
Django 安全流程下的问题
所有其他安全问题都在 Django 的安全流程版本下处理。 下面列出了这些。
2007 年 10 月 26 日 - :cve:`2007-5712`
通过任意大的 Accept-Language
标头拒绝服务。 完整描述
2008 年 5 月 14 日 - :cve:`2008-2302`
XSS 通过管理员登录重定向。 完整描述
2008 年 9 月 2 日 - :cve:`2008-3909`
CSRF 通过在管理员登录期间保存 POST 数据。 完整描述
受影响的版本
- 姜戈 0.91 :提交:`(补丁)<44debfeaa4473bd28872c735dd3d9afde6886752>`
- 姜戈 0.95 :提交:`(补丁) `
- 姜戈 0.96 :提交:`(补丁)<7e0972bded362bc4b851c109df2c8a6548481a8e>`
2009 年 7 月 28 日 - :cve:`2009-2659`
开发服务器媒体处理程序中的目录遍历。 完整描述
2009 年 10 月 9 日 - :cve:`2009-3965`
通过病理性正则表达式性能拒绝服务。 完整描述
2010 年 12 月 22 日 - :cve:`2010-4534`
管理界面信息泄露。 完整描述
2010 年 12 月 22 日 - :cve:`2010-4535`
密码重置机制中的拒绝服务。 完整描述
2011 年 2 月 8 日 - :cve:`2011-0696`
CSRF 通过伪造的 HTTP 标头。 完整描述
2011 年 2 月 8 日 - :cve:`2011-0697`
XSS 通过上传文件的未消毒名称。 完整描述
2011 年 2 月 8 日 - :cve:`2011-0698`
通过不正确的路径分隔符处理在 Windows 上进行目录遍历。 完整描述
2011 年 9 月 9 日 - :cve:`2011-4136`
使用内存缓存支持的会话时的会话操作。 完整描述
2011 年 9 月 9 日 - :cve:`2011-4137`
通过 URLField.verify_exists
拒绝服务。 完整描述
2011 年 9 月 9 日 - :cve:`2011-4138`
通过URLField.verify_exists
信息泄露/任意请求发布。 完整描述
2011 年 9 月 9 日 - :cve:`2011-4139`
Host
头缓存中毒。 完整描述
2012 年 7 月 30 日 - :cve:`2012-3442`
XSS 通过未能验证重定向方案。 完整描述
2012 年 7 月 30 日 - :cve:`2012-3443`
通过压缩图像文件拒绝服务。 完整描述
2012 年 7 月 30 日 - :cve:`2012-3444`
通过大图像文件拒绝服务。 完整描述
2012 年 10 月 17 日 - :cve:`2012-4520`
Host
标头中毒。 完整描述
2012 年 12 月 10 日 - 无 CVE 1
Host
标头处理的额外强化。 完整描述
2012 年 12 月 10 日 - 没有 CVE 2
重定向验证的额外强化。 完整描述
2013 年 2 月 19 日 - 无 CVE
Host
标头处理的额外强化。 完整描述
2013 年 2 月 19 日 - :cve:`2013-1664` / :cve:`2013-1665`
针对 Python XML 库的基于实体的攻击。 完整描述
2013 年 2 月 19 日 - :cve:`2013-0305`
通过管理历史日志泄露信息。 完整描述
2013 年 2 月 19 日 - :cve:`2013-0306`
通过表单集 max_num
绕过拒绝服务。 完整描述
2013 年 8 月 13 日 - :cve:`2013-4249`
XSS 通过管理员信任 URLField
值。 完整描述
2013 年 8 月 13 日 - :cve:`2013-6044`
可能通过未经验证的 URL 重定向方案实现 XSS。 完整描述
2013 年 9 月 10 日 - :cve:`2013-4315`
通过 ssi
模板标签进行目录遍历。 完整描述
2013 年 9 月 14 日 - :cve:`2013-1443`
通过大密码拒绝服务。 完整描述
2014 年 4 月 21 日 - :cve:`2014-0472`
使用 reverse()
执行意外代码。 完整描述
2014 年 4 月 21 日 - :cve:`2014-0473`
匿名页面的缓存可能会泄露 CSRF 令牌。 完整描述
2014 年 4 月 21 日 - :cve:`2014-0474`
MySQL 类型转换会导致意外的查询结果。 完整描述
2014 年 5 月 18 日 - :cve:`2014-1418`
可以允许缓存存储和提供私有数据。 完整描述
2014 年 5 月 18 日 - :cve:`2014-3730`
来自用户输入的格式错误的 URL 未正确验证。 完整描述
受影响的版本
- 姜戈 1.4 :提交:`(补丁)<7feb54bbae3f637ab3c4dd4831d4385964f574df>`
- 姜戈 1.5 :提交:`(补丁) `
- 姜戈 1.6 :提交:`(补丁)<601107524523bca02376a0ddc1a06c6fdb8f22f3>`
- 姜戈 1.7 :提交:`(补丁) `
2014 年 8 月 20 日 - :cve:`2014-0480`
reverse()
可以生成指向其他主机的 URL。 完整描述
受影响的版本
- 姜戈 1.4 :提交:`(补丁) `
- 姜戈 1.5 :提交:`(补丁)<45ac9d4fb087d21902469fc22643f5201d41a0cd>`
- 姜戈 1.6 :提交:`(补丁) `
- 姜戈 1.7 :提交:`(补丁) `
2014 年 8 月 20 日 - :cve:`2014-0481`
文件上传拒绝服务。 完整描述
2014 年 8 月 20 日 - :cve:`2014-0482`
RemoteUserMiddleware
会话劫持。 完整描述
受影响的版本
- 姜戈 1.4 :提交:`(补丁) `
- 姜戈 1.5 :提交:`(补丁) `
- 姜戈 1.6 :提交:`(补丁)<0268b855f9eab3377f2821164ef3e66037789e09>`
- 姜戈 1.7 :提交:`(补丁)<1a45d059c70385fcd6f4a3955f3b4e4cc96d0150>`
2014 年 8 月 20 日 - :cve:`2014-0483`
通过管理中的查询字符串操作导致数据泄漏。 完整描述
2015 年 1 月 13 日 - :cve:`2015-0219`
通过下划线/破折号混淆的 WSGI 标头欺骗。 完整描述
受影响的版本
- 姜戈 1.4 :提交:`(补丁)<4f6fffc1dc429f1ad428ecf8e6620739e8837450>`
- 姜戈 1.6 :提交:`(补丁) `
- 姜戈 1.7 :提交:`(补丁)<41b4bc73ee0da7b2e09f4af47fc1fd21144c710f>`
2015 年 1 月 13 日 - :cve:`2015-0220`
通过用户提供的重定向 URL 减轻可能的 XSS 攻击。 完整描述
受影响的版本
- 姜戈 1.4 :提交:`(补丁)<4c241f1b710da6419d9dca160e80b23b82db7758>`
- 姜戈 1.6 :提交:`(补丁)<72e0b033662faa11bb7f516f18a132728aa0ae28>`
- 姜戈 1.7 :提交:`(补丁) `
2015 年 1 月 13 日 - :cve:`2015-0221`
针对 django.views.static.serve()
的拒绝服务攻击。 完整描述
受影响的版本
- 姜戈 1.4 :提交:`(补丁) `
- 姜戈 1.6 :提交:`(补丁)<553779c4055e8742cc832ed525b9ee34b174934f>`
- 姜戈 1.7 :提交:`(补丁)<818e59a3f0fbadf6c447754d202d88df025f8f2a>`
2015 年 1 月 13 日 - :cve:`2015-0222`
ModelMultipleChoiceField
的数据库拒绝服务。 完整描述
2015 年 3 月 9 日 - :cve:`2015-2241`
通过 ModelAdmin.readonly_fields
中的属性进行 XSS 攻击。 完整描述
2015 年 3 月 18 日 - :cve:`2015-2316`
strip_tags()
的拒绝服务可能性。 完整描述
受影响的版本
- 姜戈 1.6 :提交:`(补丁) `
- 姜戈 1.7 :提交:`(补丁) `
- 姜戈 1.8 :提交:`(补丁)<5447709a571cd5d95971f1d5d21d4a7edcf85bbd>`
2015 年 3 月 18 日 - :cve:`2015-2317`
通过用户提供的重定向 URL 减轻可能的 XSS 攻击。 完整描述
2015 年 5 月 20 日 - :cve:`2015-3982`
修复了 cached_db 后端中的会话刷新。 完整描述
2015 年 7 月 8 日 - :cve:`2015-5143`
通过填充会话存储来拒绝服务的可能性。 完整描述
2015 年 7 月 8 日 - :cve:`2015-5144`
标头注入的可能性,因为验证器接受输入中的换行符。 完整描述
受影响的版本
- 姜戈 1.8 :提交:`(补丁)<574dd5e0b0fbb877ae5827b1603d298edc9bb2a0>`
- 姜戈 1.7 :提交:`(补丁) `
- 姜戈 1.4 :提交:`(补丁)<1ba1cdce7d58e6740fe51955d945b56ae51d072a>`
2015 年 7 月 8 日 - :cve:`2015-5145`
URL 验证中的拒绝服务可能性。 完整描述
2015 年 8 月 18 日 - :cve:`2015-5963` / :cve:`2015-5964`
通过填充会话存储在 logout()
视图中拒绝服务的可能性。 完整描述
2015 年 11 月 24 日 - :cve:`2015-8213`
在 date
模板过滤器中设置泄漏可能性。 完整描述
2016 年 2 月 1 日 - :cve:`2016-2048`
具有“更改”但不具有“添加”权限的用户可以使用 save_as=True
为 ModelAdmin
创建对象。 完整描述
2016 年 3 月 1 日 - :cve:`2016-2512`
通过用户提供的包含基本身份验证的重定向 URL 进行恶意重定向和可能的 XSS 攻击。 完整描述
2016 年 3 月 1 日 - :cve:`2016-2513`
通过密码散列器工作因子升级的时间差异进行用户枚举。 完整描述
2016 年 7 月 18 日 - :cve:`2016-6186`
管理员添加/更改相关弹出窗口中的 XSS。 完整描述
2016 年 9 月 26 日 - :cve:`2016-7401`
使用 Google Analytics 在站点上绕过 CSRF 保护。 完整描述
2016 年 11 月 1 日 - :cve:`2016-9013`
在 Oracle 上运行测试时创建的具有硬编码密码的用户。 完整描述
2016 年 11 月 1 日 - :cve:`2016-9014`
DEBUG=True
时的 DNS 重新绑定漏洞。 完整描述
受影响的版本
- Django 1.10 :提交:`(补丁)<884e113838e5a72b4b0ec9e5e87aa480f6aa4472>`
- 姜戈 1.9 :提交:`(补丁)<45acd6d836895a4c36575f48b3fb36a3dae98d19>`
- 姜戈 1.8 :提交:`(补丁) `
2017 年 4 月 4 日 - :cve:`2017-7233`
通过用户提供的数字重定向 URL 打开重定向和可能的 XSS 攻击。 完整描述
受影响的版本
- Django 1.10 :提交:`(补丁) `
- 姜戈 1.9 :提交:`(补丁)<254326cb3682389f55f886804d2c43f7b9f23e4f>`
- 姜戈 1.8 :提交:`(补丁)<8339277518c7d8ec280070a780915304654e3b66>`
2017 年 4 月 4 日 - :cve:`2017-7234`
在 django.views.static.serve()
中打开重定向漏洞。 完整描述
2017 年 9 月 5 日 - :cve:`2017-12794`
技术 500 调试页面的回溯部分中可能存在 XSS。 完整描述
2018 年 2 月 1 日 - :cve:`2018-6188`
AuthenticationForm
中的信息泄露。 完整描述
2018 年 3 月 6 日 - :cve:`2018-7536`
urlize
和 urlizetrunc
模板过滤器中的拒绝服务可能性。 完整描述
受影响的版本
- Django 2.0 :提交:`(补丁) `
- Django 1.11 :提交:`(补丁) `
- 姜戈 1.8 :提交:`(补丁)<1ca63a66ef3163149ad822701273e8a1844192c2>`
2018 年 3 月 6 日 - :cve:`2018-7537`
truncatechars_html
和 truncatewords_html
模板过滤器中的拒绝服务可能性。 完整描述
受影响的版本
- Django 2.0 :提交:`(补丁)<94c5da1d17a6b0d378866c66b605102c19f7988c>`
- Django 1.11 :提交:`(补丁) `
- 姜戈 1.8 :提交:`(补丁) `
2018 年 8 月 1 日 - :cve:`2018-14574`
在 CommonMiddleware
中打开重定向的可能性。 完整描述
受影响的版本
- Django 2.1 :提交:`(补丁) `
- Django 2.0 :提交:`(补丁)<6fffc3c6d420e44f4029d5643f38d00a39b08525>`
- Django 1.11 :提交:`(补丁) `
2019 年 1 月 4 日 - :cve:`2019-3498`
默认 404 页面中的内容欺骗可能性。 完整描述
受影响的版本
- Django 2.1 :提交:`(补丁)<64d2396e83aedba3fcc84ca40f23fbd22f0b9b5b>`
- Django 2.0 :提交:`(补丁)<9f4ed7c94c62e21644ef5115e393ac426b886f2e>`
- Django 1.11 :提交:`(补丁)<1cd00fcf52d089ef0fe03beabd05d59df8ea052a>`
2019 年 2 月 11 日 - :cve:`2019-6975`
django.utils.numberformat.format()
中的内存耗尽。 完整描述
2019 年 6 月 3 日 - :cve:`2019-11358`
捆绑 jQuery 中的原型污染。 完整描述
2019 年 6 月 3 日 - :cve:`2019-12308`
XSS 通过 AdminURLFieldWidget
生成的“当前 URL”链接。 完整描述
受影响的版本
- Django 2.2 :提交:`(补丁) `
- Django 2.1 :提交:`(补丁)<09186a13d975de6d049f8b3e05484f66b01ece62>`
- Django 1.11 :提交:`(补丁) `
2019 年 7 月 1 日 - :cve:`2019-12781`
使用通过 HTTPS 进行反向代理连接的 HTTP 检测不正确。 完整描述
受影响的版本
- Django 2.2 :提交:`(补丁)<77706a3e4766da5d5fb75c4db22a0a59a28e6cd6>`
- Django 2.1 :提交:`(补丁)<1e40f427bb8d0fb37cc9f830096a97c36c97af6f>`
- Django 1.11 :提交:`(补丁)<32124fc41e75074141b05f10fc55a4f01ff7f050>`
2019 年 8 月 1 日 - :cve:`2019-14232`
django.utils.text.Truncator
中的拒绝服务可能性。 完整描述
受影响的版本
- Django 2.2 :提交:`(补丁) `
- Django 2.1 :提交:`(补丁) `
- Django 1.11 :提交:`(补丁)<42a66e969023c00536256469f0e8b8a099ef109d>`
2019 年 8 月 1 日 - :cve:`2019-14233`
strip_tags()
中的拒绝服务可能性。 完整描述
受影响的版本
- Django 2.2 :提交:`(补丁) `
- Django 2.1 :提交:`(补丁)<5ff8e791148bd451180124d76a55cb2b2b9556eb>`
- Django 1.11 :提交:`(补丁)<52479acce792ad80bb0f915f20b835f919993c72>`
2019 年 8 月 1 日 - :cve:`2019-14234`
JSONField
/HStoreField
的键和索引查找中的 SQL 注入可能性。 完整描述
受影响的版本
- Django 2.2 :提交:`(补丁)<4f5b58f5cd3c57fee9972ab074f8dc6895d8f387>`
- Django 2.1 :提交:`(补丁) `
- Django 1.11 :提交:`(补丁) `
2019 年 8 月 1 日 - :cve:`2019-14235`
django.utils.encoding.uri_to_iri()
中潜在的内存耗尽。 完整描述
受影响的版本
- Django 2.2 :提交:`(补丁) `
- Django 2.1 :提交:`(补丁)<5d50a2e5fa36ad23ab532fc54cf4073de84b3306>`
- Django 1.11 :提交:`(补丁)<869b34e9b3be3a4cfcb3a145f218ffd3f5e3fd79>`
2019 年 12 月 2 日 - :cve:`2019-19118`
Django 管理中的权限提升。 完整描述
受影响的版本
- Django 3.0 :提交:`(补丁)<092cd66cf3c3e175acce698d6ca2012068d878fa>`
- Django 2.2 :提交:`(补丁)<36f580a17f0b3cb087deadf3b65eea024f479c21>`
- Django 2.1 :提交:`(补丁)<103ebe2b5ff1b2614b85a52c239f471904d26244>`
2019 年 12 月 18 日 - :cve:`2019-19844`
通过密码重置表单潜在的帐户劫持。 完整描述
受影响的版本
- Django 3.0 :提交:`(补丁)<302a4ff1e8b1c798aab97673909c7a3dfda42c26>`
- Django 2.2 :提交:`(补丁)<4d334bea06cac63dc1272abcec545b85136cca0e>`
- Django 1.11 :提交:`(补丁) `
2020 年 2 月 3 日 - :cve:`2020-7471`
通过 StringAgg(delimiter)
的潜在 SQL 注入。 完整描述
受影响的版本
- Django 3.0 :提交:`(补丁)<505826b469b16ab36693360da9e11fd13213421b>`
- Django 2.2 :提交:`(补丁) `
- Django 1.11 :提交:`(补丁)<001b0634cd309e372edb6d7d95d083d02b8e37bd>`
2020 年 3 月 4 日 - :cve:`2020-9402`
通过 Oracle 上 GIS 函数和聚合中的 tolerance
参数进行潜在 SQL 注入。 完整描述
受影响的版本
- Django 3.0 :提交:`(补丁)<26a5cf834526e291db00385dd33d319b8271fc4c>`
- Django 2.2 :提交:`(补丁) `
- Django 1.11 :提交:`(补丁)<02d97f3c9a88adc890047996e5606180bd1c6166>`
2020 年 6 月 3 日 - :cve:`2020-13254`
通过格式错误的内存缓存键可能导致数据泄漏。 完整描述
受影响的版本
- Django 3.0 :提交:`(补丁)<84b2da5552e100ae3294f564f6c862fef8d0e693>`
- Django 2.2 :提交:`(补丁)<07e59caa02831c4569bbebb9eb773bdd9cb4b206>`
2020 年 6 月 3 日 - :cve:`2020-13596`
可能通过管理员 ForeignKeyRawIdWidget
进行 XSS。 完整描述
受影响的版本
- Django 3.0 :提交:`(补丁)<1f2dd37f6fcefdd10ed44cb233b2e62b520afb38>`
- Django 2.2 :提交:`(补丁)<6d61860b22875f358fac83d903dc629897934815>`
2020 年 9 月 1 日 - :cve:`2020-24583`
Python 3.7+ 上的中级目录权限不正确。 完整描述
2020 年 9 月 1 日 - :cve:`2020-24584`
Python 3.7+ 上文件系统缓存的中间级目录中的权限升级。 完整描述
受影响的版本
- 姜戈 3.1 :提交:`(补丁)<2b099caa5923afa8cfb5f1e8c0d56b6e0e81915b>`
- Django 3.0 :提交:`(补丁) `
- Django 2.2 :提交:`(补丁) `
2021 年 2 月 1 日 - :cve:`2021-3281`
通过 archive.extract()
的潜在目录遍历。 完整描述
2021 年 2 月 19 日 - :cve:`2021-23336`
通过 django.utils.http.limited_parse_qsl()
进行 Web 缓存中毒。 完整描述
受影响的版本
- 姜戈 3.2 :提交:`(补丁) `
- 姜戈 3.1 :提交:`(补丁)<8f6d431b08cbb418d9144b976e7b972546607851>`
- Django 3.0 :提交:`(补丁)<326a926beef869d3341bc9ef737887f0449b6b71>`
- Django 2.2 :提交:`(补丁) `
2021 年 4 月 6 日 - :cve:`2021-28658`
通过上传的文件进行潜在的目录遍历。 完整描述
受影响的版本
- 姜戈 3.2 :提交:`(补丁)<2820fd1be5dfccbf1216c3845fad8580502473e1>`
- 姜戈 3.1 :提交:`(补丁) `
- Django 3.0 :提交:`(补丁) `
- Django 2.2 :提交:`(补丁)<4036d62bda0e9e9f6172943794b744a454ca49c2>`
2021 年 5 月 4 日 - :cve:`2021-31542`
通过上传的文件进行潜在的目录遍历。 完整描述
受影响的版本
- 姜戈 3.2 :提交:`(补丁) `
- 姜戈 3.1 :提交:`(补丁)<25d84d64122c15050a0ee739e859f22ddab5ac48>`
- Django 2.2 :提交:`(补丁)<04ac1624bdc2fa737188401757cf95ced122d26d>`
2021 年 5 月 6 日 - :cve:`2021-32052`
自 URLValidator
接受 Python 3.9.5+ 输入中的换行符以来,标头注入的可能性。 完整描述
受影响的版本
- 姜戈 3.2 :提交:`(补丁)<2d2c1d0c97832860fbd6597977e2aae17dd7e5b2>`
- 姜戈 3.1 :提交:`(补丁) `
- Django 2.2 :提交:`(补丁) `
2021 年 6 月 2 日 - :cve:`2021-33203`
通过 admindocs
的潜在目录遍历。 完整描述
受影响的版本
- 姜戈 3.2 :提交:`(补丁) `
- 姜戈 3.1 :提交:`(补丁)<20c67a0693c4ede2b09af02574823485e82e4c8f>`
- Django 2.2 :提交:`(补丁)<053cc9534d174dc89daba36724ed2dcb36755b90>`
2021 年 6 月 2 日 - :cve:`2021-33571`
由于验证器接受 IPv4 地址中的前导零,因此可能存在不确定的 SSRF、RFI 和 LFI 攻击。 完整描述
受影响的版本
- 姜戈 3.2 :提交:`(补丁)<9f75e2e562fa0c0482f3dde6fc7399a9070b4a3d>`
- 姜戈 3.1 :提交:`(补丁)<203d4ab9ebcd72fc4d6eb7398e66ed9e474e118e>`
- Django 2.2 :提交:`(补丁) `