Django’s security policies

Django的开发团队致力于负责任地报告和披露与安全相关的问题。因此,我们采用并遵循一系列符合这一理想的政策,旨在使我们能够及时为Django的官方发行版以及第三方发行版提供安全更新。

Reporting security issues

短期版本:请通过电子邮件发送[email protected]报告安全问题。

Django中的大多数正常错误都报告给我们的公共Trac实例,但由于安全问题的敏感性,我们要求他们以这种方式公开报告。

相反,如果您认为您在Django中发现了具有安全隐患的内容,请通过电子邮件将此问题的说明发送到[email protected]发送到该地址的邮件会传递到核心团队的subset of the core team

通过电子邮件提交问题后,您应在48小时内收到安全小组成员的确认,并且根据要采取的操作,您可能会收到进一步的后续电子邮件。

注意

如果您要发送加密电子邮件(可选),则[email protected]的公钥ID为0xfcb84b8d1d17f80b,并且此公钥可从最常用的密钥服务器。

Supported versions

在任何给定的时间,Django团队为Django的多个版本提供官方安全支持:

  • 托管在GitHub上的主开发分支(将成为Django的下一个版本)接受安全支持。
  • 两个最新的Django发行版系列接受安全支持。例如,在开发周期导致Django 1.5的发布,将支持Django 1.4和Django 1.3。发布Django 1.5后,Django 1.3的安全支持将结束。
  • Long-term support (LTS) releases将在指定时间段内接收安全更新。

当出于安全原因发布新版本时,随附的通知将包括受影响版本的列表。此列表仅由支持的版本的Django组成:旧版本也可能受到影响,但我们不进行调查确定,并且不会为这些版本发布补丁或新版本。

How Django discloses security issues

我们从私人讨论到公开披露的安全问题的过程涉及多个步骤。

在完全公开披露之前大约一周,我们会将问题的预先通知发送给主要由操作系统供应商和Django其他分销商组成的人员和组织的列表。此通知将包含一封电子邮件,使用Django发行标签进行签名,其中包含:

  • 问题的完整描述和受影响的Django版本。
  • 我们将采取的措施来纠正这个问题。
  • 将应用于Django的修补程序(如果有)。
  • Django团队将应用这些补丁的日期,发布新版本并公开披露该问题。

同时,问题的记者将收到我们计划公开发布日期的通知。

在披露当天,我们将采取以下步骤:

  1. 将相关补丁应用于Django的代码库。这些修补程序的提交消息将指示它们用于安全问题,但不会详细描述该问题;相反,他们会警告即将披露的信息。
  2. 通过将新软件包放在Python包索引和Django网站上,并在Django的git存储库中标记新版本,发布相关版本。
  3. 官方Django开发博客上发布公开条目,详细描述问题及其解决方案,指向相关补丁和新版本,并将问题归功于记者(如果记者希望公开鉴定)。
  4. 在链接到该博文的django-announce邮件列表中发布通知。

如果报告的问题被认为是特别时间敏感的 - 例如,由于野生动物已知的利用,预先通知和公开披露之间的时间可能会大大缩短。

此外,如果我们有理由相信报告给我们的问题会影响Python / Web生态系统中的其他框架或工具,我们可能会私下与相应的维护者联系并讨论这些问题,并协调我们自己的披露和解决方案。

Django团队还维护Django中公开的archive of security issues disclosed in Django

Who receives advance notification

事先通知安全问题的人员和组织的完整名单不会公开,也不会公开。

我们还旨在尽可能保持此列表尽可能小,以便在公开之前更好地管理机密信息的流动。因此,我们的通知列表不是只是Django的用户列表,并且仅仅是Django的用户不足以放在通知列表上。

广义上,安全通知的接收者分为三组:

  1. Django的操作系统供应商和其他经销商提供适当通用的(即个人的个人电子邮件地址)联系地址,用于报告与其Django包有关的问题,或用于一般安全报告。在任一情况下,这种地址不能转发到公共邮件列表或错误跟踪器。转发到个人维护者或安全响应联系人的私人电子邮件的地址是可接受的,但是强烈优选私人安全跟踪器或安全响应组。
  2. 在个案基础上,个别包裹维护者已经表现出对这些通知做出响应并负责地采取行动的承诺。
  3. 在个案的基础上,其他实体,根据Django开发团队的判断,需要知道一个未决的安全问题。通常,该组中的成员资格将包括一些最大的和/或最可能受到严重影响的Django的已知用户或分发者,并且将需要被证明的能力来负责地接收,保密和对这些通知采取行动。

此外,在披露前最多6天,通知将发送到[email protected]邮件列表,其成员包括大多数主要开源操作系统供应商的代表。

Requesting notifications

如果您认为您或您授权代表的机构属于上述其中一个群组,您可以要求透过电子邮件[email protected]将其新增至Django的通知清单。请使用主题行“安全通知请求”。

您的要求必须包含以下信息:

  • 您的完整,真实姓名以及您所代表的组织的名称(如果适用)以及您在该组织内的角色。
  • 有关您或您的组织如何符合上述至少一组条件的详细说明。
  • 有关请求安全通知的原因的详细说明。Again, please keep in mind that this is not simply a list for users of Django, and the overwhelming majority of users of Django should not request notifications and will not be added to our notification list if they do.
  • 您要添加到我们的通知列表中的电子邮件地址。
  • 解释将收到/审阅发送到该地址的邮件的人员,以及将要执行的任何自动操作(即,在错误跟踪器中提交机密问题)的信息。
  • 对于个人,与您的地址相关联的公钥的ID,可用于验证从您收到的电子邮件,并根据需要加密发送给您的电子邮件。

一旦提交,您的请求将由Django开发团队考虑;您将收到一封回复,在30天内通知您您的请求结果。

另请注意,对于任何个人或组织,接收安全通知是由Django开发团队自行决定授予的特权,并且此权限可随时撤销,无论是否解释。

如果您添加到通知列表,Django的发布团队会将与安全相关的电子邮件发送给您,所有通知电子邮件都将使用授权发布Django版本的密钥进行签名。授权键列表位于Django释放程序文件中。