#1151684 erlang: CVE-2026-94200 CVE-2026-96596 CVE-2026-105236

Package:
src:erlang
Source:
src:erlang
Submitter:
Salvatore Bonaccorso
Date:
2026-10-23 03:11:02 UTC
Severity:
normal
Tags:
#1151684#5
Date:
2026-10-23 03:09:01 UTC
From:
To:
Hi,

The following vulnerabilities were published for erlang.

CVE-2026-94200[0]:
| Improper Validation of Consistency within Input vulnerability in
| Erlang OTP ssl (tls_handshake_1_3, ssl_handshake and
| tls_client_ticket_store modules) allows a malicious TLS 1.3 server
| to cause a denial of service of the ssl application on the client
| node.  The TLS 1.3 client decodes the extensions of a
| NewSessionTicket message as if they came from EncryptedExtensions.
| It therefore accepts a 0-length early_data extension, a form that is
| only valid in ClientHello and EncryptedExtensions. With
| {session_tickets, auto}, the client stores the ticket in the node-
| global tls_client_ticket_store. On the next automatic resumption,
| tls_handshake_1_3:get_max_early_data/1 crashes the store with a
| case_clause. Repeated crashes can exceed the restart intensity of
| the ssl supervisors, which use the rest_for_one strategy, and take
| down ssl for all connections on the node.  This issue affects OTP
| from OTP 23.3 before OTP 27.3.4.19, OTP 28.5.0.8, and OTP 29.1.2,
| corresponding to ssl from 10.3 before 11.2.12.14, 11.6.0.7, and
| 11.7.8.


CVE-2026-96596[1]:
| Loop with Unreachable Exit Condition ('Infinite Loop') vulnerability
| in Erlang OTP stdlib (erl_tar module), hexpm hex_core (hex_erl_tar
| module), hexpm hex (mix_hex_erl_tar module) and erlang rebar3
| (r3_hex_erl_tar module) allows an attacker who supplies a tar
| archive to cause a denial of service via a crafted GNU sparse
| member.  When erl_tar:extract/1,2 writes a member to disk,
| erl_tar:stream_to_file_loop/3 reads it in chunks of 65536 bytes by
| default. For a GNU sparse member whose sparse map ends before its
| real size, erl_tar:do_sparse_read/3 matches its trailing-hole clause
| before its zero-length clause. After the chunk is used up, the
| trailing-hole clause reads zero bytes, does not advance the
| position, and recurses forever. A 2048-byte archive keeps the
| extracting process and one scheduler busy until the process is
| killed. The {max_size, N} option prevents this only when N is below
| the real size of the member. Extraction with the memory option is
| not affected.  hex_core ships its own copy of erl_tar as
| hex_erl_tar, and Hex and rebar3 ship hex_core with prefixed module
| names (mix_hex_erl_tar and r3_hex_erl_tar). These copies contain the
| same code and do not call stdlib's erl_tar, so they are affected on
| any OTP version. OTP 28 is not affected, but an application running
| on OTP 28 is affected if it extracts archives through an affected
| version of hex_core, Hex or rebar3.  This issue affects OTP from
| OTP 29.0 before OTP 29.1.2, corresponding to rebar3 from 3.27.1
| before 3.28.0, and stdlib from 8.0 before 8.1.1, and hex from 2.4.2
| before 2.5.3; hex_core: from 0.14.0 before 0.20.1.


CVE-2026-105236[2]:
| Improper Certificate Validation vulnerability in the ssl application
| in Erlang/OTP allows a client that holds a certificate trusted by
| one SNI virtual host to authenticate to a second SNI virtual host on
| the same listener by resuming its TLS 1.2 session there.  A server
| that serves several SNI names from one listen socket through sni_fun
| or sni_hosts keeps one pre-TLS 1.3 session cache per listener and
| does not bind a cached session to the SNI name or client trust
| policy that established it. When an SNI option set switches to
| verify_peer without naming reuse_sessions,
| ssl_config:update_options/3 inherits the base listener's
| reuse_sessions value of true, so the default that disables reuse for
| client-authenticating servers does not apply. On an abbreviated
| handshake ssl_session:is_resumable/4 checks only that the cached
| session uses one of the current server certificates and carries some
| peer certificate, and never revalidates that certificate against the
| CA selected for the requested name. The names must share a server
| certificate, which is common with wildcard or multi-SAN
| certificates. TLS 1.3 does not use this cache and is not affected.
| This issue affects OTP from OTP 18.0 before OTP 27.3.4.19,
| OTP 28.5.0.8, and OTP 29.1.2, corresponding to ssl from 7.0 before
| 11.2.12.14, 11.6.0.7, and 11.7.8.


If you fix the vulnerabilities please also make sure to include the
CVE (Common Vulnerabilities & Exposures) ids in your changelog entry.

For further information see:

[0] https://security-tracker.debian.org/tracker/CVE-2026-94200
https://www.cve.org/CVERecord?id=CVE-2026-94200
[1] https://security-tracker.debian.org/tracker/CVE-2026-96596
https://www.cve.org/CVERecord?id=CVE-2026-96596
[2] https://security-tracker.debian.org/tracker/CVE-2026-105236
https://www.cve.org/CVERecord?id=CVE-2026-105236

Please adjust the affected versions in the BTS as needed.

Regards,
Salvatore