Improper Certificate Validation vulnerability in Erlang OTP public_key (pubkey_cert and public_key modules) allows a DNS nameConstraints bypass via subject CommonName fallback in TLS hostname verification.
Two flaws combine to allow a subordinate CA whose DNS nameConstraints are restricted (e.g. permitted;DNS:allowed.example.com) to issue a leaf certificate that an OTP TLS client accepts as a valid identity for an out-of-scope hostname (e.g. victim.example.com):
First, pubkey_cert:validate_names/6 in lib/public_key/src/pubkey_cert.erl only checks SAN DNS entries against nameConstraints. Per RFC 5280, a permitted DNS subtree only restricts certificates that contain a DNS-typed name. A leaf with no subjectAltName therefore trivially satisfies any permitted;DNS:... constraint regardless of its subject commonName.
Second, public_key:pkix_verify_hostname/3 in lib/public_key/src/public_key.erl falls back to the subject commonName when no subjectAltName is present, extracting id-at-commonName attributes as presented IDs and matching them against the reference hostname. The strict pkix_verify_hostname_match_fun(https) matcher does not suppress this fallback.
The result is that path validation accepts a CN-only leaf under a DNS-constrained intermediate (no SAN means the nameConstraints are not triggered), and hostname verification then accepts it via the CN fallback. The bypass is reachable from stock ssl:connect with verify_peer, a trusted CA, SNI, and the canonical strict https hostname matcher.
This issue affects OTP from OTP 19.3 before OTP 29.0.1, OTP 28.5.0.1, OTP 27.3.4.12 and OTP 26.2.5.21, corresponding to public_key from 1.4 before 1.21.1, 1.20.3.1, 1.17.1.3 and 1.15.1.7.
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade erlang | Aug 26, 2026 | Aug 26, 2026 |
| Freebsd | — | Upgrade erlang-runtime28Upgrade erlangUpgrade erlang-runtime27Upgrade erlang-runtime29 | Jun 15, 2026 | May 28, 2026 |
| Ubuntu | — | Upgrade erlang-gs (Ubuntu Pro)Upgrade erlang-reltoolUpgrade erlang-syntax-toolsUpgrade erlang-inets (Ubuntu Pro)Upgrade erlang-runtime-tools (Ubuntu Pro)Upgrade erlang-eldapUpgrade erlang-eunit (Ubuntu Pro)Upgrade erlang-toolbar (Ubuntu Pro)Upgrade erlang-modeUpgrade erlang-os-monUpgrade erlangUpgrade erlang-et (Ubuntu Pro)Upgrade erlang-baseUpgrade erlang-nox (Ubuntu Pro)Upgrade erlang-etUpgrade erlang-tv (Ubuntu Pro)Upgrade erlang-common-test (Ubuntu Pro)Upgrade erlang-ssl (Ubuntu Pro)Upgrade erlang-tools (Ubuntu Pro)Upgrade erlang-webtool (Ubuntu Pro)Upgrade erlang-odbc (Ubuntu Pro)Upgrade erlang-public-key (Ubuntu Pro)Upgrade erlang-x11Upgrade erlang-runtime-toolsUpgrade erlang-mnesia (Ubuntu Pro)Upgrade erlang (Ubuntu Pro)Upgrade erlang-megacoUpgrade erlang-tftp (Ubuntu Pro)Upgrade erlang-snmpUpgrade erlang-pman (Ubuntu Pro)Upgrade erlang-base (Ubuntu Pro)Upgrade erlang-observerUpgrade erlang-sslUpgrade erlang-dialyzer (Ubuntu Pro)Upgrade erlang-eldap (Ubuntu Pro)Upgrade erlang-diameter (Ubuntu Pro)Upgrade erlang-src (Ubuntu Pro)Upgrade erlang-test-server (Ubuntu Pro)Upgrade erlang-cryptoUpgrade erlang-mnesiaUpgrade erlang-manpagesUpgrade erlang-observer (Ubuntu Pro)Upgrade erlang-srcUpgrade erlang-inetsUpgrade erlang-common-testUpgrade erlang-wx (Ubuntu Pro)Upgrade erlang-ftpUpgrade erlang-percept (Ubuntu Pro)Upgrade erlang-examplesUpgrade erlang-debuggerUpgrade erlang-ic-java (Ubuntu Pro)Upgrade erlang-asn1 (Ubuntu Pro)Upgrade erlang-megaco (Ubuntu Pro)Upgrade erlang-doc (Ubuntu Pro)Upgrade erlang-sshUpgrade erlang-snmp (Ubuntu Pro)Upgrade erlang-jinterfaceUpgrade erlang-eunitUpgrade erlang-edocUpgrade erlang-typer (Ubuntu Pro)Upgrade erlang-jinterface (Ubuntu Pro)Upgrade erlang-noxUpgrade erlang-wxUpgrade erlang-tftpUpgrade erlang-dialyzerUpgrade erlang-syntax-tools (Ubuntu Pro)Upgrade erlang-ssh (Ubuntu Pro)Upgrade erlang-diameterUpgrade erlang-parsetools (Ubuntu Pro)Upgrade erlang-corba (Ubuntu Pro)Upgrade erlang-toolsUpgrade erlang-edoc (Ubuntu Pro)Upgrade erlang-docUpgrade erlang-x11 (Ubuntu Pro)Upgrade erlang-debugger (Ubuntu Pro)Upgrade erlang-examples (Ubuntu Pro)Upgrade erlang-odbcUpgrade erlang-crypto (Ubuntu Pro)Upgrade erlang-reltool (Ubuntu Pro)Upgrade erlang-manpages (Ubuntu Pro)Upgrade erlang-ic (Ubuntu Pro)Upgrade erlang-ftp (Ubuntu Pro)Upgrade erlang-public-keyUpgrade erlang-erl-docgenUpgrade erlang-parsetoolsUpgrade erlang-xmerlUpgrade erlang-base-hipe (Ubuntu Pro)Upgrade erlang-mode (Ubuntu Pro)Upgrade erlang-dev (Ubuntu Pro)Upgrade erlang-appmon (Ubuntu Pro)Upgrade erlang-asn1Upgrade erlang-devUpgrade erlang-xmerl (Ubuntu Pro)Upgrade erlang-erl-docgen (Ubuntu Pro)Upgrade erlang-os-mon (Ubuntu Pro) | Oct 12, 2026 | Oct 8, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jun 22, 2026 | May 27, 2026 |
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub