CVE-2026-69249
python-cryptography: Duplicate self-signed intermediates can cause exponential path-building
python-cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 42.0.0 through 48.0.0, 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. The core issue arises in the recursive nature of build_chain_inner, which does not de-duplicate against previously analyzed candidates. As the correctness of validation is not affected, the integrity of a system cannot be compromised through this vector, only its availability. This issue is fixed in 49.0.0.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.7
python-cryptography: Duplicate self-signed intermediates can cause exponential path-building
python-cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 42.0.0 through 48.0.0, 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. The core issue arises in the recursive nature of build_chain_inner, which does not de-duplicate against previously analyzed candidates. As the correctness of validation is not affected, the integrity of a system cannot be compromised through this vector, only its availability. This issue is fixed in 49.0.0.
- Record
CVE-2026-69249- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-400
- Updated
- 2026-11-02
EUVDEUVD-2026-52450
8.7
python-cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 42.0.0 through 48.0.0, 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. The core issue arises in the recursive nature of build_chain_inner, which does not de-duplicate against previously analyzed candidates. As the correctness of validation is not affected, the integrity of a system cannot be compromised through this vector, only its availability. This issue is fixed in 49.0.0.
- Record
EUVD-2026-52450- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-jwv3-5hgf-82ww
8.7
python-cryptography: Duplicate self-signed intermediates can cause exponential path-building
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.
fn build_chain_inner(
&self,
working_cert: &VerificationCertificate<'chain, B>,
current_depth: u8,
working_cert_extensions: &Extensions<'chain>,
name_chain: NameChain<'_, 'chain>,
budget: &mut Budget,
) -> ValidationResult<'chain, Chain<'chain, B>, B> {
if let Some(nc) = working_cert_extensions.get_extension(&NAME_CONSTRAINTS_OID) {
name_chain.evaluate_constraints(&nc.value()?, budget)?;
}
// Look in the store's root set to see if the working cert is listed.
// If it is, we've reached the end.
if self.store.contains(working_cert) {
return Ok(vec![working_cert.clone()]);
}
// Check that our current depth does not exceed our policy-configured
// max depth. We do this after the root set check, since the depth
// only measures the intermediate chain's length, not the root or leaf.
if current_depth > self.policy.max_chain_depth {
return Err(ValidationError::new(ValidationErrorKind::Other(
"chain construction exceeds max depth".into(),
)));
}
// Otherwise, we collect a list of potential issuers for this cert,
// and continue with the first that verifies.
let mut last_err: Option<ValidationError<'_, B>> = None;
for issuing_cert_candidate in self.potential_issuers(working_cert) {
// A candidate issuer is said to verify if it both
// signs for the working certificate and conforms to the
// policy.
let issuer_extensions = issuing_cert_candidate.certificate().extensions()?;
match self.policy.valid_issuer(
issuing_cert_candidate,
working_cert,
current_depth,
&issuer_extensions,
) {
Ok(_) => {
match self.build_chain_inner(
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.
let mut seen_valid_issuers = Vec::<&VerificationCertificate<'chain, B>>::new();
for issuing_cert_candidate in self.potential_issuers(working_cert) {
. . .
Ok(_) => {
if seen_valid_issuers.contains(&issuing_cert_candidate) {
continue;
}
seen_valid_issuers.push(issuing_cert_candidate);
match self.build_chain_inner(
issuing_cert_candidate,
// NOTE(ww): According to RFC 5280, we should only
In testing, this fix removed the exponential blowup without breaking apparent correctness.
duplicates,max_depth,result,seconds
1,7,rejected,0.000464 -> 1,7,rejected,0.000667
2,7,rejected,0.025154 -> 2,7,rejected,0.001229
3,7,rejected,0.489924 -> 3,7,rejected,0.001619
4,7,rejected,4.309403 ->…
- Record
GHSA-jwv3-5hgf-82ww- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-400
- Updated
- 2026-11-02
NVD
8.7
python-cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 42.0.0 through 48.0.0, 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. The core issue arises in the recursive nature of build_chain_inner, which does not de-duplicate against previously analyzed candidates. As the correctness of validation is not affected, the integrity of a system cannot be compromised through this vector, only its availability. This issue is fixed in 49.0.0.
- Record
CVE-2026-69249- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/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:X - Weakness
- CWE-400
- Updated
- 2026-11-02
OSV
8.7
python-cryptography: Duplicate self-signed intermediates can cause exponential path-building
python-cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 42.0.0 through 48.0.0, 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. The core issue arises in the recursive nature of build_chain_inner, which does not de-duplicate against previously analyzed candidates. As the correctness of validation is not affected, the integrity of a system cannot be compromised through this vector, only its availability. This issue is fixed in 49.0.0.
- Record
CVE-2026-69249- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-400
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-69249
8.7
python-cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 42.0.0 through 48.0.0, 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. The core issue arises in the recursive nature of build_chain_inner, which does not de-duplicate against previously analyzed candidates. As the correctness of validation is not affected, the integrity of a system cannot be compromised through this vector, only its availability. This issue is fixed in 49.0.0.
- Record
DEBIAN-CVE-2026-69249- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/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:X - Updated
- 2026-11-02
Show 32 moreShow less
OSVGHSA-jwv3-5hgf-82ww
8.7
python-cryptography: Duplicate self-signed intermediates can cause exponential path-building
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.
fn build_chain_inner(
&self,
working_cert: &VerificationCertificate<'chain, B>,
current_depth: u8,
working_cert_extensions: &Extensions<'chain>,
name_chain: NameChain<'_, 'chain>,
budget: &mut Budget,
) -> ValidationResult<'chain, Chain<'chain, B>, B> {
if let Some(nc) = working_cert_extensions.get_extension(&NAME_CONSTRAINTS_OID) {
name_chain.evaluate_constraints(&nc.value()?, budget)?;
}
// Look in the store's root set to see if the working cert is listed.
// If it is, we've reached the end.
if self.store.contains(working_cert) {
return Ok(vec![working_cert.clone()]);
}
// Check that our current depth does not exceed our policy-configured
// max depth. We do this after the root set check, since the depth
// only measures the intermediate chain's length, not the root or leaf.
if current_depth > self.policy.max_chain_depth {
return Err(ValidationError::new(ValidationErrorKind::Other(
"chain construction exceeds max depth".into(),
)));
}
// Otherwise, we collect a list of potential issuers for this cert,
// and continue with the first that verifies.
let mut last_err: Option<ValidationError<'_, B>> = None;
for issuing_cert_candidate in self.potential_issuers(working_cert) {
// A candidate issuer is said to verify if it both
// signs for the working certificate and conforms to the
// policy.
let issuer_extensions = issuing_cert_candidate.certificate().extensions()?;
match self.policy.valid_issuer(
issuing_cert_candidate,
working_cert,
current_depth,
&issuer_extensions,
) {
Ok(_) => {
match self.build_chain_inner(
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.
let mut seen_valid_issuers = Vec::<&VerificationCertificate<'chain, B>>::new();
for issuing_cert_candidate in self.potential_issuers(working_cert) {
. . .
Ok(_) => {
if seen_valid_issuers.contains(&issuing_cert_candidate) {
continue;
}
seen_valid_issuers.push(issuing_cert_candidate);
match self.build_chain_inner(
issuing_cert_candidate,
// NOTE(ww): According to RFC 5280, we should only
In testing, this fix removed the exponential blowup without breaking apparent correctness.
duplicates,max_depth,result,seconds
1,7,rejected,0.000464 -> 1,7,rejected,0.000667
2,7,rejected,0.025154 -> 2,7,rejected,0.001229
3,7,rejected,0.489924 -> 3,7,rejected,0.001619
4,7,rejected,4.309403 ->…
- Record
GHSA-jwv3-5hgf-82ww- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-400
- Updated
- 2026-11-02
OSVOESA-2026-3457
8.7
python-cryptography security update
cryptography is a package designed to expose cryptographic primitives and recipes to Python developers.
Security Fix(es):
python-cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Prior to 49.0.0, 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. The core issue arises in the recursive nature of build_chain_inner, which does not de-duplicate against previously analyzed candidates. As the correctness of validation is not affected, the integrity of a system cannot be compromised through this vector, only its availability. This issue is fixed in 49.0.0.(CVE-2026-69249)
- Record
OESA-2026-3457- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/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:X - Updated
- 2026-11-02
OSVOESA-2026-3458
8.7
python-cryptography security update
cryptography is a package designed to expose cryptographic primitives and recipes to Python developers.
Security Fix(es):
python-cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Prior to 49.0.0, 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. The core issue arises in the recursive nature of build_chain_inner, which does not de-duplicate against previously analyzed candidates. As the correctness of validation is not affected, the integrity of a system cannot be compromised through this vector, only its availability. This issue is fixed in 49.0.0.(CVE-2026-69249)
- Record
OESA-2026-3458- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/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:X - Updated
- 2026-11-02
OSVOESA-2026-3459
8.7
python-cryptography security update
cryptography is a package designed to expose cryptographic primitives and recipes to Python developers.
Security Fix(es):
python-cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. Prior to 49.0.0, 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. The core issue arises in the recursive nature of build_chain_inner, which does not de-duplicate against previously analyzed candidates. As the correctness of validation is not affected, the integrity of a system cannot be compromised through this vector, only its availability. This issue is fixed in 49.0.0.(CVE-2026-69249)
- Record
OESA-2026-3459- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/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:X - Updated
- 2026-11-02
OSVPYSEC-2026-3553
8.7
python-cryptography: Duplicate self-signed intermediates can cause exponential path-building
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.
fn build_chain_inner(
&self,
working_cert: &VerificationCertificate<'chain, B>,
current_depth: u8,
working_cert_extensions: &Extensions<'chain>,
name_chain: NameChain<'_, 'chain>,
budget: &mut Budget,
) -> ValidationResult<'chain, Chain<'chain, B>, B> {
if let Some(nc) = working_cert_extensions.get_extension(&NAME_CONSTRAINTS_OID) {
name_chain.evaluate_constraints(&nc.value()?, budget)?;
}
// Look in the store's root set to see if the working cert is listed.
// If it is, we've reached the end.
if self.store.contains(working_cert) {
return Ok(vec![working_cert.clone()]);
}
// Check that our current depth does not exceed our policy-configured
// max depth. We do this after the root set check, since the depth
// only measures the intermediate chain's length, not the root or leaf.
if current_depth > self.policy.max_chain_depth {
return Err(ValidationError::new(ValidationErrorKind::Other(
"chain construction exceeds max depth".into(),
)));
}
// Otherwise, we collect a list of potential issuers for this cert,
// and continue with the first that verifies.
let mut last_err: Option<ValidationError<'_, B>> = None;
for issuing_cert_candidate in self.potential_issuers(working_cert) {
// A candidate issuer is said to verify if it both
// signs for the working certificate and conforms to the
// policy.
let issuer_extensions = issuing_cert_candidate.certificate().extensions()?;
match self.policy.valid_issuer(
issuing_cert_candidate,
working_cert,
current_depth,
&issuer_extensions,
) {
Ok(_) => {
match self.build_chain_inner(
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.
let mut seen_valid_issuers = Vec::<&VerificationCertificate<'chain, B>>::new();
for issuing_cert_candidate in self.potential_issuers(working_cert) {
. . .
Ok(_) => {
if seen_valid_issuers.contains(&issuing_cert_candidate) {
continue;
}
seen_valid_issuers.push(issuing_cert_candidate);
match self.build_chain_inner(
issuing_cert_candidate,
// NOTE(ww): According to RFC 5280, we should only
In testing, this fix removed the exponential blowup without breaking apparent correctness.
duplicates,max_depth,result,seconds
1,7,rejected,0.000464 -> 1,7,rejected,0.000667
2,7,rejected,0.025154 -> 2,7,rejected,0.001229
3,7,rejected,0.489924 -> 3,7,rejected,0.001619
4,7,rejected,4.309403 ->…
- Record
PYSEC-2026-3553- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVRHSA-2026:55543
9.1
Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update
- Record
RHSA-2026:55543- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N - Updated
- 2026-11-02
OSVRHSA-2026:64774
7.5
Red Hat Security Advisory: python3.14-cryptography security update
- Record
RHSA-2026:64774- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:64795
7.5
Red Hat Security Advisory: python3.14-cryptography security update
- Record
RHSA-2026:64795- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:71658
7.5
Red Hat Security Advisory: python-cryptography security update
- Record
RHSA-2026:71658- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:71659
7.5
Red Hat Security Advisory: python-cryptography security update
- Record
RHSA-2026:71659- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRLSA-2026:64774
7.5
Important: python3.14-cryptography security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
-
python-cryptography: python-cryptography: Duplicate self-signed intermediates can cause exponential path-building (CVE-2026-69249)
-
python-cryptography: python-cryptography: python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees (CVE-2026-69248)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2026:64774- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRLSA-2026:64795
7.5
Important: python3.14-cryptography security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
-
python-cryptography: python-cryptography: Duplicate self-signed intermediates can cause exponential path-building (CVE-2026-69249)
-
python-cryptography: python-cryptography: python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees (CVE-2026-69248)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2026:64795- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRLSA-2026:71658
7.5
Important: python-cryptography security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- python-cryptography: python-cryptography: Duplicate self-signed intermediates can cause exponential path-building (CVE-2026-69249)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2026:71658- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-69249
8.7
python-cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 42.0.0 through 48.0.0, 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. The core issue arises in the recursive nature of build_chain_inner, which does not de-duplicate against previously analyzed candidates. As the correctness of validation is not affected, the integrity of a system cannot be compromised through this vector, only its availability. This issue is fixed in 49.0.0.
- Record
UBUNTU-CVE-2026-69249- CVSS 4.0
- 8.7 High
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVALSA-2026:64774 No score
Important: python3.14-cryptography security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- python-cryptography: python-cryptography: Duplicate self-signed intermediates can cause exponential path-building (CVE-2026-69249)
- python-cryptography: python-cryptography: python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees (CVE-2026-69248)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:64774- Updated
- 2026-11-02
OSVALSA-2026:64795 No score
Important: python3.14-cryptography security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- python-cryptography: python-cryptography: Duplicate self-signed intermediates can cause exponential path-building (CVE-2026-69249)
- python-cryptography: python-cryptography: python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees (CVE-2026-69248)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:64795- Updated
- 2026-11-02
OSVALSA-2026:71658 No score
Important: python-cryptography security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- python-cryptography: python-cryptography: Duplicate self-signed intermediates can cause exponential path-building (CVE-2026-69249)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:71658- Updated
- 2026-11-02
OSVAZL-94584 No score
CVE-2026-69249 affecting package python-cryptography for versions less than 42.0.5-6
python-cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 42.0.0 through 48.0.0, 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. The core issue arises in the recursive nature of build_chain_inner, which does not de-duplicate against previously analyzed candidates. As the correctness of validation is not affected, the integrity of a system cannot be compromised through this vector, only its availability. This issue is fixed in 49.0.0.
- Record
AZL-94584- Updated
- 2026-11-05
OSVCLSA-2026-1788513782 No score
TuxCare security update for cryptography (2 CVEs)
TuxCare rebuilt cryptography to address 2 CVEs. Fixed in 46.0.7.post2+tuxcare.
- Record
CLSA-2026-1788513782- Updated
- 2026-11-02
OSVCLSA-2026-1789017625 No score
TuxCare security update for cryptography (2 CVEs)
TuxCare rebuilt cryptography to address 2 CVEs. Fixed in 45.0.7.post4+tuxcare.
- Record
CLSA-2026-1789017625- Updated
- 2026-11-02
OSVCLSA-2026-1789365078 No score
TuxCare security update for cryptography (2 CVEs)
TuxCare rebuilt cryptography to address 2 CVEs. Fixed in 44.0.3.post4+tuxcare.
- Record
CLSA-2026-1789365078- Updated
- 2026-11-02
OSVCLSA-2026-1789377631 No score
TuxCare security update for cryptography (1 CVE)
TuxCare rebuilt cryptography to address 1 CVE. Fixed in 43.0.1.post2+tuxcare.
- Record
CLSA-2026-1789377631- Updated
- 2026-11-02
OSVCLSA-2026-1789377744 No score
TuxCare security update for cryptography (1 CVE)
TuxCare rebuilt cryptography to address 1 CVE. Fixed in 42.0.8.post3+tuxcare.
- Record
CLSA-2026-1789377744- Updated
- 2026-11-02
OSVCLSA-2026-1789379340 No score
TuxCare security update for cryptography (1 CVE)
TuxCare rebuilt cryptography to address 1 CVE. Fixed in 42.0.0.post2+tuxcare.
- Record
CLSA-2026-1789379340- Updated
- 2026-11-02
OSVCLSA-2026-1789552762 No score
TuxCare security update for cryptography (1 CVE)
TuxCare rebuilt cryptography to address 1 CVE. Fixed in 43.0.3.post4+tuxcare.
- Record
CLSA-2026-1789552762- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21685-1 No score
Security update for python-cryptography
This update for python-cryptography fixes the following issues:
- CVE-2026-69247: PKCS#7
EnvelopedDatadecryption exposes a Bleichenbacher oracle through distinguishable errors and timing (bsc#1273551). - CVE-2026-69248: verifier accepts wildcard DNS names allowing escape from
permittedSubtrees(bsc#1273549). - CVE-2026-69249: duplicate self-signed intermediates can cause exponential path-building (bsc#1273516).
- Record
openSUSE-SU-2026:21685-1- Updated
- 2026-11-02
OSVROOT-APP-PYPI-CVE-2026-69249 No score
CVE-2026-69249 in cryptography - Patched by Root
Root has patched CVE-2026-69249 in the cryptography package for Root:PyPI. Multiple fixed versions available.
- Record
ROOT-APP-PYPI-CVE-2026-69249- Updated
- 2026-11-02
OSVSUSE-SU-2026:23196-1 No score
Security update for python-cryptography
This update for python-cryptography fixes the following issues:
- CVE-2026-69248: verifier accepts wildcard DNS names allowing escape from permittedSubtrees (bsc#1273549).
- CVE-2026-69249: duplicate self-signed intermediates can cause exponential path-building (bsc#1273516).
- Record
SUSE-SU-2026:23196-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:23247-1 No score
Security update for python-cryptography
This update for python-cryptography fixes the following issues:
- CVE-2026-69248: verifier accepts wildcard DNS names allowing escape from permittedSubtrees (bsc#1273549).
- CVE-2026-69249: duplicate self-signed intermediates can cause exponential path-building (bsc#1273516).
- Record
SUSE-SU-2026:23247-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:23404-1 No score
Security update for python-cryptography
This update for python-cryptography fixes the following issues:
- CVE-2026-69247: PKCS#7
EnvelopedDatadecryption exposes a Bleichenbacher oracle through distinguishable errors and timing (bsc#1273551). - CVE-2026-69248: verifier accepts wildcard DNS names allowing escape from
permittedSubtrees(bsc#1273549). - CVE-2026-69249: duplicate self-signed intermediates can cause exponential path-building (bsc#1273516).
- Record
SUSE-SU-2026:23404-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:23570-1 No score
Security update for python-cryptography
This update for python-cryptography fixes the following issues:
- CVE-2026-69247: PKCS#7
EnvelopedDatadecryption exposes a Bleichenbacher oracle through distinguishable errors and timing (bsc#1273551). - CVE-2026-69248: verifier accepts wildcard DNS names allowing escape from
permittedSubtrees(bsc#1273549). - CVE-2026-69249: duplicate self-signed intermediates can cause exponential path-building (bsc#1273516).
- Record
SUSE-SU-2026:23570-1- Updated
- 2026-11-02
OSVUSN-8776-1 No score
python-cryptography vulnerabilities
It was discovered that python-cryptography incorrectly accepted objects with immutable buffers when performing certain cipher operations. This would result in corrupted output, contrary to expectations. This issue only affected Ubuntu 18.04 LTS. (CVE-2023-23931)
It was discovered that python-cryptography reported the outcome of decrypting PKCS#7 enveloped data in distinguishable ways, and with observable timing differences. A remote attacker could possibly use this issue to recover the key used to encrypt the message contents, and obtain sensitive information. This issue only affected Ubuntu 26.04 LTS. (CVE-2026-69247)
Jack Lloyd discovered that python-cryptography incorrectly handled wildcard DNS names when enforcing the name constraints of a certificate authority. A remote attacker could possibly use this issue to have an invalid certificate chain accepted, and use names outside of the permitted ones. This issue only affected Ubuntu 26.04 LTS. (CVE-2026-69248)
Samuel Judson discovered that python-cryptography incorrectly handled certificate chains that contained duplicate certificates. A remote attacker could possibly use this issue to cause python-cryptography to use excessive resources, leading to a denial of service. This issue only affected Ubuntu 26.04 LTS. (CVE-2026-69249)
- Record
USN-8776-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
cryptographyPyPI |
42.0.0 up to 49.0.0 | 49.0.0 |
python3.14-cryptographyAlmaLinux:9 From an advisory covering 2 CVEs |
before 45.0.4-4.el9_8.6 | 45.0.4-4.el9_8.6 |
python3.14-cryptographyAlmaLinux:10 From an advisory covering 2 CVEs |
before 45.0.4-4.el10_2.5 | 45.0.4-4.el10_2.5 |
python3-cryptographyAlmaLinux:10 |
before 43.0.0-4.el10_2.5 | 43.0.0-4.el10_2.5 |
python-cryptographyAzure Linux:3 |
before 42.0.5-6 | 42.0.5-6 |
cryptographyTuxCare:PyPI From an advisory covering 2 CVEs |
46.0.7 up to 46.0.7.post2+tuxcare, plus listed versions 46.0.7.post1+tuxcare |
46.0.7.post2+tuxcare |
cryptographyTuxCare:PyPI From an advisory covering 2 CVEs |
45.0.7 up to 45.0.7.post4+tuxcare, plus listed versions 45.0.7.post1+tuxcare45.0.7.post2+tuxcare45.0.7.post3+tuxcare |
45.0.7.post4+tuxcare |
cryptographyTuxCare:PyPI From an advisory covering 2 CVEs |
44.0.3 up to 44.0.3.post4+tuxcare, plus listed versions 44.0.3.post1+tuxcare44.0.3.post2+tuxcare44.0.3.post3+tuxcare |
44.0.3.post4+tuxcare |
cryptographyTuxCare:PyPI |
43.0.1 up to 43.0.1.post2+tuxcare, plus listed versions 43.0.1.post1+tuxcare |
43.0.1.post2+tuxcare |
cryptographyTuxCare:PyPI |
42.0.8 up to 42.0.8.post3+tuxcare, plus listed versions 42.0.8.post1+tuxcare42.0.8.post2+tuxcare |
42.0.8.post3+tuxcare |
Show 39 moreShow less
| Package | Affected | Fixed |
|---|---|---|
cryptographyTuxCare:PyPI |
42.0.0 up to 42.0.0.post2+tuxcare, plus listed versions 42.0.0.post1+tuxcare |
42.0.0.post2+tuxcare |
cryptographyTuxCare:PyPI |
43.0.3 up to 43.0.3.post4+tuxcare, plus listed versions 43.0.3.post1+tuxcare43.0.3.post2+tuxcare43.0.3.post3+tuxcare |
43.0.3.post4+tuxcare |
python-cryptographyDebian:12 |
All versions, plus listed versions 38.0.4-338.0.4-3+deb12u138.0.4-441.0.7-141.0.7-2 Show 24 moreShow less41.0.7-341.0.7-441.0.7-542.0.5-142.0.5-243.0.0-143.0.0-243.0.0-344.0.2-144.0.2-245.0.6-145.0.6-1~exp145.0.7-146.0.1-146.0.1-1~exp146.0.5-146.0.5-246.0.6-146.0.7-147.0.0-149.0.0-149.0.0-1~exp149.0.0-250.0.2-1~exp1 |
None known |
python-cryptographyDebian:13 |
All versions, plus listed versions 43.0.0-343.0.0-3+deb13u144.0.2-144.0.2-245.0.6-1 Show 13 moreShow less45.0.6-1~exp145.0.7-146.0.1-146.0.1-1~exp146.0.5-146.0.5-246.0.6-146.0.7-147.0.0-149.0.0-149.0.0-1~exp149.0.0-250.0.2-1~exp1 |
None known |
python-cryptographyDebian:14 |
before 49.0.0-1, plus listed versions 43.0.0-344.0.2-144.0.2-245.0.6-145.0.6-1~exp1 Show 9 moreShow less45.0.7-146.0.1-146.0.1-1~exp146.0.5-146.0.5-246.0.6-146.0.7-147.0.0-149.0.0-1~exp1 |
49.0.0-1 |
cryptographyPyPI |
42.0.0 up to 49.0.0, plus listed versions 42.0.142.0.242.0.342.0.442.0.5 Show 29 moreShow less42.0.642.0.742.0.843.0.043.0.143.0.344.0.044.0.144.0.244.0.345.0.045.0.145.0.245.0.345.0.445.0.545.0.645.0.746.0.046.0.146.0.246.0.346.0.446.0.546.0.646.0.747.0.048.0.048.0.1 |
49.0.0 |
python-cryptographyopenEuler:24.03-LTS-SP3 |
before 42.0.2-10.oe2403sp3 | 42.0.2-10.oe2403sp3 |
python-cryptographyopenEuler:24.03-LTS-SP4 |
before 42.0.2-10.oe2403sp4 | 42.0.2-10.oe2403sp4 |
python-cryptographyopenEuler:24.03-LTS-SP1 |
before 42.0.2-10.oe2403sp1 | 42.0.2-10.oe2403sp1 |
cryptographyPyPI |
before 49.0.0, plus listed versions 0.10.20.2.10.2.20.3 Show 45 moreShow less0.40.50.5.10.5.20.5.30.5.40.60.6.10.70.7.10.7.20.80.8.10.8.20.90.9.10.9.20.9.31.01.0.11.0.21.11.1.11.1.21.21.2.11.2.21.2.31.31.3.11.3.21.3.31.3.41.41.51.5.11.5.21.5.31.61.71.7.11.7.21.81.8.11.8.2 |
49.0.0 |
python-cryptographyRed Hat:hummingbird:1 From an advisory covering 24 CVEs |
before 0:50.0.0-1.hum1 | 0:50.0.0-1.hum1 |
python3-cryptographyRed Hat:hummingbird:1 From an advisory covering 24 CVEs |
before 0:50.0.0-1.hum1 | 0:50.0.0-1.hum1 |
python3.14-cryptographyRed Hat:enterprise_linux:9::appstream From an advisory covering 2 CVEs |
before 0:45.0.4-4.el9_8.6 | 0:45.0.4-4.el9_8.6 |
python3.14-cryptography-debuginfoRed Hat:enterprise_linux:9::appstream From an advisory covering 2 CVEs |
before 0:45.0.4-4.el9_8.6 | 0:45.0.4-4.el9_8.6 |
python3.14-cryptography-debugsourceRed Hat:enterprise_linux:9::appstream From an advisory covering 2 CVEs |
before 0:45.0.4-4.el9_8.6 | 0:45.0.4-4.el9_8.6 |
python3.14-cryptographyRed Hat:enterprise_linux:10.2 From an advisory covering 2 CVEs |
before 0:45.0.4-4.el10_2.5 | 0:45.0.4-4.el10_2.5 |
python3.14-cryptography-debuginfoRed Hat:enterprise_linux:10.2 From an advisory covering 2 CVEs |
before 0:45.0.4-4.el10_2.5 | 0:45.0.4-4.el10_2.5 |
python3.14-cryptography-debugsourceRed Hat:enterprise_linux:10.2 From an advisory covering 2 CVEs |
before 0:45.0.4-4.el10_2.5 | 0:45.0.4-4.el10_2.5 |
python-cryptographyRed Hat:enterprise_linux:10.2 |
before 0:43.0.0-4.el10_2.5 | 0:43.0.0-4.el10_2.5 |
python-cryptography-debugsourceRed Hat:enterprise_linux:10.2 |
before 0:43.0.0-4.el10_2.5 | 0:43.0.0-4.el10_2.5 |
python3-cryptographyRed Hat:enterprise_linux:10.2 |
before 0:43.0.0-4.el10_2.5 | 0:43.0.0-4.el10_2.5 |
python3-cryptography-debuginfoRed Hat:enterprise_linux:10.2 |
before 0:43.0.0-4.el10_2.5 | 0:43.0.0-4.el10_2.5 |
python-cryptographyRed Hat:enterprise_linux_eus:10.0 |
before 0:43.0.0-4.el10_0.1 | 0:43.0.0-4.el10_0.1 |
python-cryptography-debugsourceRed Hat:enterprise_linux_eus:10.0 |
before 0:43.0.0-4.el10_0.1 | 0:43.0.0-4.el10_0.1 |
python3-cryptographyRed Hat:enterprise_linux_eus:10.0 |
before 0:43.0.0-4.el10_0.1 | 0:43.0.0-4.el10_0.1 |
python3-cryptography-debuginfoRed Hat:enterprise_linux_eus:10.0 |
before 0:43.0.0-4.el10_0.1 | 0:43.0.0-4.el10_0.1 |
python3.14-cryptographyRocky Linux:9 From an advisory covering 2 CVEs |
before 0:45.0.4-4.el9_8.6 | 0:45.0.4-4.el9_8.6 |
python3.14-cryptographyRocky Linux:10 From an advisory covering 2 CVEs |
before 0:45.0.4-4.el10_2.5 | 0:45.0.4-4.el10_2.5 |
python-cryptographyRocky Linux:10 |
before 0:43.0.0-4.el10_2.5 | 0:43.0.0-4.el10_2.5 |
cryptographyRoot:PyPI |
before 48.0.0+aikido.4 | 48.0.0+aikido.446.0.7+aikido.446.0.6+aikido.546.0.5+aikido.736.0.1+aikido.746.0.3+aikido.844.0.0+aikido.243.0.1+aikido.745.0.7+aikido.541.0.3+aikido.345.0.5+aikido.946.0.1+aikido.646.0.3+aikido.944.0.0+aikido.343.0.1+aikido.848.0.0+aikido.548.0.1+aikido.346.0.7+aikido.246.0.7+aikido.344.0.0+aikido.145.0.5+aikido.745.0.5+aikido.836.0.1+aikido.646.0.5+aikido.645.0.7+aikido.446.0.3+aikido.746.0.1+aikido.548.0.0+aikido.346.0.6+aikido.443.0.1+aikido.641.0.3+aikido.241.0.3+aikido.448.0.1+aikido.448.0.0+aikido.643.0.1+aikido.944.0.0+aikido.445.0.5+aikido.1045.0.7+aikido.636.0.1+aikido.846.0.1+aikido.746.0.7+aikido.546.0.5+aikido.846.0.6+aikido.646.0.3+aikido.1047.0.0+aikido.546.0.4+aikido.7 |
python-cryptographySUSE:Linux Micro 6.1 From an advisory covering 2 CVEs |
before 42.0.4-slfo.1.1_6.1 | 42.0.4-slfo.1.1_6.1 |
python-cryptographySUSE:Linux Micro 6.0 From an advisory covering 2 CVEs |
before 42.0.4-6.1 | 42.0.4-6.1 |
python-cryptographySUSE:Linux Micro 6.2 From an advisory covering 3 CVEs |
before 44.0.3-160000.5.1 | 44.0.3-160000.5.1 |
python-cryptographySUSE:Linux Enterprise Server 16.0 From an advisory covering 3 CVEs |
before 44.0.3-160000.5.1 | 44.0.3-160000.5.1 |
python-cryptographySUSE:Linux Enterprise Server for SAP applications 16.0 From an advisory covering 3 CVEs |
before 44.0.3-160000.5.1 | 44.0.3-160000.5.1 |
python-cryptographyUbuntu:26.04:LTS |
before 46.0.5-1ubuntu2.2, plus listed versions 43.0.0-1ubuntu146.0.1-1ubuntu246.0.5-1ubuntu146.0.5-1ubuntu2 |
46.0.5-1ubuntu2.2 |
python-cryptographyUbuntu:Pro:18.04:LTS From an advisory covering 4 CVEs |
before 2.1.4-1ubuntu1.4+esm6, plus listed versions 1.9-12.1.3-32.1.4-12.1.4-1build12.1.4-1build2 Show 7 moreShow less2.1.4-1ubuntu12.1.4-1ubuntu1.12.1.4-1ubuntu1.22.1.4-1ubuntu1.32.1.4-1ubuntu1.42.1.4-1ubuntu1.4+esm12.1.4-1ubuntu1.4+esm3 |
2.1.4-1ubuntu1.4+esm6 |
python-cryptographyUbuntu:26.04:LTS From an advisory covering 4 CVEs |
before 46.0.5-1ubuntu2.2, plus listed versions 43.0.0-1ubuntu146.0.1-1ubuntu246.0.5-1ubuntu146.0.5-1ubuntu2 |
46.0.5-1ubuntu2.2 |
python-cryptographyopenSUSE:Leap 16.0 From an advisory covering 3 CVEs |
before 44.0.3-160000.5.1 | 44.0.3-160000.5.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-69249 is a high vulnerability (CVSS 8.7) in Pyca Cryptography, published August 3, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.26%, the 18th percentile. Fixed in cryptography 49.0.0.
References
github.com/pyca/cryptography/security/advisories/GHSA-jwv3-5hgf-82ww
github.com/pyca/cryptography/pull/14960
github.com/pyca/cryptography/commit/3763aa79b
github.com/pyca/cryptography/commit/4a12cf49675a184e47f912b00b04f3a629283582
github.com/pypa/advisory-database/tree/main/vulns/cryptography/PYSEC-2026-3553.yaml
nvd.nist.gov/vuln/detail/CVE-2026-69249
Show 154 moreShow less
github.com/advisories/GHSA-jwv3-5hgf-82ww
access.redhat.com/errata/RHSA-2026:64774
access.redhat.com/security/cve/CVE-2026-69248
access.redhat.com/security/cve/CVE-2026-69249
bugzilla.redhat.com/2510815
bugzilla.redhat.com/2510830
errata.almalinux.org/9/ALSA-2026-64774.html
access.redhat.com/errata/RHSA-2026:64795
errata.almalinux.org/10/ALSA-2026-64795.html
access.redhat.com/errata/RHSA-2026:71658
errata.almalinux.org/10/ALSA-2026-71658.html
github.com/CVEProject/cvelistV5/tree/main/cves/2026/69xxx/CVE-2026-69249.json
security-tracker.debian.org/tracker/CVE-2026-69249
github.com/pyca/cryptography
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3457
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3458
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3459
pypi.org/project/cryptography
access.redhat.com/errata/RHSA-2026:55543
images.redhat.com
access.redhat.com/security/cve/CVE-2026-54876
access.redhat.com/security/updates/classification
access.redhat.com/security/cve/CVE-2026-75803
access.redhat.com/security/cve/CVE-2026-69247
access.redhat.com/security/cve/CVE-2026-42769
access.redhat.com/security/cve/CVE-2026-42768
access.redhat.com/security/cve/CVE-2026-34181
access.redhat.com/security/cve/CVE-2026-34180
access.redhat.com/security/cve/CVE-2026-7383
access.redhat.com/security/cve/CVE-2026-45447
access.redhat.com/security/cve/CVE-2026-42766
access.redhat.com/security/cve/CVE-2026-45446
access.redhat.com/security/cve/CVE-2026-42767
access.redhat.com/security/cve/CVE-2026-45445
access.redhat.com/security/cve/CVE-2026-9076
access.redhat.com/security/cve/CVE-2026-34183
access.redhat.com/security/cve/CVE-2026-42765
access.redhat.com/security/cve/CVE-2026-42771
access.redhat.com/security/cve/CVE-2026-35188
access.redhat.com/security/cve/CVE-2026-42764
access.redhat.com/security/cve/CVE-2026-42770
access.redhat.com/security/cve/CVE-2026-34182
access.redhat.com/security/cve/CVE-2026-84782
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_55543.json
bugzilla.redhat.com/show_bug.cgi?id=2481879
cve.org/CVERecord?id=CVE-2026-7383
nvd.nist.gov/vuln/detail/CVE-2026-7383
bugzilla.redhat.com/show_bug.cgi?id=2481880
cve.org/CVERecord?id=CVE-2026-9076
nvd.nist.gov/vuln/detail/CVE-2026-9076
bugzilla.redhat.com/show_bug.cgi?id=2481881
cve.org/CVERecord?id=CVE-2026-34180
nvd.nist.gov/vuln/detail/CVE-2026-34180
bugzilla.redhat.com/show_bug.cgi?id=2481882
cve.org/CVERecord?id=CVE-2026-34181
nvd.nist.gov/vuln/detail/CVE-2026-34181
bugzilla.redhat.com/show_bug.cgi?id=2481884
cve.org/CVERecord?id=CVE-2026-34182
nvd.nist.gov/vuln/detail/CVE-2026-34182
bugzilla.redhat.com/show_bug.cgi?id=2481885
cve.org/CVERecord?id=CVE-2026-34183
nvd.nist.gov/vuln/detail/CVE-2026-34183
bugzilla.redhat.com/show_bug.cgi?id=2481886
cve.org/CVERecord?id=CVE-2026-35188
nvd.nist.gov/vuln/detail/CVE-2026-35188
bugzilla.redhat.com/show_bug.cgi?id=2481887
cve.org/CVERecord?id=CVE-2026-42764
nvd.nist.gov/vuln/detail/CVE-2026-42764
bugzilla.redhat.com/show_bug.cgi?id=2481889
cve.org/CVERecord?id=CVE-2026-42765
nvd.nist.gov/vuln/detail/CVE-2026-42765
bugzilla.redhat.com/show_bug.cgi?id=2481890
cve.org/CVERecord?id=CVE-2026-42766
nvd.nist.gov/vuln/detail/CVE-2026-42766
bugzilla.redhat.com/show_bug.cgi?id=2481891
cve.org/CVERecord?id=CVE-2026-42767
nvd.nist.gov/vuln/detail/CVE-2026-42767
bugzilla.redhat.com/show_bug.cgi?id=2481892
cve.org/CVERecord?id=CVE-2026-42768
nvd.nist.gov/vuln/detail/CVE-2026-42768
bugzilla.redhat.com/show_bug.cgi?id=2481893
cve.org/CVERecord?id=CVE-2026-42769
nvd.nist.gov/vuln/detail/CVE-2026-42769
bugzilla.redhat.com/show_bug.cgi?id=2481894
cve.org/CVERecord?id=CVE-2026-42770
nvd.nist.gov/vuln/detail/CVE-2026-42770
bugzilla.redhat.com/show_bug.cgi?id=2481895
cve.org/CVERecord?id=CVE-2026-42771
nvd.nist.gov/vuln/detail/CVE-2026-42771
bugzilla.redhat.com/show_bug.cgi?id=2481896
cve.org/CVERecord?id=CVE-2026-45445
nvd.nist.gov/vuln/detail/CVE-2026-45445
bugzilla.redhat.com/show_bug.cgi?id=2481897
cve.org/CVERecord?id=CVE-2026-45446
nvd.nist.gov/vuln/detail/CVE-2026-45446
bugzilla.redhat.com/show_bug.cgi?id=2481898
cve.org/CVERecord?id=CVE-2026-45447
nvd.nist.gov/vuln/detail/CVE-2026-45447
bugzilla.redhat.com/show_bug.cgi?id=2511600
cve.org/CVERecord?id=CVE-2026-54876
nvd.nist.gov/vuln/detail/CVE-2026-54876
github.com/openssl/openssl/commit/155b5fe0f93365e6df1c56ee3606b121080c6c12
github.com/openssl/openssl/commit/d8c51048ac037a21bae0f41cad7a3920dc7f3638
openssl-library.org/news/secadv/20260805.txt
bugzilla.redhat.com/show_bug.cgi?id=2510835
cve.org/CVERecord?id=CVE-2026-69247
nvd.nist.gov/vuln/detail/CVE-2026-69247
github.com/pyca/cryptography/commit/53fccd93413a8d7f07d6d8999681f27b75cffa3f
github.com/pyca/cryptography/pull/15369
github.com/pyca/cryptography/security/advisories/GHSA-g6cj-pr64-35w5
bugzilla.redhat.com/show_bug.cgi?id=2510830
cve.org/CVERecord?id=CVE-2026-69248
nvd.nist.gov/vuln/detail/CVE-2026-69248
github.com/pyca/cryptography/commit/4d035a4225965edeffd312079a510ef25fcfdcb2
github.com/pyca/cryptography/pull/14888
github.com/pyca/cryptography/security/advisories/GHSA-m2h6-j472-rp4c
bugzilla.redhat.com/show_bug.cgi?id=2510815
cve.org/CVERecord?id=CVE-2026-69249
bugzilla.redhat.com/show_bug.cgi?id=2523425
cve.org/CVERecord?id=CVE-2026-75803
nvd.nist.gov/vuln/detail/CVE-2026-75803
github.com/openssl/openssl/commit/119ab9555dc62275bbd71f6f49529b1a44feba42
github.com/openssl/openssl/commit/3621257986e27e540bf96a11570929a6e5a9e05b
github.com/openssl/openssl/commit/6c7aa6f8f6449b7fe0137ee8be65fcd239bd7d6a
github.com/openssl/openssl/commit/bdeb0cd994d915342787f117ee75044f0dc36f34
github.com/openssl/openssl/commit/bf95f5f772e9362f87b25cfa2f8cb15d984865b9
openssl-library.org/news/secadv/20260825.txt
bugzilla.redhat.com/show_bug.cgi?id=2537080
cve.org/CVERecord?id=CVE-2026-84782
nvd.nist.gov/vuln/detail/CVE-2026-84782
openssl-library.org/news/vulnerabilities
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_64774.json
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_64795.json
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_71658.json
access.redhat.com/errata/RHSA-2026:71659
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_71659.json
errata.rockylinux.org/RLSA-2026:64774
errata.rockylinux.org/RLSA-2026:64795
errata.rockylinux.org/RLSA-2026:71658
suse.com/support/update/announcement/2026/suse-su-202623196-1
bugzilla.suse.com/1273516
bugzilla.suse.com/1273549
suse.com/security/cve/CVE-2026-69248
suse.com/security/cve/CVE-2026-69249
suse.com/support/update/announcement/2026/suse-su-202623247-1
suse.com/support/update/announcement/2026/suse-su-202623404-1
bugzilla.suse.com/1273551
suse.com/security/cve/CVE-2026-69247
suse.com/support/update/announcement/2026/suse-su-202623570-1
ubuntu.com/security/CVE-2026-69249
ubuntu.com/security/notices/USN-8776-1
ubuntu.com/security/CVE-2023-23931
ubuntu.com/security/CVE-2026-69247
ubuntu.com/security/CVE-2026-69248
Left out here: 106 versions and the rest of 3 source descriptions. The JSON record has them.