Skip to main content

Django的安全策略

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

报告安全问题

短版本:请通过电子邮件发送security@djangoproject.com报告安全问题

Django中最常见的错误报告给 our public Trac instance,但是由于安全问题的敏感性,我们要求他们以这种方式公开报告

相反,如果您认为您在Django中发现了具有安全隐患的内容,请通过电子邮件向 security@djangoproject.com 发送该问题的说明。发送到该地址的邮件到达 核心团队的子集核心团队的子集 可以将安全问题转发到私人团队的邮件列表,以便在需要时进行更广泛的讨论。

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

正在发送加密报告

如果要发送加密电子邮件(optional),security@djangoproject.com 的公钥ID为 0xfcb84b8d1d17f80b,并且此公钥可从最常用的密钥服务器获取。

支持的版本

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

  • master development branch,托管在GitHub上,将成为Django的下一个主要版本,接受安全支持。只影响主开发分支而不是任何稳定发布的版本的安全问题是公开的,不通过 披露过程

  • 两个最新的Django发行版系列接受安全支持。例如,在开发周期导致Django 1.5的发布,将支持Django 1.4和Django 1.3。发布Django 1.5后,Django 1.3的安全支持将结束。

  • Long-term support release 将在指定的时间段内接收安全更新。

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

Django如何公开安全问题

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

在公开披露大约一周前,我们发送两个通知:

首先,我们通知 django-announce 即将发布的安全版本的日期和大概时间,以及问题的严重性。这是为了帮助需要确保他们有工作人员处理分类我们的公告和根据需要升级Django的组织。严重性级别包括:

  • 远程代码执行

  • SQL注入

中等

  • 跨站脚本(XSS)

  • 跨站点请求伪造(CSRF)

  • 损坏的身份验证

  • 敏感数据暴露

  • 会话管理中断

  • 未验证的重定向/转发

  • 需要不常见配置选项的问题

第二,我们通知一个 人和组织 的列表,主要由操作系统供应商和Django的其他分发者组成。此电子邮件使用 Django的发布团队 的某人的PGP密钥签名,包括:

  • 问题的完整描述和受影响的Django版本。

  • 我们将采取的措施来纠正这个问题。

  • 将应用于Django的修补程序(如果有)。

  • Django团队将应用这些补丁的日期,发布新版本并公开披露此问题。

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

  1. 将相关补丁应用于Django的代码库。

  2. 通过在 the Python Package Index 和Django网站上放置新软件包,并在Django的git存储库中标记新版本,发布相关版本。

  3. the official Django development blog 上发布公开条目,详细描述问题及其解决方案,指向相关补丁和新版本,并记录问题的记者(如果记者希望被公开识别)。

  4. 发布通知到链接到博客文章的 django-announceoss-security@lists.openwall.com 邮件列表。

如果所报告的问题被认为是特别时间敏感的 - 例如,由于在野外的已知漏洞,预先通知和公开披露之间的时间可能大大缩短。

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

Django团队还维护 archive of security issues disclosed in Django

谁收到提前通知

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

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

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

  1. 操作系统供应商和Django的其他分发者提供适当通用(即,not 个人的个人电子邮件地址)联系地址以用于报告他们的Django包或者用于一般安全性报告的问题。在任一情况下,这样的地址 一定不 转发到公共邮件列表或错误跟踪器。转发到个人维护者或安全响应联系人的私人电子邮件的地址是可接受的,但是强烈优选私人安全跟踪器或安全响应组。

  2. 在个案基础上,个别包裹维护者已经表现出对这些通知做出响应并负责地采取行动的承诺。

  3. 在个案的基础上,其他实体,根据Django开发团队的判断,需要知道一个未决的安全问题。通常,该组中的成员资格将由一些最大的和/或最可能受到严重影响的Django的已知用户或分发者组成,并且将需要被证明的能力来负责地接收,保密和对这些通知采取行动。

正在请求通知

如果您认为您或您授权代表的组织属于上述任一组别,您可以通过向 security@djangoproject.com 发送电子邮件,要求将其添加到Django的通知列表中。请使用主题行“安全通知请求”。

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

  • 您的完整,真实姓名和您所代表的组织的名称(如果适用)以及您在该组织内的角色。

  • 有关您或您的组织如何符合上述至少一组条件的详细说明。

  • 有关请求安全通知的原因的详细说明。同样,请记住,这是 not 只是Django用户的列表,绝大多数用户应订阅 django-announce 以接收关于什么时候发生安全发布的高级通知,没有问题的详细信息,而不是请求详细通知。

  • 您要添加到我们的通知列表中的电子邮件地址。

  • 解释将收到/审阅发送到该地址的邮件的人员,以及将要执行的任何自动操作(即,在错误跟踪器中提交机密问题)的信息。

  • 对于个人,与您的地址相关联的公钥的ID,可用于验证从您收到的电子邮件,并根据需要加密发送给您的电子邮件。

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

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