{"id":"CVE-2026-48057","kind":"vulnerability","aliases":["CVE-2026-48057"],"related":[],"title":"Botan: multi-value RDN flattening lets name constraints be bypassed","description":"Botan is a C++ cryptography library. Prior to 3.13.0, Botan's X.509 Distinguished Name decoder flattens the Attribute-Value Assertions in each Relative Distinguished Name and loses multi-value RDN grouping before DN name-constraint enforcement. An attacker controlling a name-constrained intermediate CA can issue a certificate with a multi-value RDN whose first Common Name matches the permitted constraint and whose second Common Name is attacker-chosen, causing the constraint check to accept the flattened first value. If the certificate contains no subjectAlternativeName extension, the second Common Name can then be accepted as a hostname; Botan does not fall back to Common Name hostname matching when any subjectAlternativeName is present. The exposure is limited to deployments using DN name constraints, which are uncommon outside internal PKIs, and to certificates without a subjectAlternativeName. This issue is fixed in version 3.13.0.","summary":"Botan is a C++ cryptography library whose X.509 distinguished name decoder loses multi-value RDN grouping before name-constraint checks. An attacker holding a name-constrained intermediate CA can issue a certificate whose second Common Name is accepted as a hostname, provided the certificate has no subjectAlternativeName.","severity":"low","cvss":2.1,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["botan","c++","internal-pki","package","x.509"],"not_affected_if":["no-dn-name-constraints","public-web-pki","subjectaltname-present"],"how_to_check":"- Check the Botan version in use with `botan version` or the library's version header\n- Look for DN name constraints in certificate validation paths of internal PKI deployments\n- Check whether the application relies on Common Name hostname matching for certificates without subjectAlternativeName","fix":"- Botan: `3.13.0`","status":"open","published_at":"2026-11-06T22:17:53+00:00","first_seen_at":"2026-11-06T22:44:32+00:00","triaged_at":"2026-11-06T22:44:59+00:00","updated_at":"2026-11-06T22:44:59+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-06T22:44:59Z","model":"claude-haiku-5-5","output":{"fix":"- Botan: `3.13.0`","reach":"network","title":"Botan: multi-value RDN flattening lets name constraints be bypassed","impact":"low","summary":"Botan is a C++ cryptography library whose X.509 distinguished name decoder loses multi-value RDN grouping before name-constraint checks. An attacker holding a name-constrained intermediate CA can issue a certificate whose second Common Name is accepted as a hostname, provided the certificate has no subjectAlternativeName.","audience":"developers","category":"package","nicknames":[],"who_cares":["botan","c++","internal-pki","x.509"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"hostname check accepts attacker-chosen name under constrained CA","analyst_note":"","how_to_check":"- Check the Botan version in use with `botan version` or the library's version header\n- Look for DN name constraints in certificate validation paths of internal PKI deployments\n- Check whether the application relies on Common Name hostname matching for certificates without subjectAlternativeName","plain_action":"","needs_analyst":false,"not_affected_if":["no-dn-name-constraints","subjectaltname-present","public-web-pki"],"who_is_affected":"Only deployments that use X.509 distinguished name name constraints, which are uncommon outside internal PKIs, and that accept certificates lacking a subjectAlternativeName extension are exposed. Applications that use Botan for TLS against public certificates with SANs are unlikely to be affected. Teams that do not validate DN name constraints can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"low"},"cost_usd":0.000737,"input_tokens":4446,"output_tokens":585,"severity_before":"low"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,16A '-48057':14A,17A '3.13.0':83C,221C 'accept':65B,155C,174C 'assert':95C 'attack':48B,115C,148C 'attacker-chosen':147C 'attribut':93C 'attribute-valu':92C 'back':182C 'botan':1A,18B,25B,75C,84C,178C 'bypass':11A 'c':19B,28B,78C 'ca':55B,122C 'caus':150C 'certif':59B,71B,126C,162C,211C 'check':46B,153C 'chosen':149C 'common':62B,135C,144C,169C,184C 'constrain':53B,120C 'constraint':9A,45B,112C,140C,152C,202C 'contain':163C 'control':116C 'cryptographi':29B,79C 'cve':12A,15A 'decod':35B,89C 'deploy':198C 'distinguish':33B,87C,99C 'dn':109C,200C 'enforc':113C 'exposur':194C 'extens':166C 'fall':181C 'first':134C,158C 'fix':218C 'flatten':6A,90C,157C 'group':41B,107C 'hold':49B 'hostnam':68B,177C,186C 'intermedi':54B,121C 'intern':21B,207C 'internal-pki':20B 'issu':57B,124C,216C 'let':7A 'librari':30B,80C 'limit':196C 'lose':36B,102C 'match':137C,187C 'multi':3A,38B,104C,130C 'multi-valu':2A,37B,103C,129C 'name':8A,34B,44B,52B,63B,88C,100C,111C,119C,136C,145C,170C,185C,201C 'name-constrain':51B,118C 'name-constraint':43B,110C 'outsid':206C 'packag':23B 'permit':139C 'pki':22B 'pkis':208C 'present':192C 'prior':81C 'provid':69B 'rdn':5A,40B,106C,132C 'relat':98C 'second':61B,143C,168C 'subjectalternativenam':74B,165C,190C,214C 'uncommon':205C 'use':199C 'valu':4A,39B,94C,105C,131C,159C 'version':220C 'whose':31B,60B,133C,142C 'without':212C 'x.509':24B,32B,86C","nicknames":[],"mitigations":[],"who_affected":"Only deployments that use X.509 distinguished name name constraints, which are uncommon outside internal PKIs, and that accept certificates lacking a subjectAlternativeName extension are exposed. Applications that use Botan for TLS against public certificates with SANs are unlikely to be affected. Teams that do not validate DN name constraints can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["botan","c","internalpki","low","package","x509"],"campaign_type":null,"search_a":"'-2026':13A,16A '-48057':14A,17A 'botan':1A 'bypass':11A 'constraint':9A 'cve':12A,15A 'flatten':6A 'let':7A 'multi':3A 'multi-valu':2A 'name':8A 'rdn':5A 'valu':4A","search_b":"'accept':65B 'attack':48B 'botan':18B,25B 'c':19B,28B 'ca':55B 'certif':59B,71B 'check':46B 'common':62B 'constrain':53B 'constraint':45B 'cryptographi':29B 'decod':35B 'distinguish':33B 'group':41B 'hold':49B 'hostnam':68B 'intermedi':54B 'intern':21B 'internal-pki':20B 'issu':57B 'librari':30B 'lose':36B 'multi':38B 'multi-valu':37B 'name':34B,44B,52B,63B 'name-constrain':51B 'name-constraint':43B 'packag':23B 'pki':22B 'provid':69B 'rdn':40B 'second':61B 'subjectalternativenam':74B 'valu':39B 'whose':31B,60B 'x.509':24B,32B","search_c":"'3.13.0':83C,221C 'accept':155C,174C 'assert':95C 'attack':115C,148C 'attacker-chosen':147C 'attribut':93C 'attribute-valu':92C 'back':182C 'botan':75C,84C,178C 'c':78C 'ca':122C 'caus':150C 'certif':126C,162C,211C 'check':153C 'chosen':149C 'common':135C,144C,169C,184C 'constrain':120C 'constraint':112C,140C,152C,202C 'contain':163C 'control':116C 'cryptographi':79C 'decod':89C 'deploy':198C 'distinguish':87C,99C 'dn':109C,200C 'enforc':113C 'exposur':194C 'extens':166C 'fall':181C 'first':134C,158C 'fix':218C 'flatten':90C,157C 'group':107C 'hostnam':177C,186C 'intermedi':121C 'intern':207C 'issu':124C,216C 'librari':80C 'limit':196C 'lose':102C 'match':137C,187C 'multi':104C,130C 'multi-valu':103C,129C 'name':88C,100C,111C,119C,136C,145C,170C,185C,201C 'name-constrain':118C 'name-constraint':110C 'outsid':206C 'permit':139C 'pkis':208C 'present':192C 'prior':81C 'rdn':106C,132C 'relat':98C 'second':143C,168C 'subjectalternativenam':165C,190C,214C 'uncommon':205C 'use':199C 'valu':94C,105C,131C,159C 'version':220C 'whose':133C,142C 'without':212C 'x.509':86C","first_public_at":"2026-09-01T22:08:46+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:H/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/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","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-48057","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-48057","severity":null,"published_at":"2026-11-06T22:17:53+00:00","modified_at":"2026-11-06T22:17:53+00:00","first_seen_at":"2026-11-06T22:44:32+00:00","fetched_at":"2026-11-06T22:44:32+00:00","note":null}],"documents":[{"id":90747,"url":"https://github.com/randombit/botan/commit/a22260c368373a134ff9778b9d8781edb2e1eb99","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":90748,"url":"https://github.com/randombit/botan/security/advisories/GHSA-3mh2-26h4-wrqc","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-09-01T22:08:46+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}