security.txt 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. .. _internals-security:
  2. ==========================
  3. Django's security policies
  4. ==========================
  5. Django's development team is strongly committed to responsible
  6. reporting and disclosure of security-related issues. As such, we've
  7. adopted and follow a set of policies which conform to that ideal and
  8. are geared toward allowing us to deliver timely security updates to
  9. the official distribution of Django, as well as to third-party
  10. distributions.
  11. .. _reporting-security-issues:
  12. Reporting security issues
  13. =========================
  14. **Short version: please report security issues by emailing
  15. security@djangoproject.com**.
  16. Most normal bugs in Django are reported to `our public Trac
  17. instance`_, but due to the sensitive nature of security issues, we ask
  18. that they **not** be publicly reported in this fashion.
  19. Instead, if you believe you've found something in Django which has
  20. security implications, please send a description of the issue via
  21. email to ``security@djangoproject.com``. Mail sent to that address
  22. reaches a subset of the core development team, who can forward
  23. security issues into the private committers' mailing list for broader
  24. discussion if needed.
  25. Once you've submitted an issue via email, you should receive an
  26. acknowledgment from a member of the Django development team within 48
  27. hours, and depending on the action to be taken, you may receive
  28. further followup emails.
  29. .. note::
  30. If you want to send an encrypted email (*optional*), the public key ID for
  31. ``security@djangoproject.com`` is ``0xfcb84b8d1d17f80b``, and this public
  32. key is available from most commonly-used keyservers.
  33. .. _our public Trac instance: https://code.djangoproject.com/query
  34. .. _security-support:
  35. Supported versions
  36. ==================
  37. At any given time, the Django team provides official security support
  38. for several versions of Django:
  39. * The `master development branch`_, hosted on GitHub, which will
  40. become the next release of Django, receives security support.
  41. * The two most recent Django release series receive security
  42. support. For example, during the development cycle leading to the
  43. release of Django 1.5, support will be provided for Django 1.4 and
  44. Django 1.3. Upon the release of Django 1.5, Django 1.3's security
  45. support will end.
  46. * :ref:`Long-term support (LTS) releases <lts-releases>` will receive
  47. security updates for a specified period.
  48. When new releases are issued for security reasons, the accompanying
  49. notice will include a list of affected versions. This list is
  50. comprised solely of *supported* versions of Django: older versions may
  51. also be affected, but we do not investigate to determine that, and
  52. will not issue patches or new releases for those versions.
  53. .. _master development branch: https://github.com/django/django/
  54. .. _security-disclosure:
  55. How Django discloses security issues
  56. ====================================
  57. Our process for taking a security issue from private discussion to
  58. public disclosure involves multiple steps.
  59. Approximately one week before full public disclosure, we will send
  60. advance notification of the issue to a list of people and
  61. organizations, primarily composed of operating-system vendors and
  62. other distributors of Django. This notification will consist of an
  63. email message, signed with the Django release key, containing:
  64. * A full description of the issue and the affected versions of Django.
  65. * The steps we will be taking to remedy the issue.
  66. * The patch(es), if any, that will be applied to Django.
  67. * The date on which the Django team will apply these patches, issue
  68. new releases and publicly disclose the issue.
  69. Simultaneously, the reporter of the issue will receive notification of
  70. the date on which we plan to take the issue public.
  71. On the day of disclosure, we will take the following steps:
  72. 1. Apply the relevant patch(es) to Django's codebase. The commit
  73. messages for these patches will indicate that they are for security
  74. issues, but will not describe the issue in any detail; instead,
  75. they will warn of upcoming disclosure.
  76. 2. Issue the relevant release(s), by placing new packages on `the
  77. Python Package Index`_ and on the Django website, and tagging the
  78. new release(s) in Django's git repository.
  79. 3. Post a public entry on `the official Django development blog`_,
  80. describing the issue and its resolution in detail, pointing to the
  81. relevant patches and new releases, and crediting the reporter of
  82. the issue (if the reporter wishes to be publicly identified).
  83. 4. Post a notice to the |django-announce| mailing list that links to the blog
  84. post.
  85. .. _the Python Package Index: https://pypi.python.org/pypi
  86. .. _the official Django development blog: https://www.djangoproject.com/weblog/
  87. If a reported issue is believed to be particularly time-sensitive --
  88. due to a known exploit in the wild, for example -- the time between
  89. advance notification and public disclosure may be shortened
  90. considerably.
  91. Additionally, if we have reason to believe that an issue reported to
  92. us affects other frameworks or tools in the Python/web ecosystem, we
  93. may privately contact and discuss those issues with the appropriate
  94. maintainers, and coordinate our own disclosure and resolution with
  95. theirs.
  96. The Django team also maintains an :doc:`archive of security issues
  97. disclosed in Django</releases/security>`.
  98. .. _security-notifications:
  99. Who receives advance notification
  100. =================================
  101. The full list of people and organizations who receive advance
  102. notification of security issues is not and will not be made public.
  103. We also aim to keep this list as small as effectively possible, in
  104. order to better manage the flow of confidential information prior to
  105. disclosure. As such, our notification list is *not* simply a list of
  106. users of Django, and merely being a user of Django is not sufficient
  107. reason to be placed on the notification list.
  108. In broad terms, recipients of security notifications fall into three
  109. groups:
  110. 1. Operating-system vendors and other distributors of Django who
  111. provide a suitably-generic (i.e., *not* an individual's personal
  112. email address) contact address for reporting issues with their
  113. Django package, or for general security reporting. In either case,
  114. such addresses **must not** forward to public mailing lists or bug
  115. trackers. Addresses which forward to the private email of an
  116. individual maintainer or security-response contact are acceptable,
  117. although private security trackers or security-response groups are
  118. strongly preferred.
  119. 2. On a case-by-case basis, individual package maintainers who have
  120. demonstrated a commitment to responding to and responsibly acting
  121. on these notifications.
  122. 3. On a case-by-case basis, other entities who, in the judgment of the
  123. Django development team, need to be made aware of a pending
  124. security issue. Typically, membership in this group will consist of
  125. some of the largest and/or most likely to be severely impacted
  126. known users or distributors of Django, and will require a
  127. demonstrated ability to responsibly receive, keep confidential and
  128. act on these notifications.
  129. Additionally, a maximum of six days prior to disclosure, notification
  130. will be sent to the ``distros@vs.openwall.org`` mailing list, whose
  131. membership includes representatives of most major open-source
  132. operating system vendors.
  133. Requesting notifications
  134. ========================
  135. If you believe that you, or an organization you are authorized to
  136. represent, fall into one of the groups listed above, you can ask to be
  137. added to Django's notification list by emailing
  138. ``security@djangoproject.com``. Please use the subject line "Security
  139. notification request".
  140. Your request **must** include the following information:
  141. * Your full, real name and the name of the organization you represent,
  142. if applicable, as well as your role within that organization.
  143. * A detailed explanation of how you or your organization fit at least
  144. one set of criteria listed above.
  145. * A detailed explanation of why you are requesting security
  146. notifications. Again, please keep in mind that this is *not* simply
  147. a list for users of Django, and the overwhelming majority of users
  148. of Django should not request notifications and will not be added to
  149. our notification list if they do.
  150. * The email address you would like to have added to our notification
  151. list.
  152. * An explanation of who will be receiving/reviewing mail sent to that
  153. address, as well as information regarding any automated actions that
  154. will be taken (i.e., filing of a confidential issue in a bug
  155. tracker).
  156. * For individuals, the ID of a public key associated with your address
  157. which can be used to verify email received from you and encrypt
  158. email sent to you, as needed.
  159. Once submitted, your request will be considered by the Django
  160. development team; you will receive a reply notifying you of the result
  161. of your request within 30 days.
  162. Please also bear in mind that for any individual or organization,
  163. receiving security notifications is a privilege granted at the sole
  164. discretion of the Django development team, and that this privilege can
  165. be revoked at any time, with or without explanation.
  166. If you are added to the notification list, security-related emails
  167. will be sent to you by Django's release team, and all notification
  168. emails will be signed with a key authorized to issue Django
  169. releases. The list of authorized keys is in `the Django releasers
  170. file`_.
  171. .. _the Django releasers file: https://www.djangoproject.com/m/pgp/django-releasers.txt
  172. same key used to sign Django releases;
  173. that key has the ID ``0x3684C0C08C8B2AE1``, and is available from most
  174. commonly-used keyservers.