Django的安全政策

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

报告安全问题

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

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

相反,如果您认为您在Django发现了安全隐患,请通过电子邮件将问题描述发送至 security@djangoproject.com . 发送到该地址的邮件到达 security team .

一旦您通过电子邮件提交了一个问题,您应该在48小时内收到安全团队成员的确认,并且根据要采取的行动,您可能会收到进一步的后续电子邮件。

发送加密报告

如果你想发送加密邮件( 可选择的 )的公钥ID security@djangoproject.com0xfcb84b8d1d17f80b ,此公钥可从最常用的密钥服务器获得。

支持的版本

在任何时候,Django团队都会为几个版本的Django提供官方安全支持:

  • 这个 main development branch ,托管在GitHub上,这将成为Django的下一个主要版本,得到安全支持。只影响主开发分支而不影响任何稳定发布版本的安全问题是公开修复的,无需经过 disclosure process

  • 最近的两个Django发行系列获得了安全支持。例如,在导致Django 1.5发布的开发周期中,将为Django 1.4和Django 1.3提供支持。Django 1.5发布后,Django 1.3的安全支持将结束。

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

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

Django如何披露安全问题

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

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

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

High

  • 远程代码执行

  • SQL注入

适度的

  • 跨站点脚本(XSS)

  • 跨站点请求伪造(CSRF)

  • 阻断服务攻击

  • 损坏的身份验证

Low

  • 敏感数据暴露

  • 中断的会话管理

  • 未验证的重定向/转发

  • 需要特殊配置选项的问题

第二,我们通知 people and organizations 主要由操作系统供应商和Django的其他经销商组成。此电子邮件使用某人的pgp密钥签名,该密钥来自 Django's release team 包括:

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

  • 我们将采取的补救措施。

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

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

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

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

  2. 发布相关新闻稿(S),将新包放置在 Python Package Index 以及在 djangoproject.com website ,并在Django的Git库中标记新版本(S)。

  3. 在上发布公共条目 the official Django development blog 详细描述该问题及其解决方案,指出相关补丁和新版本,并将该问题归功于报告人(如果报告人希望公开确认)。

  4. 向django announce和oss-security@lists.openwall.com邮件列表发布通知,链接到博客文章。

如果一个报告的问题被认为是特别敏感的——例如,由于野外已知的剥削——提前通知和公开披露之间的时间可能会大大缩短。

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

Django团队还保持 archive of security issues disclosed in Django .

谁收到预先通知

收到安全问题预先通知的人员和组织的完整列表不会公开,也不会公开。

我们还致力于使这份清单尽可能小,以便在披露前更好地管理机密信息的流动。因此,我们的通知列表是 not 仅仅是一个Django用户的列表,并且作为Django的用户并不足以成为被放在通知列表上的理由。

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

  1. 提供适当通用(即, not 个人的个人电子邮件地址)用于报告他们的django软件包问题的联系地址,或用于一般安全报告的联系地址。在任何一种情况下,此类地址 不能 转发到公共邮件列表或bug跟踪程序。可接受转发到个人维护者或安全响应联系人的私人电子邮件的地址,尽管强烈建议使用私人安全跟踪者或安全响应组。

  2. 根据具体情况,对这些通知作出响应并负责任地采取行动的各个包维护人员。

  3. 根据Django开发团队的判断,需要逐案了解未决安全问题的其他实体。通常,该集团的成员将包括一些最大的和/或最有可能受到严重影响的Django已知用户或分销商,并且需要证明能够负责任地接收、保密并对这些通知采取行动。

安全审计和扫描实体

作为策略,我们不会将这些类型的实体添加到通知列表中。

请求通知

如果您认为您或您被授权代表的组织属于上面列出的组之一,您可以通过电子邮件请求添加到Django的通知列表中。 security@djangoproject.com . 请使用主题行“安全通知请求”。

你的要求 must 包括以下信息:

  • 您的全名、真实姓名以及您所代表的组织的名称(如果适用),以及您在该组织中的角色。

  • 关于您或您的组织如何符合上面列出的至少一组标准的详细说明。

  • 有关您请求安全通知的原因的详细解释。再说一遍,请记住这是 not 只需一个Django用户列表,绝大多数用户应该订阅Django Announce以提前收到安全发布时间的通知,而不需要提供问题的详细信息,而不是请求详细通知。

  • 您希望添加到通知列表中的电子邮件地址。

  • 关于谁将接收/审查发送到该地址的邮件的说明,以及有关将要采取的任何自动操作的信息(即,在错误追踪器中归档机密问题)。

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

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

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

提供所有必需的信息

在决定是否批准您的请求时,如果您未能在初始联系人中提供所需的信息,将对您不利。