Django 的安全策略 — Django 文档
Django 的安全策略
Django 的开发团队致力于负责任地报告和披露与安全相关的问题。 因此,我们采用并遵循了一套符合这一理想的政策,旨在让我们能够及时向 Django 的官方发行版以及第三方发行版提供安全更新。
报告安全问题
简短版本:请通过发送电子邮件至 security@djangoproject.com 报告安全问题。
Django 中的大多数正常错误都会报告给 我们的公共 Trac 实例 ,但由于安全问题的敏感性,我们要求以这种方式公开报告它们 而非 。
相反,如果您认为自己在 Django 中发现了具有安全隐患的内容,请将问题描述通过电子邮件发送至 security@djangoproject.com
。 发送到该地址的邮件会到达 安全团队 。
通过电子邮件提交问题后,您应该会在 48 小时内收到安全团队成员的确认,并且根据要采取的措施,您可能会收到进一步的跟进电子邮件。
发送加密报告
如果要发送加密邮件(可选),security@djangoproject.com
的公钥ID是0xfcb84b8d1d17f80b
,这个公钥可以从最常用的密钥服务器获得。
支持的版本
在任何时候,Django 团队都会为 Django 的多个版本提供官方安全支持:
- 托管在 GitHub 上的 master 开发分支 将成为 Django 的下一个主要版本,获得安全支持。 只影响主开发分支而不影响任何稳定发布版本的安全问题在公开修复,无需经过 披露过程 。
- 最新的两个 Django 版本系列获得了安全支持。 例如,在 Django 1.5 发布之前的开发周期中,将为 Django 1.4 和 Django 1.3 提供支持。 Django 1.5 发布后,Django 1.3 的安全支持将终止。
- 长期支持版本将在指定时间段内收到安全更新。
当出于安全原因发布新版本时,随附的通知将包含受影响版本的列表。 此列表仅包含 支持的 Django 版本:旧版本也可能受到影响,但我们不会进行调查以确定这一点,并且不会为这些版本发布补丁或新版本。
Django 如何披露安全问题
我们将安全问题从私人讨论转移到公开披露的过程涉及多个步骤。
大约在公开披露前一周,我们发送了两条通知:
首先,我们通知 django-announce 即将发布的安全版本的日期和大致时间,以及问题的严重性。 这是为了帮助需要确保他们有可用人员来处理我们的公告分类和根据需要升级 Django 的组织。 严重程度为:
高:
- 远程代码执行
- SQL注入
中等:
- 跨站脚本(XSS)
- 跨站请求伪造(CSRF)
- 拒绝服务攻击
- 损坏的身份验证
低:
- 敏感数据暴露
- 中断的会话管理
- 未经验证的重定向/转发
- 需要不常见配置选项的问题
其次,我们通知人和组织的列表,主要由Django的操作系统供应商和其他分销商组成。 这封电子邮件是用 Django 发布团队 某人的 PGP 密钥签名的,包括:
- 问题的完整描述和受影响的 Django 版本。
- 我们将采取的措施来解决这个问题。
- 将应用于 Django 的补丁(如果有)。
- Django 团队将应用这些补丁、发布新版本并公开披露问题的日期。
在披露当天,我们将采取以下步骤:
- 将相关补丁应用到 Django 的代码库。
- 通过在 Python 包索引 和 Django 网站上放置新包,并在 Django 的 git 存储库中标记新版本,发布相关版本。
- 在官方Django开发博客上发表公开条目,详细描述问题及其解决方案,指出相关补丁和新版本,并注明问题报告者(如果报告者希望公开确定)。
- 向 django-announce 和 oss-security@lists.openwall.com 邮件列表发布通知,链接到该博客文章。
如果认为报告的问题对时间特别敏感——例如,由于已知的野外利用——则提前通知和公开披露之间的时间可能会大大缩短。
此外,如果我们有理由相信向我们报告的问题会影响 Python/web 生态系统中的其他框架或工具,我们可能会私下联系并与适当的维护者讨论这些问题,并与他们协调我们自己的披露和解决方案。
Django 团队还维护了 Django 中披露的安全问题的 档案。
谁收到预先通知
收到安全问题预先通知的人员和组织的完整名单不会也不会公开。
我们还旨在尽可能有效地保留此列表,以便在披露之前更好地管理机密信息的流动。 因此,我们的通知列表是 而不是 只是一个 Django 用户列表,仅仅作为一个 Django 用户并不足以成为列入通知列表的理由。
从广义上讲,安全通知的接收者分为三组:
- 提供适当通用(即 而非 个人的个人电子邮件地址)联系地址的 Django 的操作系统供应商和其他分销商,用于报告其 Django 包的问题或一般安全报告。 在任何一种情况下,此类地址 不得 转发到公共邮件列表或错误跟踪器。 转发到个人维护者或安全响应联系人的私人电子邮件的地址是可以接受的,但强烈推荐私人安全跟踪器或安全响应组。
- 在个案的基础上,已表现出对响应这些通知并负责任地采取行动的承诺的各个包维护者。
- 在逐案的基础上,根据 Django 开发团队的判断,需要让其他实体了解未决的安全问题。 通常,该组的成员将包括一些最大和/或最有可能受到严重影响的 Django 已知用户或分销商,并且需要具备负责任地接收、保密和处理这些通知的能力。
请求通知
如果您认为您或您被授权代表的组织属于上面列出的组之一,您可以通过电子邮件 security@djangoproject.com
要求将其添加到 Django 的通知列表中。 请使用主题行“安全通知请求”。
您的请求 必须 包括以下信息:
- 您的全名、真实姓名和您所代表的组织的名称(如果适用)以及您在该组织中的角色。
- 详细说明您或您的组织如何符合上述至少一组标准。
- 您请求安全通知的原因的详细说明。 再次请记住,这 不是 只是 Django 用户的列表,绝大多数用户应该订阅 django-announce 以收到安全通知发布将发生,没有问题的详细信息,而不是请求详细的通知。
- 您希望添加到我们的通知列表中的电子邮件地址。
- 解释谁将接收/查看发送到该地址的邮件,以及有关将采取的任何自动操作的信息(即,在错误跟踪器中提交机密问题)。
- 对于个人,与您的地址相关联的公钥 ID,可用于验证从您那里收到的电子邮件并根据需要加密发送给您的电子邮件。
提交后,您的请求将被 Django 开发团队考虑; 您将在 30 天内收到回复,通知您请求的结果。
还请记住,对于任何个人或组织,接收安全通知是由 Django 开发团队自行决定授予的特权,并且可以随时撤销该特权,无论是否有解释。