CRITICAL🇬🇧 English

CVE-2026-55953

Erlang/OTP TLS 1.2/DTLS: brak weryfikacji cipher suite — atak MITM

CVSS 9.1v4.0pub. 2026-07-27upd. 2026-08-10

Klient TLS 1.2 (i wcześniejszych wersji) oraz DTLS w bibliotece Erlang/OTP nie sprawdza, czy cipher suite wybrany przez serwer w komunikacie ServerHello został wcześniej zaproponowany przez klienta w ClientHello. Umożliwia to atakującemu znajdującemu się na ścieżce sieciowej (on-path) wymuszenie anonimowego wymiany kluczy, całkowite ominięcie weryfikacji certyfikatu i przechwycenie całego ruchu aplikacji.

Pokaż oryginał (EN)

The Erlang/OTP ssl TLS 1.2 (and earlier) and DTLS client does not verify that the cipher suite selected by the server in ServerHello was among the suites offered by the client in ClientHello. The client-side tls_handshake:hello/5 handler validates the negotiated protocol version and the downgrade sentinel but hands the server-chosen suite directly to ssl_handshake:handle_server_hello_extensions/9, which installs it without a membership check. The TLS 1.3 client path performs this check (per RFC 8446), so it is not affected. An on-path attacker between the client and the intended server can respond with a ServerHello selecting an anonymous key exchange suite such as TLS_DH_anon_* or TLS_ECDH_anon_* that the client never offered. Anonymous suites do not require the server to present a certificate, so the entire verify_peer and cacerts configuration is bypassed: the attacker completes the handshake with its own ephemeral parameters, no certificate is validated, no hostname is checked, and ssl:connect returns {ok, Socket}. All subsequent application traffic is readable and modifiable by the attacker. This issue affects OTP from OTP R13B03 before OTP 27.3.4.15, from OTP 28.0 before OTP 28.5.0.4, and from OTP 29.0 before OTP 29.0.4, corresponding to ssl from 3.10.7 before 11.2.12.11, from 11.3 before 11.6.0.4, and from 11.7 before 11.7.4. Whether OTP before OTP R13B03, corresponding to ssl before 3.10.7, is affected is unknown.

🤖 Analiza AI
Jak działa

Procedura obsługi uzgadniania TLS po stronie klienta (`tls_handshake:hello/5`) sprawdza wynegocjowaną wersję protokołu oraz sentinel degradacji wersji, lecz przekazuje wybrany przez serwer cipher suite bezpośrednio do funkcji `ssl_handshake:handle_server_hello_extensions/9`, która instaluje go bez weryfikacji przynależności do listy oferowanej przez klienta. Atakujący ulokowany między klientem a serwerem może odpowiedzieć komunikatem ServerHello wskazującym anonimowy cipher suite (np. `TLS_DH_anon_*` lub `TLS_ECDH_anon_*`), którego klient nigdy nie zaproponował. Anonimowe cipher suite nie wymagają od serwera prezentacji certyfikatu, przez co cała konfiguracja `verify_peer` i `cacerts` zostaje pominięta, a uzgadnianie kończy się sukcesem z komunikatem `ssl:connect` zwracającym `{ok, Socket}`. Ścieżka kodu obsługująca TLS 1.3 wykonuje tę weryfikację prawidłowo (zgodnie z RFC 8446) i nie jest podatna.

Skutki

Atakujący on-path może przeprowadzić atak man-in-the-middle: odczytać i modyfikować cały ruch aplikacji przesyłany przez rzekomo bezpieczne połączenie TLS, omijając całkowicie weryfikację tożsamości serwera (certyfikat, nazwa hosta).

Mitygacja

Należy zaktualizować Erlang/OTP do wersji OTP 27.3.4.15, OTP 28.5.0.4 lub OTP 29.0.4 (odpowiednio ssl 11.2.12.11, 11.6.0.4 lub 11.7.4). Dostępne są commity naprawcze w repozytorium GitHub projektu Erlang/OTP. Do czasu aktualizacji można ograniczyć ryzyko, wymuszając użycie TLS 1.3 tam, gdzie jest to możliwe.

Kogo dotyczy

Erlang/OTP od wersji R13B03 do OTP 27.3.4.15 (biblioteka ssl 3.10.7–11.2.12.11), OTP 28.0–28.5.0.4 (ssl 11.3–11.6.0.4) oraz OTP 29.0–29.0.4 (ssl 11.7–11.7.4). Dotyczy klientów TLS 1.2 i wcześniejszych oraz DTLS; TLS 1.3 nie jest podatny. Status wersji OTP starszych niż R13B03 (ssl < 3.10.7) jest nieznany.

Uwagi

Podatność sklasyfikowana jako CWE-757 (Selection of Less-Secure Algorithm During Negotiation). Podatność dotyczy wyłącznie roli klienta TLS/DTLS — implementacja serwera nie jest zagrożona. Dla wersji OTP starszych niż R13B03 status podatności pozostaje nieznany według opisu producenta.

CVSS Vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
  • Erlang Erlang\/otp

    APP
    Erlang
    17.0 – 27.3.4.15 (bez)28.0 – 28.5.0.4 (bez)29.0 – 29.0.4 (bez)
  • Erlang Erlang\/ssl

    APP
    Erlang
    5.3.4 – 11.2.12.11 (bez)11.3 – 11.6.0.4 (bez)11.7 – 11.7.4 (bez)
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
CWE
Referencje

Powiązane podatności

CVE-2025-32433CRITICAL10.0⚠ KEVPL ✓ten sam produkt

Erlang/OTP SSH — nieuwierzytelniony RCE (CVSS 10.0)

CVE-2022-37026CRITICAL9.8PL ✓ten sam produkt

Erlang/OTP – obejście uwierzytelniania klienta w SSL/TLS/DTLS

CVE-2016-10253CRITICAL9.8PL ✓ten sam produkt

Heap overflow w generowaniu wyrażeń regularnych w Erlang/OTP 18.x

CVE-2026-54890HIGH8.2PL ✓ten sam produkt

Integer Underflow w dekoderze ETF Erlang/OTP — DoS przez abort węzła

CVE-2026-58227HIGH8.7PL ✓ten sam produkt

Erlang/OTP TLS/DTLS: nieskończona rekurencja przy cross-signed certyfikatach (DoS)