Update dependency cryptography to v49 [SECURITY] - #257
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
from
February 11, 2026 01:33
a26af63 to
817b7cf
Compare
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
from
February 11, 2026 06:34
817b7cf to
7abf5b5
Compare
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
2 times, most recently
from
February 27, 2026 11:28
7abf5b5 to
ecd8110
Compare
Member
|
Waiting for IdentityPython/pysaml2#977 to be able to update the cryptography dependency. |
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
2 times, most recently
from
February 27, 2026 12:59
ecd8110 to
84efcfd
Compare
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
from
March 13, 2026 12:41
84efcfd to
21e0c47
Compare
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
2 times, most recently
from
March 16, 2026 10:01
21e0c47 to
25b6939
Compare
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
2 times, most recently
from
April 29, 2026 12:02
cf1a466 to
7e1c4ad
Compare
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
2 times, most recently
from
May 12, 2026 11:33
7e1c4ad to
b2476c0
Compare
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
2 times, most recently
from
May 19, 2026 15:35
b2476c0 to
db0aa4d
Compare
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
from
June 16, 2026 05:58
db0aa4d to
0fc050d
Compare
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
2 times, most recently
from
July 20, 2026 20:59
78c5b5b to
06cf805
Compare
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
from
August 4, 2026 03:04
06cf805 to
b351601
Compare
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
2 times, most recently
from
August 12, 2026 04:44
bc5866e to
8d1959b
Compare
renovate
Bot
force-pushed
the
renovate/pypi-cryptography-vulnerability
branch
from
August 26, 2026 09:09
8d1959b to
718a79a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==43.0.3→==49.0.0cryptography has incomplete DNS name constraint enforcement on peer names
CVE-2026-34073 / GHSA-m959-cc7f-wv43
More information
Details
Summary
In versions of cryptography prior to 46.0.5, DNS name constraints were only validated against SANs within child certificates, and not the "peer name" presented during each validation. Consequently, cryptography would allow a peer named
bar.example.comto validate against a wildcard leaf certificate for*.example.com, even if the leaf's parent certificate (or upwards) contained an excluded subtree constraint forbar.example.com.This behavior resulted from a gap between RFC 5280 (which defines Name Constraint semantics) and RFC 9525 (which defines service identity semantics): put together, neither states definitively whether Name Constraints should be applied to peer names. To close this gap, cryptography now conservatively rejects any validation where the peer name would be rejected by a name constraint if it were a SAN instead.
In practice, exploitation of this bypass requires an uncommon X.509 topology, one that the Web PKI avoids because it exhibits these kinds of problems. Consequently, we consider this a medium-to-low impact severity.
See CVE-2025-61727 for a similar bypass in Go's
crypto/x509.Remediation
Users should upgrade to 46.0.6 or newer.
Attribution
Reporter: @1seal
Severity
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:UReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Vulnerable OpenSSL included in cryptography wheels
GHSA-537c-gmf6-5ccf
More information
Details
pyca/cryptography's wheels include a statically linked copy of OpenSSL. The versions of OpenSSL included in wheels prior to cryptograph 48.01 are vulnerable to a security issue. More details about the vulnerability itself can be found in https://openssl-library.org/news/secadv/20260609.txt.
If you are building cryptography source ("sdist") then you are responsible for upgrading your copy of OpenSSL. Only users installing from wheels built by the cryptography project (i.e., those distributed on PyPI) need to update their cryptography versions.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
python-cryptography: Duplicate self-signed intermediates can cause exponential path-building
CVE-2026-69249 / GHSA-jwv3-5hgf-82ww
More information
Details
Summary
When resolving invalid certificate chains that include duplicate copies of self-signed certificates, the processing recursively invokes the same candidate, leading to an exponential blowup. Although the limitation that the chain depth cannot exceed a specified maximum depth prevents unbounded recursion and guarantees termination, an attacker-controlled certificate chain can lead the processing to easily take more than 5s to reject in testing. This amplification could form the basis for a resource exhaustion denial of service attack.
This work was completed by Trail of Bits as part of the Patch The Planet project in collaboration with OpenAI. The finding was identified primarily by the Codex coding agent, and manually reviewed before submission.
Details
The core issue arises in the recursive nature of
build_chain_inner, which does not de-duplicate against previously analyzed candidates.A sufficient patch is to track valid issuers, and to skip seen ones before recursing. By tracking valid issuers only, validation and custom extension-policy callbacks still run.
In testing, this fix removed the exponential blowup without breaking apparent correctness.
PoC
The following script benchmarks processing times for malicious cert chains.
Impact
This issue exposes an amplification pathway over data that in many applications may be user-controlled, leading to the possibility of a denial of service through resource exhaustion. As the correctness of validation is not affected, the integrity of a system cannot be compromised through this vector, only its availability.
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees
CVE-2026-69248 / GHSA-m2h6-j472-rp4c
More information
Details
Summary
If an intermediate constrained CA permits the DNS name
foo.example.com, and the leaf certificate has a wildcard in its DNS SAN of*.example.com, python-cryptography's verifier accepts which allows escaping outside of the permitted names.PoC
Impact
Acceptance of invalid certificate chain.
Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N/E:PReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Vulnerable OpenSSL included in cryptography wheels
CVE-2024-12797 / GHSA-79v4-65xg-pq4g / PYSEC-2026-1284
More information
Details
pyca/cryptography's wheels include a statically linked copy of OpenSSL. The versions of OpenSSL included in cryptography 42.0.0-44.0.0 are vulnerable to a security issue. More details about the vulnerability itself can be found in https://openssl-library.org/news/secadv/20250211.txt.
If you are building cryptography source ("sdist") then you are responsible for upgrading your copy of OpenSSL. Only users installing from wheels built by the cryptography project (i.e., those distributed on PyPI) need to update their cryptography versions.
Severity
Low
References
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
Vulnerable OpenSSL included in cryptography wheels
CVE-2024-12797 / GHSA-79v4-65xg-pq4g / PYSEC-2026-1284
More information
Details
pyca/cryptography's wheels include a statically linked copy of OpenSSL. The versions of OpenSSL included in cryptography 42.0.0-44.0.0 are vulnerable to a security issue. More details about the vulnerability itself can be found in https://openssl-library.org/news/secadv/20250211.txt.
If you are building cryptography source ("sdist") then you are responsible for upgrading your copy of OpenSSL. Only users installing from wheels built by the cryptography project (i.e., those distributed on PyPI) need to update their cryptography versions.
Severity
Unknown
References
This data is provided by OSV and the PyPI Advisory Database (CC-BY 4.0).
cryptography Vulnerable to a Subgroup Attack Due to Missing Subgroup Validation for SECT Curves
CVE-2026-26007 / GHSA-r6ph-v2qm-q3c2 / PYSEC-2026-2141
More information
Details
Vulnerability Summary
The
public_key_from_numbers(orEllipticCurvePublicNumbers.public_key()),EllipticCurvePublicNumbers.public_key(),load_der_public_key()andload_pem_public_key()functions do not verify that the point belongs to the expected prime-order subgroup of the curve.This missing validation allows an attacker to provide a public key point
Pfrom a small-order subgroup. This can lead to security issues in various situations, such as the most commonly used signature verification (ECDSA) and shared key negotiation (ECDH). When the victim computes the shared secret asS = [victim_private_key]Pvia ECDH, this leaks information aboutvictim_private_key mod (small_subgroup_order). For curves with cofactor > 1, this reveals the least significant bits of the private key. When these weak public keys are used in ECDSA , it's easy to forge signatures on the small subgroup.Only SECT curves are impacted by this.
Credit
This vulnerability was discovered by:
Severity
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
CVE-2026-26007 / GHSA-r6ph-v2qm-q3c2 / PYSEC-2026-2141
More information
Details
cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Prior to 46.0.5, the public_key_from_numbers (or EllipticCurvePublicNumbers.public_key()), EllipticCurvePublicNumbers.public_key(), load_der_public_key() and load_pem_public_key() functions do not verify that the point belongs to the expected prime-order subgroup of the curve. This missing validation allows an attacker to provide a public key point P from a small-order subgroup. This can lead to security issues in various situations, such as the most commonly used signature verification (ECDSA) and shared key negotiation (ECDH). When the victim computes the shared secret as S = [victim_private_key]P via ECDH, this leaks information about victim_private_key mod (small_subgroup_order). For curves with cofactor > 1, this reveals the least significant bits of the private key. When these weak public keys are used in ECDSA , it's easy to forge signatures on the small subgroup. Only SECT curves are impacted by this. This vulnerability is fixed in 46.0.5.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:NReferences
This data is provided by OSV and the PyPI Advisory Database (CC-BY 4.0).
cryptography has incomplete DNS name constraint enforcement on peer names
CVE-2026-34073 / GHSA-m959-cc7f-wv43 / PYSEC-2026-35
More information
Details
Summary
In versions of cryptography prior to 46.0.5, DNS name constraints were only validated against SANs within child certificates, and not the "peer name" presented during each validation. Consequently, cryptography would allow a peer named
bar.example.comto validate against a wildcard leaf certificate for*.example.com, even if the leaf's parent certificate (or upwards) contained an excluded subtree constraint forbar.example.com.This behavior resulted from a gap between RFC 5280 (which defines Name Constraint semantics) and RFC 9525 (which defines service identity semantics): put together, neither states definitively whether Name Constraints should be applied to peer names. To close this gap, cryptography now conservatively rejects any validation where the peer name would be rejected by a name constraint if it were a SAN instead.
In practice, exploitation of this bypass requires an uncommon X.509 topology, one that the Web PKI avoids because it exhibits these kinds of problems. Consequently, we consider this a medium-to-low impact severity.
See CVE-2025-61727 for a similar bypass in Go's
crypto/x509.Remediation
Users should upgrade to 46.0.6 or newer.
Attribution
Reporter: @1seal
Severity
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:UReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
CVE-2026-34073 / GHSA-m959-cc7f-wv43 / PYSEC-2026-35
More information
Details
cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Prior to version 46.0.6, DNS name constraints were only validated against SANs within child certificates, and not the "peer name" presented during each validation. Consequently, cryptography would allow a peer named bar.example.com to validate against a wildcard leaf certificate for *.example.com, even if the leaf's parent certificate (or upwards) contained an excluded subtree constraint for bar.example.com. This issue has been patched in version 46.0.6.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:NReferences
This data is provided by OSV and the PyPI Advisory Database (CC-BY 4.0).
Vulnerable OpenSSL included in cryptography wheels
GHSA-537c-gmf6-5ccf
More information
Details
pyca/cryptography's wheels include a statically linked copy of OpenSSL. The versions of OpenSSL included in wheels prior to cryptograph 48.01 are vulnerable to a security issue. More details about the vulnerability itself can be found in https://openssl-library.org/news/secadv/20260609.txt.
If you are building cryptography source ("sdist") then you are responsible for upgrading your copy of OpenSSL. Only users installing from wheels built by the cryptography project (i.e., those distributed on PyPI) need to update their cryptography versions.
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
python-cryptography: Duplicate self-signed intermediates can cause exponential path-building
CVE-2026-69249 / GHSA-jwv3-5hgf-82ww / PYSEC-2026-3553
More information
Details
Summary
When resolving invalid certificate chains that include duplicate copies of self-signed certificates, the processing recursively invokes the same candidate, leading to an exponential blowup. Although the limitation that the chain depth cannot exceed a specified maximum depth prevents unbounded recursion and guarantees termination, an attacker-controlled certificate chain can lead the processing to easily take more than 5s to reject in testing. This amplification could form the basis for a resource exhaustion denial of service attack.
This work was completed by Trail of Bits as part of the Patch The Planet project in collaboration with OpenAI. The finding was identified primarily by the Codex coding agent, and manually reviewed before submission.
Details
The core issue arises in the recursive nature of
build_chain_inner, which does not de-duplicate against previously analyzed candidates.A sufficient patch is to track valid issuers, and to skip seen ones before recursing. By tracking valid issuers only, validation and custom extension-policy callbacks still run.
In testing, this fix removed the exponential blowup without breaking apparent correctness.
PoC
The following script benchmarks processing times for malicious cert chains.
Impact
This issue exposes an amplification pathway over data that in many applications may be user-controlled, leading to the possibility of a denial of service through resource exhaustion. As the correctness of validation is not affected, the integrity of a system cannot be compromised through this vector, only its availability.
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees
CVE-2026-69248 / GHSA-m2h6-j472-rp4c / PYSEC-2026-3554
More information
Details
Summary
If an intermediate constrained CA permits the DNS name
foo.example.com, and the leaf certificate has a wildcard in its DNS SAN of*.example.com, python-cryptography's verifier accepts which allows escaping outside of the permitted names.PoC
Impact
Acceptance of invalid certificate chain.
Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N/E:PReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
python-cryptography: Duplicate self-signed intermediates can cause exponential path-building
CVE-2026-69249 / GHSA-jwv3-5hgf-82ww / PYSEC-2026-3553
More information
Details
Summary
When resolving invalid certificate chains that include duplicate copies of self-signed certificates, the processing recursively invokes the same candidate, leading to an exponential blowup. Although the limitation that the chain depth cannot exceed a specified maximum depth prevents unbounded recursion and guarantees termination, an attacker-controlled certificate chain can lead the processing to easily take more than 5s to reject in testing. This amplification could form the basis for a resource exhaustion denial of service attack.
This work was completed by Trail of Bits as part of the Patch The Planet project in collaboration with OpenAI. The finding was identified primarily by the Codex coding agent, and manually reviewed before submission.
Details
The core issue arises in the recursive nature of
build_chain_inner, which does not de-duplicate against previously analyzed candidates.A sufficient patch is to track valid issuers, and to skip seen ones before recursing. By tracking valid issuers only, validation and custom extension-policy callbacks still run.
In testing, this fix removed the exponential blowup without breaking apparent correctness.
PoC
The following script benchmarks processing times for malicious cert chains.