{"title":"Django’s security policies","version":"1.9","locale":"en","docname":"internals/security","url":"/en/1.9/internals/security/","canonical":"https://djangodocs.dev/en/1.9/internals/security/","summary":"Django’s development team is strongly committed to responsible reporting and disclosure of security-related issues. As such, we’ve adopted and follow a set of…","html":"<h1>Django’s security policies<a class=\"heading-anchor\" href=\"#django-s-security-policies\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django’s development team is strongly committed to responsible\nreporting and disclosure of security-related issues. As such, we’ve\nadopted and follow a set of policies which conform to that ideal and\nare geared toward allowing us to deliver timely security updates to\nthe official distribution of Django, as well as to third-party\ndistributions.</p>\n<section id=\"reporting-security-issues\">\n<span id=\"id1\"></span><h2>Reporting security issues<a class=\"heading-anchor\" href=\"#reporting-security-issues\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><strong>Short version: please report security issues by emailing\nsecurity&#64;djangoproject.com</strong>.</p>\n<p>Most normal bugs in Django are reported to <a class=\"reference external\" href=\"https://code.djangoproject.com/query\">our public Trac instance</a>, but\ndue to the sensitive nature of security issues, we ask that they <strong>not</strong> be\npublicly reported in this fashion.</p>\n<p>Instead, if you believe you’ve found something in Django which has security\nimplications, please send a description of the issue via email to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">security&#64;djangoproject.com</span></code>. Mail sent to that address reaches a\n<a class=\"reference internal\" href=\"/en/1.9/internals/roles/#security-team-list\"><span class=\"std std-ref\">subset of the core team</span></a>, who can forward security\nissues into the private committers’ mailing list for broader discussion if\nneeded.</p>\n<p>Once you’ve submitted an issue via email, you should receive an acknowledgment\nfrom a member of the security team within 48 hours, and depending on the\naction to be taken, you may receive further followup emails.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>If you want to send an encrypted email (<em>optional</em>), the public key ID for\n<code class=\"docutils literal notranslate\"><span class=\"pre\">security&#64;djangoproject.com</span></code> is <code class=\"docutils literal notranslate\"><span class=\"pre\">0xfcb84b8d1d17f80b</span></code>, and this public\nkey is available from most commonly-used keyservers.</p>\n</aside>\n</section>\n<section id=\"supported-versions\">\n<span id=\"security-support\"></span><h2>Supported versions<a class=\"heading-anchor\" href=\"#supported-versions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>At any given time, the Django team provides official security support\nfor several versions of Django:</p>\n<ul class=\"simple\">\n<li><p>The <a class=\"reference external\" href=\"https://github.com/django/django/\">master development branch</a>, hosted on GitHub, which will\nbecome the next release of Django, receives security support.</p></li>\n<li><p>The two most recent Django release series receive security\nsupport. For example, during the development cycle leading to the\nrelease of Django 1.5, support will be provided for Django 1.4 and\nDjango 1.3. Upon the release of Django 1.5, Django 1.3’s security\nsupport will end.</p></li>\n<li><p><a class=\"reference internal\" href=\"/en/1.9/internals/release-process/#term-Long-term-support-release\"><span class=\"xref std std-term\">Long-term support release</span></a>s will receive security updates for a\nspecified period.</p></li>\n</ul>\n<p>When new releases are issued for security reasons, the accompanying\nnotice will include a list of affected versions. This list is\ncomprised solely of <em>supported</em> versions of Django: older versions may\nalso be affected, but we do not investigate to determine that, and\nwill not issue patches or new releases for those versions.</p>\n</section>\n<section id=\"how-django-discloses-security-issues\">\n<span id=\"security-disclosure\"></span><h2>How Django discloses security issues<a class=\"heading-anchor\" href=\"#how-django-discloses-security-issues\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Our process for taking a security issue from private discussion to\npublic disclosure involves multiple steps.</p>\n<p>Approximately one week before full public disclosure, we will send\nadvance notification of the issue to a list of people and\norganizations, primarily composed of operating-system vendors and\nother distributors of Django. This notification will consist of an\nemail message, signed with the Django release key, containing:</p>\n<ul class=\"simple\">\n<li><p>A full description of the issue and the affected versions of Django.</p></li>\n<li><p>The steps we will be taking to remedy the issue.</p></li>\n<li><p>The patch(es), if any, that will be applied to Django.</p></li>\n<li><p>The date on which the Django team will apply these patches, issue\nnew releases and publicly disclose the issue.</p></li>\n</ul>\n<p>Simultaneously, the reporter of the issue will receive notification of\nthe date on which we plan to take the issue public.</p>\n<p>On the day of disclosure, we will take the following steps:</p>\n<ol class=\"arabic simple\">\n<li><p>Apply the relevant patch(es) to Django’s codebase. The commit\nmessages for these patches will indicate that they are for security\nissues, but will not describe the issue in any detail; instead,\nthey will warn of upcoming disclosure.</p></li>\n<li><p>Issue the relevant release(s), by placing new packages on <a class=\"reference external\" href=\"https://pypi.python.org/pypi\">the\nPython Package Index</a> and on the Django website, and tagging the\nnew release(s) in Django’s git repository.</p></li>\n<li><p>Post a public entry on <a class=\"reference external\" href=\"https://www.djangoproject.com/weblog/\">the official Django development blog</a>,\ndescribing the issue and its resolution in detail, pointing to the\nrelevant patches and new releases, and crediting the reporter of\nthe issue (if the reporter wishes to be publicly identified).</p></li>\n<li><p>Post a notice to the <a class=\"reference internal\" href=\"/en/1.9/internals/mailing-lists/#django-announce-mailing-list\"><span class=\"std std-ref\">django-announce</span></a> and <a class=\"reference external\" href=\"mailto:oss-security&#37;&#52;&#48;lists&#46;openwall&#46;com\">oss-security<span>&#64;</span>lists<span>&#46;</span>openwall<span>&#46;</span>com</a>\nmailing lists that links to the blog post.</p></li>\n</ol>\n<p>If a reported issue is believed to be particularly time-sensitive –\ndue to a known exploit in the wild, for example – the time between\nadvance notification and public disclosure may be shortened\nconsiderably.</p>\n<p>Additionally, if we have reason to believe that an issue reported to\nus affects other frameworks or tools in the Python/web ecosystem, we\nmay privately contact and discuss those issues with the appropriate\nmaintainers, and coordinate our own disclosure and resolution with\ntheirs.</p>\n<p>The Django team also maintains an <a class=\"reference internal\" href=\"/en/1.9/releases/security/\"><span class=\"doc\">archive of security issues\ndisclosed in Django</span></a>.</p>\n</section>\n<section id=\"who-receives-advance-notification\">\n<span id=\"security-notifications\"></span><h2>Who receives advance notification<a class=\"heading-anchor\" href=\"#who-receives-advance-notification\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>The full list of people and organizations who receive advance\nnotification of security issues is not and will not be made public.</p>\n<p>We also aim to keep this list as small as effectively possible, in\norder to better manage the flow of confidential information prior to\ndisclosure. As such, our notification list is <em>not</em> simply a list of\nusers of Django, and merely being a user of Django is not sufficient\nreason to be placed on the notification list.</p>\n<p>In broad terms, recipients of security notifications fall into three\ngroups:</p>\n<ol class=\"arabic simple\">\n<li><p>Operating-system vendors and other distributors of Django who\nprovide a suitably-generic (i.e., <em>not</em> an individual’s personal\nemail address) contact address for reporting issues with their\nDjango package, or for general security reporting. In either case,\nsuch addresses <strong>must not</strong> forward to public mailing lists or bug\ntrackers. Addresses which forward to the private email of an\nindividual maintainer or security-response contact are acceptable,\nalthough private security trackers or security-response groups are\nstrongly preferred.</p></li>\n<li><p>On a case-by-case basis, individual package maintainers who have\ndemonstrated a commitment to responding to and responsibly acting\non these notifications.</p></li>\n<li><p>On a case-by-case basis, other entities who, in the judgment of the\nDjango development team, need to be made aware of a pending\nsecurity issue. Typically, membership in this group will consist of\nsome of the largest and/or most likely to be severely impacted\nknown users or distributors of Django, and will require a\ndemonstrated ability to responsibly receive, keep confidential and\nact on these notifications.</p></li>\n</ol>\n</section>\n<section id=\"requesting-notifications\">\n<h2>Requesting notifications<a class=\"heading-anchor\" href=\"#requesting-notifications\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>If you believe that you, or an organization you are authorized to\nrepresent, fall into one of the groups listed above, you can ask to be\nadded to Django’s notification list by emailing\n<code class=\"docutils literal notranslate\"><span class=\"pre\">security&#64;djangoproject.com</span></code>. Please use the subject line “Security\nnotification request”.</p>\n<p>Your request <strong>must</strong> include the following information:</p>\n<ul class=\"simple\">\n<li><p>Your full, real name and the name of the organization you represent,\nif applicable, as well as your role within that organization.</p></li>\n<li><p>A detailed explanation of how you or your organization fit at least\none set of criteria listed above.</p></li>\n<li><p>A detailed explanation of why you are requesting security\nnotifications. Again, please keep in mind that this is <em>not</em> simply\na list for users of Django, and the overwhelming majority of users\nof Django should not request notifications and will not be added to\nour notification list if they do.</p></li>\n<li><p>The email address you would like to have added to our notification\nlist.</p></li>\n<li><p>An explanation of who will be receiving/reviewing mail sent to that\naddress, as well as information regarding any automated actions that\nwill be taken (i.e., filing of a confidential issue in a bug\ntracker).</p></li>\n<li><p>For individuals, the ID of a public key associated with your address\nwhich can be used to verify email received from you and encrypt\nemail sent to you, as needed.</p></li>\n</ul>\n<p>Once submitted, your request will be considered by the Django\ndevelopment team; you will receive a reply notifying you of the result\nof your request within 30 days.</p>\n<p>Please also bear in mind that for any individual or organization,\nreceiving security notifications is a privilege granted at the sole\ndiscretion of the Django development team, and that this privilege can\nbe revoked at any time, with or without explanation.</p>\n<p>If you are added to the notification list, security-related emails\nwill be sent to you by Django’s release team, and all notification\nemails will be signed with a key authorized to issue Django\nreleases. The list of authorized keys is in <a class=\"reference external\" href=\"https://www.djangoproject.com/m/pgp/django-releasers.txt\">the Django releasers\nfile</a>.</p>\n</section>","rootId":"django-s-security-policies","toc":[{"title":"Reporting security issues","anchor":"reporting-security-issues","children":[]},{"title":"Supported versions","anchor":"supported-versions","children":[]},{"title":"How Django discloses security issues","anchor":"how-django-discloses-security-issues","children":[]},{"title":"Who receives advance notification","anchor":"who-receives-advance-notification","children":[]},{"title":"Requesting notifications","anchor":"requesting-notifications","children":[]}],"breadcrumbs":[{"docname":"internals/index","title":"Django internals","url":"/en/1.9/internals/"}],"prev":{"docname":"internals/roles","title":"Roles","url":"/en/1.9/internals/roles/"},"next":{"docname":"internals/release-process","title":"Django’s release process","url":"/en/1.9/internals/release-process/"},"formats":{"html":"/en/1.9/internals/security/","markdown":"/en/1.9/internals/security.md","json":"/en/1.9/internals/security.json"},"source":"https://github.com/django/django/blob/stable/1.9.x/docs/internals/security.txt","official":"https://docs.djangoproject.com/en/1.9/internals/security/","inVersions":["dev","6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9","1.8"],"inLocales":["en","fr","ja","id","pt-br","es"]}