| Security |
| ======== |
| |
| We take the security of ``cryptography`` seriously. The following are a set of |
| policies we have adopted to ensure that security issues are addressed in a |
| timely fashion. |
| |
| Known vulnerabilities |
| --------------------- |
| |
| A list of all known vulnerabilities in ``cryptography`` can be found on |
| `osv.dev`_, as well as other ecosystem vulnerability databases. They can |
| automatically be scanned for using tools such as `pip-audit`_ or `osv-scan`_. |
| |
| Infrastructure |
| -------------- |
| |
| In addition to ``cryptography``'s code, we're also concerned with the security |
| of the infrastructure we run (primarily ``cryptography.io``). If you discover |
| a security vulnerability in our infrastructure, we ask you to report it using |
| the same procedure. |
| |
| What is a security issue? |
| ------------------------- |
| |
| Anytime it's possible to write code using ``cryptography``'s public API which |
| does not provide the guarantees that a reasonable developer would expect it to |
| based on our documentation. |
| |
| That's a bit academic, but basically it means the scope of what we consider a |
| vulnerability is broad, and we do not require a proof of concept or even a |
| specific exploit, merely a reasonable threat model under which ``cryptography`` |
| could be attacked. |
| |
| To give a few examples of things we would consider security issues: |
| |
| * If a recipe, such as Fernet, made it easy for a user to bypass |
| confidentiality or integrity with the public API (e.g. if the API let a user |
| reuse nonces). |
| * If, under any circumstances, we used a CSPRNG which wasn't fork-safe. |
| * If ``cryptography`` used an API in an underlying C library and failed to |
| handle error conditions safely. |
| |
| Examples of things we wouldn't consider security issues: |
| |
| * Offering ECB mode for symmetric encryption in the *Hazmat* layer. Though ECB |
| is critically weak, it is documented as being weak in our documentation. |
| * Using a variable time comparison somewhere, if it's not possible to |
| articulate any particular program in which this would result in problematic |
| information disclosure. |
| |
| In general, if you're unsure, we request that you to default to treating things |
| as security issues and handling them sensitively, the worst thing that can |
| happen is that we'll ask you to file a public issue. |
| |
| Reporting a security issue |
| -------------------------- |
| |
| We ask that you do not report security issues to our normal GitHub issue |
| tracker. |
| |
| If you believe you've identified a security issue with ``cryptography``, |
| please report it via our `security advisory page`_. |
| |
| Once you've submitted an issue, you should receive an acknowledgment within 48 |
| hours, and depending on the action to be taken, you may receive further |
| follow-up. |
| |
| Supported Versions |
| ------------------ |
| |
| At any given time, we will provide security support for the `main`_ branch |
| as well as the most recent release. |
| |
| New releases for OpenSSL updates |
| -------------------------------- |
| |
| As of versions 0.5, 1.0.1, and 2.0.0, ``cryptography`` statically links OpenSSL |
| in binary distributions for Windows, macOS, and Linux respectively, to ease |
| installation. Due to this, ``cryptography`` will release a new version whenever |
| OpenSSL has a security or bug fix release to avoid shipping insecure software. |
| |
| Like all our other releases, this will be announced on the mailing list and we |
| strongly recommend that you upgrade as soon as possible. |
| |
| Disclosure Process |
| ------------------ |
| |
| When we become aware of a security bug in ``cryptography``, we will endeavor to |
| fix it and issue a release as quickly as possible. We will generally issue a new |
| release for any security issue. |
| |
| The steps for issuing a security release are described in our |
| :doc:`/doing-a-release` documentation. |
| |
| |
| .. _`osv.dev`: https://osv.dev/list?ecosystem=PyPI&q=cryptography |
| .. _`pip-audit`: https://pypi.org/project/pip-audit/ |
| .. _`osv-scan`: https://google.github.io/osv-scanner/ |
| .. _`security advisory page`: https://github.com/pyca/cryptography/security/advisories/new |
| .. _`main`: https://github.com/pyca/cryptography |