Vulnerability DatabaseCVE-2026-105236

CVE-2026-105236: 
Erlang OTP vulnerability analysis and mitigation

Overview

CVE-2026-105236 is an Improper Certificate Validation vulnerability (CWE-295) in the ssl application of Erlang/OTP that allows a TLS 1.2 client authenticated to one SNI virtual host to resume its session at a second, higher-trust SNI virtual host on the same listener without re-validating its certificate against the second host's CA. The vulnerability affects Erlang/OTP from version 18.0 up to (but not including) OTP 27.3.4.19, OTP 28.5.0.8, and OTP 29.1.2, corresponding to ssl library versions 7.0 through 11.2.12.14, 11.6.0.7, and 11.7.8. It was disclosed on October 14, 2026, and was responsibly reported by Yonghwa Lee and Xint by Theori. It carries a CVSS v4.0 base score of 6.3 (Medium) (GitHub Advisory).

Technical details

The root cause (CWE-295) lies in how Erlang/OTP's TLS 1.2 session cache operates: a single pre-TLS 1.3 session cache is maintained per listen socket, and cached sessions are not bound to the SNI name or client trust policy that established them. When an SNI option set uses verify_peer without explicitly setting reuse_sessions, ssl_config:update_options/3 inherits the base listener's reuse_sessions: true value, bypassing the default that would disable reuse for client-authenticating servers. During an abbreviated handshake, ssl_session:is_resumable/4 only checks that the cached session uses one of the current server certificates and carries some peer certificate — it never revalidates that certificate against the CA configured for the requested SNI name. Exploitation requires that at least two SNI names share the same server certificate (common with wildcard or multi-SAN certificates) but use distinct client CAs, TLS 1.2 is negotiated, and the attacker holds a valid client certificate for the lower-trust SNI. TLS 1.3 uses a different ticket/PSK path and is not affected (GitHub Advisory, Fix Commit).

Impact

A client with a legitimate certificate trusted only by a lower-trust SNI virtual host can authenticate to a higher-trust SNI virtual host on the same listener by resuming a previously established TLS 1.2 session, bypassing the per-host client certificate authority validation. This results in unauthorized access to resources or services protected by the higher-trust virtual host, with low confidentiality and low integrity impact on the vulnerable system. Availability is not directly affected, and there is no impact on subsequent systems. The attack is limited to deployments where multiple SNI names share a server certificate and use distinct client CAs, which is a common configuration with wildcard or multi-SAN certificates (GitHub Advisory).

Exploitability

No public proof-of-concept exploit code or in-the-wild exploitation has been reported as of the disclosure date. The EPSS score is 0.0, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities catalog. Exploitation requires specific preconditions: the attacker must already possess a valid client certificate for a lower-trust SNI name on the same listener, TLS 1.2 must be negotiated, and the server must use a shared certificate across SNI names with distinct client CAs. No threat actor attribution has been identified (GitHub Advisory).

Exploitation steps

  1. Reconnaissance: Identify an Erlang/OTP TLS server (OTP 18.0–27.3.4.18 / 28.x before 28.5.0.8 / 29.x before 29.1.2) that serves multiple SNI virtual hosts on a single listener using sni_fun or sni_hosts, with TLS 1.2 enabled.
  2. Obtain lower-trust certificate: Acquire or already possess a valid client certificate trusted by the lower-trust SNI virtual host (e.g., low.example.com) but not by the higher-trust host (e.g., high.example.com).
  3. Establish initial session: Connect to the server using TLS 1.2 with the SNI set to the lower-trust name (e.g., low.example.com), completing a full handshake and saving the resulting session ID (e.g., using OpenSSL's -sess_out flag).
  4. Attempt session resumption at higher-trust host: Initiate a new TLS 1.2 connection to the same listener with the SNI set to the higher-trust name (e.g., high.example.com), presenting the saved session ID for resumption (e.g., using OpenSSL's -sess_in flag) along with the lower-trust client certificate.
  5. Bypass CA validation: On vulnerable versions, the server's ssl_session:is_resumable/4 accepts the abbreviated handshake without revalidating the client certificate against the higher-trust CA, granting the attacker access to the higher-trust virtual host (GitHub Advisory, Fix Commit).

Indicators of compromise

  • Network: TLS 1.2 abbreviated handshakes (session resumption) to a server listener where the ClientHello SNI name differs from the SNI name that originally established the cached session; repeated session resumption attempts across different SNI names from the same client IP.
  • Logs: Server-side TLS logs showing a session ID being reused across different SNI hostnames in rapid succession; absence of a full handshake (no Certificate or CertificateVerify messages) for connections to higher-trust SNI names from clients that should require re-authentication.
  • Application: Unexpected access to resources or APIs protected by a higher-trust SNI virtual host from a client identity (certificate subject/issuer) that is only authorized for a lower-trust SNI name.

Mitigation and workarounds

Erlang/OTP has released patched versions: OTP 27.3.4.19, OTP 28.5.0.8, and OTP 29.1.2 (corresponding ssl library versions 11.2.12.14, 11.6.0.7, and 11.7.8). Upgrading to one of these versions is the recommended remediation. For deployments that cannot upgrade immediately, the following workarounds are available: (1) serve distinct SNI trust domains on separate listen sockets so each has its own session cache; (2) explicitly set {reuse_sessions, false} in each SNI service's option set or in the default server configuration; or (3) enforce TLS 1.3 exclusively, as it does not use the affected session-ID cache (GitHub Advisory).

Community reactions

The vulnerability was responsibly disclosed to the Erlang/OTP project by Yonghwa Lee and Xint by Theori (underdog@theori.io), and the advisory was published by Erlang/OTP maintainer IngelaAndin on October 14, 2026. No significant broader media coverage or notable community commentary beyond the official advisory and standard CVE tracking feeds has been identified at this time (GitHub Advisory).

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Affected

bookworm

erlang

Affected

sid

erlang

Affected

trixie

erlang

Affected

Ubuntu

Unknown

bionic (esm-infra)

erlang

Unknown

devel

erlang

Unknown

focal (esm-infra)

erlang

Unknown

jammy

erlang

Unknown

noble

erlang

Unknown

resolute

erlang

Unknown

trusty (esm-infra-legacy)

erlang

Unknown

xenial (esm-infra-legacy)

erlang

Unknown

RHEL / CentOS

Unknown

Source: This report was generated using AI

Related Erlang OTP vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-89422CRITICAL9.3
  • CBL Mariner logoCBL Mariner
  • erlang-ftp
NoYesSep 22, 2026
CVE-2026-94200HIGH8.2
  • Erlang OTP logoErlang OTP
  • cpe:2.3:a:erlang:erlang\/otp
NoYesOct 14, 2026
CVE-2026-68956HIGH7.1
  • CBL Mariner logoCBL Mariner
  • erlang-compiler
NoYesSep 22, 2026
CVE-2026-105236MEDIUM6.3
  • Erlang OTP logoErlang OTP
  • erlang
NoYesOct 14, 2026
CVE-2026-96596MEDIUM5.9
  • Erlang OTP logoErlang OTP
  • erlang
NoYesOct 14, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management