Skip to main content

Apache Thrift CVE-2026-85088

| EUVDEUVD-2026-91418 MEDIUM
Improper Certificate Validation (CWE-295)
2026-10-02 apache GHSA-4xmj-xwhr-jcj2
6.9
CVSS 4.0 · Vendor: apache
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain MITM position on client-server path
  2. Delivery
    Present trusted cert with matching Common Name
  3. Exploit
    SAN entries skip, CN satisfies check
  4. Execution
    Impersonate legitimate Thrift server
  5. Impact
    Intercept 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Apache Thrift 0 <0.25.0

Affected Packages

euvd apache_thrift fix: 0.25.0

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

Vendor (apache) PRIMARY 6.9 MEDIUM
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
vuln.today AI 7.4 HIGH

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
SUSE 7.4 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Red Hat 7.4 HIGH

Primary rating from Vendor (apache).

CVSS VectorVendor: apache

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 02, 2026 - 12:02 EUVD
CVE Published
Oct 02, 2026 - 11:37 cve.org
MEDIUM 6.9

DescriptionCVE.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

EPSS Score
0.2%
Top 89% exploitable
Prevalence
Medium
popular RPC/serialization framework, but C++/D TLS bindings less universal
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Total

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +34
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2026-91135 CRITICAL
9.2 Oct 02

Heap-based buffer overflow in the C++ THeaderTransport of Apache Thrift before 0.25.0 lets a remote, unauthenticated att

CVE-2026-83632 CRITICAL
9.2 Oct 02

Heap-based memory corruption in Apache Thrift versions before 0.25.0 lets unauthenticated remote attackers who can send

CVE-2026-86537 HIGH
8.7 Oct 02

Denial of service in Apache Thrift deployments that use the D language bindings before version 0.25.0, where malformed i

CVE-2026-94646 HIGH
8.7 Oct 02

Denial of service in the Apache Thrift Node.js bindings (all versions before 0.25.0) lets remote, unauthenticated attack

CVE-2026-93925 HIGH
8.7 Oct 02

Remote denial of service against Apache Thrift C++ deployments that use the THeaderProtocol is achievable by sending a c

CVE-2026-66081 HIGH
8.7 Oct 02

Remote, unauthenticated attackers can crash applications built against Apache Thrift's c_glib (C/GLib) language bindings

CVE-2026-66859 HIGH
8.7 Oct 02

Denial of service in Apache Thrift's c_glib (C/GLib) language bindings before 0.25.0, where a crafted or malformed messa

CVE-2026-83663 HIGH
8.7 Oct 02

Denial of service in Apache Thrift's Go bindings (all versions before 0.25.0) allows an unauthenticated remote peer to c

CVE-2026-83745 HIGH
8.7 Oct 02

Memory exhaustion in Apache Thrift's Node.js and D language WebSocket server transports (all versions before 0.25.0) let

CVE-2026-96277 HIGH
8.7 Oct 02

Uncaught exception handling in the Apache Thrift Ruby bindings lets unauthenticated remote attackers crash network-reach

CVE-2026-94658 HIGH
8.7 Oct 02

Inefficient algorithmic complexity (CWE-407) in Apache Thrift's Lua bindings prior to version 0.25.0 allows remote, unau

CVE-2026-87117 HIGH
8.7 Oct 02

Unauthenticated remote attackers can crash applications that use the Apache Thrift PHP bindings prior to version 0.25.0

Vendor StatusVendor

SUSE

Severity: Important

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy