Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain MITM position on client-server path
-
DeliveryPresent trusted cert with matching Common Name
-
ExploitSAN entries skip, CN satisfies check
-
ExecutionImpersonate legitimate Thrift server
-
ImpactIntercept and tamper RPC traffic
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V12 - Secure Communication Certificate validation
|
| Exploitation Conditions | Exploitation requires ALL of: (1) an attacker positioned on the network path (man-in-the-middle) between a Thrift client and server; (2) the client using the C++ TSSLSocketFactory default access manager or the D accessManager property for SSL client sockets; (3) the attacker possessing a certificate that chains to a certificate authority already in the client's trust store; and (4) that certificate carrying a Common Name equal to the connected hostname while all of its subjectAltName dNSName entries are present but non-matching (the non-matching SANs yield 'skip' and fall through to the CN). Limiting factors: because public CAs stopped issuing on Common Name alone years ago, this is practically confined to deployments using private/enterprise PKI; it only affects the C++ (0.7.0-0.24.0) and D (0.9.0-0.24.0) libraries, not other language bindings; and the required MITM position plus trusted CN-matching certificate make opportunistic mass exploitation impractical. |
| Impact | This is a genuine but moderate-priority flaw whose signals are internally consistent rather than conflicting. The vendor-supplied CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N, base 6.9) correctly captures a network-exploitable certificate-validation bypass (CWE-295) that needs no privileges or user interaction but carries both high attack complexity and a present attack requirement (AT:P) - reflecting that the attacker must occupy a privileged man-in-the-middle position AND possess a certificate chaining to a CA in the client's trust store with a CN matching the target host. The CVSS exploit-maturity field is E:U (unreported), there is no CISA KEV listing, no EPSS value was provided in the intelligence, and no POC was referenced, so exploitation status is: no public exploit identified at time of analysis. The high AT/AC requirements plus the vendor's own observation that public CAs abandoned CN-only issuance years ago mean real-world risk is largely confined to deployments using private or enterprise PKI. Net: a legitimate confidentiality/integrity bug worth patching on a normal cadence, not an emergency; it is a high-CVSS-relative-to-exploitability issue gated by stringent preconditions rather than a mass-exploitation threat. Missing data to note explicitly: no EPSS score was supplied and POC availability is unstated, so likelihood scoring beyond the qualitative CVSS signals cannot be confirmed. |
| Exploit ScenarioDerived | An attacker already able to intercept traffic on the network path between a Thrift C++ or D client and its server (e.g., a compromised router or ARP/DNS spoofing within an enterprise segment) presents a server certificate whose subjectAltName dNSName entries are all non-matching but whose Common Name equals the hostname the client dialed, and which chains to a CA trusted by the client. The default access manager accepts it, letting the attacker impersonate the legitimate server and silently intercept or modify RPC calls. No public exploit code is identified at time of analysis, and exploitation hinges on the attacker holding a trusted CN-matching certificate. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 02, 2026
TLS hostname verification in the Apache Thrift C++ and D libraries can be bypassed, letting a man-in-the-middle present a certificate that chains to an already-trusted CA and still be accepted for the wrong hostname. The default access managers shipped with the C++ TSSLSocketFactory (versions 0.7.0 through 0.24.0) and the D accessManager property (versions 0.9.0 through 0.24.0) treat a non-matching subjectAltName dNSName as a 'skip' instead of a rejection and then fall back to the certificate Common Name, which violates RFC 6125 section 6.4.4 and RFC 9525 section 2. Because public CAs have not issued on Common Name alone for years, the practical exposure is confined to private or enterprise PKI deployments where such certificates still exist, and exploitation additionally requires an on-path attacker plus a CN-matching certificate from a trusted CA; unauthenticated per the CVSS 4.0 vector (PR:N) and no public exploit identified at time of analysis.
RemediationAI
Vendor-released patch: Apache Thrift 0.25.0. Upgrade both the C++ and D libraries to 0.25.0, which corrects the access manager so that a non-matching subjectAltName dNSName results in rejection rather than a fall-through to the Common Name, as required by RFC 6125 section 6.4.4 and RFC 9525 section 2; consult the Apache advisories at https://lists.apache.org/thread/33otcgbqd27wf6qq810q56znzbomnhg1 and https://lists.apache.org/thread/zcgm7lx6037lvgvn87rc1tj3p0zhv371 for exact upgrade guidance. Where an immediate upgrade is not possible, the effective compensating control is to stop relying on the default access managers: supply a custom hostname verifier or access manager in C++ and D that treats any SAN-without-match as a hard failure and never consults the Common Name, at the cost of maintaining custom TLS code and re-validating it against edge cases (wildcards, IP literals, multiple SANs). A secondary measure, with clear trade-offs, is to reduce the population of certificates that could satisfy the fallback at all, by ensuring no CA in the client trust store issues hostname certificates on Common Name alone - typically achieved by restricting the trust store to a private PKI that enforces SAN-only issuance or by tightening CA issuance policy, which is an organizational rather than code-level fix and does not help against already-issued certificates. Blocking the attacker's network position (strict egress filtering, mutual TLS with client certificates, or pinned server identities where supported) raises the bar for the required man-in-the-middle placement, but the underlying verification defect remains until 0.25.0 is deployed. Note that no vendor-released patch is needed for other language bindings, since the issue is scoped to the C++ and D libraries.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-295, Improper Certificate Validation, specifically the hostname-verification step rather than the chain-of-trust step. Apache Thrift is a cross-language RPC framework; its SSL/TLS client sockets in C++ are configured through TSSLSocketFactory, which installs a default access manager that compares the peer certificate to the hostname used for the connection, and the D library exposes the equivalent behavior through the accessManager property. That comparison logic walks the subjectAltName dNSName entries first; when a SAN entry does not match, the code returns a 'skip' verdict instead of a definitive rejection, so a certificate whose SAN entries are all present and all non-matching falls through to the Common Name check, which can then satisfy the comparison. RFC 6125 section 6.4.4 and RFC 9525 section 2 both require that the Common Name must not be consulted when a dNSName subjectAltName is present, precisely because a CA-issued certificate for attacker-controlled or unrelated names could otherwise impersonate a different host. The result is that a certificate carrying SAN entries for one name and a CN for another is accepted for a connection to the second name. The defect is limited to the C++ and D library implementations - other language bindings are not described as affected - and CPE data (cpe:2.3:a:apache_software_foundation:apache_thrift) plus the EUVD entry (EUVD-2026-91418, listing Apache Thrift 0 <0.25.0) confirm the scope to the Thrift core distribution.
Know when Apache Thrift gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:U
AC:H for the required MITM position and specially-crafted trusted CN-matching certificate; PR:N/UI:N as the victim client needs no action; C:H/I:H for server impersonation enabling interception and tampering; A:N.
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Primary rating from Vendor (apache).
CVSS VectorVendor: apache
Lifecycle Timeline
2DescriptionCVE.org
Improper Validation of Certificate with Host Mismatch in the C++ and D libraries of Apache Thrift.
Both libraries install a default access manager for client sockets - TSSLSocketFactory does so in C++, and the accessManager property does so in D - which compares the peer certificate against the host
name that was connected to. That comparison walks the subjectAltName dNSName entries first and consults the certificate Common Name afterwards. A name that does not match yields a "skip" result rather than
a rejection, so a certificate whose subjectAltName entries are all present and all non-matching falls through to the Common Name, which can then satisfy the check.
RFC 6125 section 6.4.4, and RFC 9525 section 2, require that the Common Name is not consulted when a dNSName subjectAltName is present. A certificate carrying subjectAltName entries for one name and a
Common Name for another is therefore accepted for a connection to the second name.
Exploitation requires an attacker positioned on the network path who holds a certificate that chains to a certificate authority in the client's trust store and whose Common Name matches the connected host
name. Public certificate authorities have not issued on Common Name alone for many years, so this is principally a concern for deployments using a private or enterprise public-key infrastructure.
This issue affects the C++ library of Apache Thrift from 0.7.0 through 0.24.0 and the D library from 0.9.0 through 0.24.0. Users should upgrade to 0.25.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Apache Thrift
View allHeap-based buffer overflow in the C++ THeaderTransport of Apache Thrift before 0.25.0 lets a remote, unauthenticated att
Heap-based memory corruption in Apache Thrift versions before 0.25.0 lets unauthenticated remote attackers who can send
Denial of service in Apache Thrift deployments that use the D language bindings before version 0.25.0, where malformed i
Denial of service in the Apache Thrift Node.js bindings (all versions before 0.25.0) lets remote, unauthenticated attack
Remote denial of service against Apache Thrift C++ deployments that use the THeaderProtocol is achievable by sending a c
Remote, unauthenticated attackers can crash applications built against Apache Thrift's c_glib (C/GLib) language bindings
Denial of service in Apache Thrift's c_glib (C/GLib) language bindings before 0.25.0, where a crafted or malformed messa
Denial of service in Apache Thrift's Go bindings (all versions before 0.25.0) allows an unauthenticated remote peer to c
Memory exhaustion in Apache Thrift's Node.js and D language WebSocket server transports (all versions before 0.25.0) let
Uncaught exception handling in the Apache Thrift Ruby bindings lets unauthenticated remote attackers crash network-reach
Inefficient algorithmic complexity (CWE-407) in Apache Thrift's Lua bindings prior to version 0.25.0 allows remote, unau
Unauthenticated remote attackers can crash applications that use the Apache Thrift PHP bindings prior to version 0.25.0
EUVD-2026-91418
GHSA-4xmj-xwhr-jcj2
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB