Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain partial-label wildcard cert from trusted (private) CA
-
DeliveryPosition as adversary-in-the-middle on TLS path
-
ExploitPresent cert to client relying on ssl_verify_fun with SNI disabled
-
Executiontry_match_wildcard accepts hostname across label boundary
-
ImpactImpersonate peer and read or alter traffic
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V12 - Secure Communication Certificate host validation
|
| Exploitation Conditions | Requires three things together: (1) an attacker-held leaf certificate whose subjectAltName carries a partial-label wildcard such as f*.example.net (or *.168.1.1 for the IP-literal variant), issued by a CA the victim trusts - the CA/Browser Forum Baseline Requirements disallow such certificates, so realistically this means a private/internal PKI; (2) an adversary-in-the-middle position on the TLS connection; and (3) a deployment where ssl_verify_fun performs the sole hostname check. The last condition holds only when the client sets {server_name_indication, disable}, when a TLS server uses ssl_verify_hostname:verify_fun/3 to verify client-certificate hostnames, when code calls ssl_verify_hostname:verify_cert_hostname/2 directly, or when running Erlang/OTP older than 20.0. LIMITING FACTORS: on Erlang/OTP 20.0 and later with server_name_indication set to a hostname (or an IP from a socket upgrade), the ssl layer runs public_key:pkix_verify_hostname and rejects the mismatch with hostname_check_failed before the user verify_fun sees valid_peer, so default SNI-enabled clients are not exploitable. Whole-label wildcards (*.example.net) are matched correctly and are not affected. The documented workaround on OTP 21+ is to keep SNI set and pass {customize_hostname_check, [{match_fun, public_key:pkix_verify_hostname_match_fun(https)}]}; hackney and tls_certificate_check already set both options. |
| Impact | The signals pull in opposite directions and must be weighed carefully. The input assigns CVSS 4.0 9.1 (Critical) and vuln.today labels this act_now, yet the concrete exploitation path is tightly constrained. The 4.0 vector (AV:N/AC:H/AT:P/PR:N/UI:N) already encodes this tension: network-reachable and unauthenticated, but high complexity with an attack requirement (AT:P), reflecting that the attacker must hold a certificate carrying a partial-label wildcard issued by a CA the victim trusts. The advisory states the CA/Browser Forum Baseline Requirements forbid such certificates, so realistic exposure is confined to private PKI, and exploitation only matters where ssl_verify_fun is the sole hostname check - specifically {server_name_indication, disable}, TLS servers verifying client-certificate hostnames, direct callers of verify_cert_hostname/2, or Erlang/OTP older than 20.0. On OTP 20.0+ with SNI set to a hostname, the ssl layer rejects the mismatch before the library runs, neutralizing the flaw. No KEV listing and no EPSS score are present in the input, so there is no evidence of active or widespread exploitation; status is no public exploit identified as confirmed working code, though the advisory publishes a step-by-step PoC procedure. Net: this is a genuine authentication-bypass/MITM defect that warrants prompt patching per the act_now label, but its real-world blast radius is narrow (private-PKI, non-default-configuration deployments) rather than broad internet-wide risk - the high score reflects impact severity, not ease or breadth of exploitation. |
| Exploit ScenarioDerived | An adversary who can position themselves in the network path (adversary-in-the-middle) and who possesses a certificate for an identifier like f*.example.net issued by a CA the victim trusts presents it to a client that relies solely on ssl_verify_fun for hostname verification (e.g. with SNI disabled). The library accepts the certificate for f.evil.example.net because the partial-label wildcard is allowed to consume dots across a label boundary, letting the attacker impersonate the host and read or alter the TLS traffic. A detailed PoC procedure (issuing the leaf cert via public_key:pkix_test_data and calling verify_cert_hostname/2) is published in the GHSA advisory, but it is not verified as packaged working exploit code; the high CVSS complexity (AC:H/AT:P) reflects the need for the attacker-held trusted wildcard certificate and a vulnerable non-default configuration. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Hostname verification in the Erlang library ssl_verify_fun (versions 1.0.1 through 1.1.7) mishandles partial-label wildcard certificate identifiers, letting a certificate such as f*.example.net be accepted for f.evil.example.net. A man-in-the-middle holding such a certificate from a CA the victim trusts could impersonate the peer, but only where ssl_verify_fun is the sole hostname check - clients with server_name_indication disabled, TLS servers using it to check client certificates, direct callers of verify_cert_hostname/2, or Erlang/OTP older than 20.0, since OTP 20.0+ with SNI set rejects the mismatch in ssl first. Fixed in 1.1.8; no public exploit identified at time of analysis, though a detailed proof-of-concept procedure is published in the advisory.
RemediationAI
Upgrade ssl_verify_fun to 1.1.8 or later (fix commit ca34031, pull request https://github.com/deadtrickster/ssl_verify_fun.erl/pull/33, advisory GHSA-7gw2-hphm-c5px). If upgrading is not immediately possible, the vendor documents a workaround on Erlang/OTP 21 or later: keep server_name_indication set to the target hostname and pass {customize_hostname_check, [{match_fun, public_key:pkix_verify_hostname_match_fun(https)}]} in the ssl options, so the ssl-layer check rejects cross-label wildcard matches before ssl_verify_fun runs while legitimate whole-label wildcards still match - the trade-off is dependence on OTP's matcher and inapplicability to OTP older than 21. For servers verifying client certificate hostnames and for direct callers of verify_cert_hostname/2 there is no equivalent compensating control in the library itself: remove reliance on partial-label wildcard matching by re-issuing any internal-PKI certificates with whole-label or no wildcards, and restrict trust to a private CA whose issuance policy forbids partial-label wildcards. Note the vendor states that the ssl-layer workaround covers only the configurations listed; updating the library is the complete fix.
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
CWE-297 (Improper Validation of Certificate with Host Mismatch) in ssl_verify_fun's src/ssl_verify_hostname.erl. try_match_hostname/2 strips trailing dots, attempts a case-insensitive exact match and otherwise calls parse_and_validate_wildcard_identifier/2, which accepts an identifier with a single * in the left-most label plus at least two labels after it and flags the label as SingleCharW only when it is exactly '*'. try_match_wildcard/4 then, in the non-SingleCharW case, verifies only that the presented hostname ends with the suffix after the '*' and starts with the text before it - it never inspects the span the '*' consumes, so dots are swallowed and f*.example.net matches f.evil.example.net and f.a.b.example.net. RFC 6125 section 6.4.3 confines wildcards to the left-most label; the wildcard_not_in_a_label/2 guard only rejects internationalized xn-- labels. Because the reference identifier is treated as a DNS name regardless of shape, *.168.1.1 also matches the IP literal 192.168.1.1, whereas OTP's ssl converts an IP-literal string to an {ip, ...} reference that only matches iPAddress entries. Whole-label wildcards (*.example.net) compare from the first dot onward and behave correctly. The fix commit ca34031 computes the wildcard-consumed span and rejects matches where it contains a dot.
Know when Erlang 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
AC:H because exploitation needs a trusted partial-label-wildcard cert plus a non-default config (SNI disabled, server-side, or OTP<20); PR:N as the TLS peer is unauthenticated; MITM read/alter gives C:H/I:H, A:N.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Improper Validation of Certificate with Host Mismatch vulnerability in deadtrickster ssl_verify_fun allows an adversary in the middle to impersonate a TLS peer via a certificate that carries a partial-label wildcard. try_match_wildcard/4 in src/ssl_verify_hostname.erl anchors only the text before and after the * of an identifier such as f*.example.net, so the wildcard also consumes dots and the certificate is accepted for f.evil.example.net. RFC 6125 confines a wildcard to the left-most label. The same matcher lets *.168.1.1 match the IP literal 192.168.1.1. Whole-label wildcards are matched correctly.
Erlang/OTP 20.0 and later check the hostname in ssl before a user verify_fun sees valid_peer, so a client that keeps server_name_indication set rejects the mismatch regardless. Exposed are clients that disable SNI, servers that verify client certificate hostnames with this library, and direct callers of verify_cert_hostname/2.
This issue affects ssl_verify_fun: from 1.0.1 before 1.1.8.
Technical POC Analysis
CWE-297: Improper Validation of Certificate with Host Mismatch.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A critical hostname verification flaw in the Erlang library ssl_verify_fun (versions 1.0.1-1.1.7) allows man-in-the-middle attackers to impersonate trusted peers using a crafted wildcard certificate. This affects Erlang-based applications where ssl_verify_fun is the sole hostname check, such as TLS servers validating client certs or clients with SNI disabled, potentially enabling credential theft or data breach.
Apply vendor patch.
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.
Erlang/OTP SSH server allows unauthenticated remote code execution by exploiting a flaw in SSH protocol message handling
The Erlang otp TLS server answers with different TLS alerts to different error types in the RSA PKCS #1 1.5 padding. Rat
The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remot
Rebar3 versions 3.0.0-beta.3 to 3.13.2 are vulnerable to OS command injection via URL parameter of dependency specificat
Multiple CRLF injection vulnerabilities in the FTP module in Erlang/OTP R15B03 allow context-dependent attackers to inje
A local privilege escalation vulnerability was discovered in Erlang/OTP prior to version 23.2.3. Rated high severity (CV
An issue was discovered in Erlang/OTP 18.x. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitab
In Erlang/OTP before 23.3.4.15, 24.x before 24.3.4.2, and 25.x before 25.0.2, there is a Client Authentication Bypass in
Erlang/OTP's ssl application in affected releases (OTP 22.2 through the fixed 27.3.4.18, 28.5.0.7 and 29.1.1) will compl
RabbitMQ brokers that use the OAuth2 plugin can silently fall back to disabled TLS certificate verification when no CA b
TLS client-authentication bypass in the RabbitMQ trust-store plugin lets a remote unauthenticated attacker whose forged
An on-path attacker can force an Erlang/OTP TLS 1.2 or DTLS client to accept an anonymous cipher suite not offered by th
EUVD-2026-114450
NVD
CVE.org
EPSS
GitHub
Exploit-DB