• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Security
2========
3
4We take the security of ``cryptography`` seriously. The following are a set of
5policies we have adopted to ensure that security issues are addressed in a
6timely fashion.
7
8Infrastructure
9--------------
10
11In addition to ``cryptography``'s code, we're also concerned with the security
12of the infrastructure we run (primarily ``cryptography.io`` and
13``ci.cryptography.io``). If you discover a security vulnerability in our
14infrastructure, we ask you to report it using the same procedure.
15
16What is a security issue?
17-------------------------
18
19Anytime it's possible to write code using ``cryptography``'s public API which
20does not provide the guarantees that a reasonable developer would expect it to
21based on our documentation.
22
23That's a bit academic, but basically it means the scope of what we consider a
24vulnerability is broad, and we do not require a proof of concept or even a
25specific exploit, merely a reasonable threat model under which ``cryptography``
26could be attacked.
27
28To give a few examples of things we would consider security issues:
29
30* If a recipe, such as Fernet, made it easy for a user to bypass
31  confidentiality or integrity with the public API (e.g. if the API let a user
32  reuse nonces).
33* If, under any circumstances, we used a CSPRNG which wasn't fork-safe.
34* If ``cryptography`` used an API in an underlying C library and failed to
35  handle error conditions safely.
36
37Examples of things we wouldn't consider security issues:
38
39* Offering ECB mode for symmetric encryption in the *Hazmat* layer. Though ECB
40  is critically weak, it is documented as being weak in our documentation.
41* Using a variable time comparison somewhere, if it's not possible to
42  articulate any particular program in which this would result in problematic
43  information disclosure.
44
45In general, if you're unsure, we request that you to default to treating things
46as security issues and handling them sensitively, the worst thing that can
47happen is that we'll ask you to file a public issue.
48
49Reporting a security issue
50--------------------------
51
52We ask that you do not report security issues to our normal GitHub issue
53tracker.
54
55If you believe you've identified a security issue with ``cryptography``, please
56report it to ``alex.gaynor@gmail.com``. Messages may be optionally encrypted
57with PGP using key fingerprint
58``F7FC 698F AAE2 D2EF BECD  E98E D1B3 ADC0 E023 8CA6`` (this public key is
59available from most commonly-used key servers).
60
61Once you've submitted an issue via email, you should receive an acknowledgment
62within 48 hours, and depending on the action to be taken, you may receive
63further follow-up emails.
64
65Supported Versions
66------------------
67
68At any given time, we will provide security support for the `master`_ branch
69as well as the most recent release.
70
71New releases for OpenSSL updates
72--------------------------------
73
74As of versions 0.5, 1.0.1, and 2.0.0, ``cryptography`` statically links OpenSSL
75on Windows, macOS, and Linux respectively, to ease installation. Due to this,
76``cryptography`` will release a new version whenever OpenSSL has a security or
77bug fix release to avoid shipping insecure software.
78
79Like all our other releases, this will be announced on the mailing list and we
80strongly recommend that you upgrade as soon as possible.
81
82Disclosure Process
83------------------
84
85When we become aware of a security bug in ``cryptography``, we will endeavor to
86fix it and issue a release as quickly as possible. We will generally issue a new
87release for any security issue.
88
89The steps for issuing a security release are described in our
90:doc:`/doing-a-release` documentation.
91
92
93.. _`master`: https://github.com/pyca/cryptography
94