Action not permitted
Modal body text goes here.
Modal Title
Modal Body
OESA-2026-3043 (CVE-2026-48855)
Vulnerability from osv_openeuler – Published: 2026-07-19 11:11 – Updated: 2026-08-06 11:11 – Source websiteErlang is a general-purpose programming language and runtime environment. Erlang has built-in support for concurrency, distribution and fault tolerance. Erlang is used in several large telecommunication systems from Ericsson.
Security Fix(es):
Exposure of Sensitive Information to an Unauthorized Actor vulnerability in Erlang OTP ssh (ssh_sftpd module) allows File Discovery.
The SSH_FXP_READLINK handler in ssh_sftpd sends the raw result of file:read_link/2 to the client without calling chroot_filename/2 to strip the backend root prefix. An authenticated SFTP client can create a symlink inside the chroot pointing to /; ssh_sftpd resolves the target to the absolute backend root and stores it on disk. Reading the symlink back via SSH_FXP_READLINK returns that absolute path, for example /data/sftp, instead of the chrooted value /.
The information disclosed is the absolute filesystem path of the SFTP root directory and of any symlink targets within it. No file contents, credentials, or access to paths outside the root directory are obtainable through this issue alone.
This vulnerability is associated with program files lib/ssh/src/ssh_sftpd.erl.
This issue affects OTP from OTP 17.0 before 29.0.2, 28.5.0.2 and 27.3.4.13 corresponding to ssh from 3.0.1 before 6.0.1, 5.5.2.1 and 5.2.11.8.(CVE-2026-48855)
Sensitive Data Exposure vulnerability in Erlang OTP inets (httpc_response module) allows Retrieve Embedded Sensitive Data.
The httpc client forwards the Authorization and Proxy-Authorization request headers to redirect targets without checking whether the redirect crosses an origin boundary. httpc_response:redirect/2 constructs the redirected request by updating only the host field of the header record; all other fields (including authorization and proxy_authorization) are copied verbatim. The redirect target host is never compared against the original host.
autoredirect defaults to true, so this affects all httpc callers that do not explicitly disable automatic redirects.
An attacker who controls a server that the victim contacts via httpc can issue a cross-origin 3xx redirect to a server they also control. The Authorization header (including Basic credentials derived from URL userinfo via httpc_request:handle_user_info/2) is forwarded to the redirect target, allowing credential theft. The same applies to the Proxy-Authorization header.
This vulnerability is associated with program files lib/inets/src/http_client/httpc_response.erl.
This issue affects OTP from 17.0 before 29.0.2, 28.5.0.2 and 27.3.4.13 corresponding to inets from 5.10 before 9.7.1, 9.6.2.2 and 9.3.2.6.(CVE-2026-48856)
Server-Side Request Forgery (SSRF) vulnerability in Erlang/OTP ftp (ftp_internal module) allows FTP bounce attacks and SSRF via an unvalidated PASV response IP address.
The ftp_internal:handle_ctrl_result/2 PASV handler (mode=passive, ipfamily=inet, ftp_extension=false) extracts the IP address from the server's 227 response and passes it directly to gen_tcp:connect/4 without validating it against the control connection peer address. The adjacent EPSV handlers correctly call peername(CSock) to derive the IP from the control connection, but the PASV handler does not. A malicious or compromised FTP server can redirect the client's data connection to an arbitrary internal host and port. On read operations (ftp:ls/1,2, ftp:nlist/1,2, ftp:recv/2,3), data from the redirected target is returned to the caller. On write operations (ftp:send/2,3, ftp:append/2,3), file content is sent to the redirected target. This enables SSRF against internal hosts, cloud metadata endpoints, and FTP bounce attacks against third-party hosts.
The vulnerable path is the default configuration (mode=passive, ipfamily=inet, ftp_extension=false). RFC 2577 section 3 explicitly recommends validating the PASV response IP against the control connection peer.
The ftp application is deprecated and scheduled for removal in OTP-30.
This vulnerability is associated with program files lib/inets/src/ftp/ftp_internal.erl (inets 5.10.4 through 6.5, OTP 17.4 through 20.3) and lib/ftp/src/ftp_internal.erl (ftp 1.0 and later, OTP 21.0 and later).
This issue affects OTP from OTP 17.4 before 29.0.2, 28.5.0.2 and 27.3.4.13 corresponding to inets from 5.10.4 before 7.0 and ftp from 1.0 before 1.2.6, 1.2.4.1 and 1.2.3.1.(CVE-2026-48858)
Stack-based Buffer Overflow vulnerability in Erlang OTP erts (inet_drv) allows an unauthenticated remote attacker to crash the BEAM VM by sending a crafted SCTP ERROR chunk.
The sctp_parse_error_chunk function in erts/emulator/drivers/common/inet_drv.c parses SCTP ERROR chunks and writes cause codes into a fixed-size stack-allocated ErlDrvTermData spec[] array without checking bounds. A remote attacker who has established an SCTP association to a listening port can send a single crafted SCTP ERROR chunk containing enough cause codes to overflow the stack buffer, crashing the VM. The attacker can only write 16-bit values interleaved with a fixed tag, so the overflow does not provide a controlled return address, limiting exploitation to Denial of Service.
A crafted SCTP ERROR chunk may also leak bits and pieces of Erlang VM memory into the received error packet observed by the Erlang process. Such data is already readable by the user running the Erlang VM, so the disclosure scope is limited.
This issue affects OTP from OTP 17.0 before 27.3.4.13, 28.5.0.2 and 29.0.2, corresponding to erts from 6.0 before 15.2.7.9, 16.4.0.2 and 17.0.2.(CVE-2026-49759)
Stack-based Buffer Overflow vulnerability in Erlang OTP (erl_interface) allows Stack-based Buffer Overflow.
This vulnerability is associated with program file lib/erl_interface/src/misc/ei_printterm.c and program routine ei_s_print_term.
The C function ei_s_print_term uses an internal 2000-character stack buffer to format terms. When called with an encoded Erlang term containing a very large integer (encoded representation exceeding 2000 characters), the buffer overflows. The overflow bytes are restricted to the ASCII values of 0-9 and A-F, which limits exploitation to Denial of Service.
The companion function ei_print_term, which prints directly to a FILE instead of a memory buffer, does not contain this bug.
This issue affects OTP from OTP 17.0 before 27.3.4.13, 28.5.0.2 and 29.0.2, corresponding to erl_interface from 3.7.16 before 5.5.2.1, 5.7.0.1 and 5.8.1.(CVE-2026-49760)
Observable Response Discrepancy vulnerability in Erlang OTP ssh (ssh_sftpd module) allows an authenticated SFTP user to enumerate the existence of files and directories outside the configured root directory.
The SSH_FXP_REALPATH handler in ssh_sftpd calls relate_file_name/3 with Canonicalize=false, unlike every other SFTP operation handler. This allows .. components in the requested path to bypass the is_within_root/2 check without being resolved. The un-canonicalized path then enters resolve_symlinks/2, which walks up the directory tree above the configured root and issues read_link() syscalls on arbitrary filesystem paths.
An authenticated SFTP client can exploit this by sending a REALPATH request with a crafted traversal path. The server response differs depending on whether the target path exists on the host filesystem (SSH_FXP_NAME when the path resolves successfully, SSH_FX_NO_SUCH_FILE when it does not). This creates a path-existence oracle that an attacker can use to enumerate the filesystem structure outside the configured root, including the existence of sensitive files, directories, and mount points.
The vulnerability leaks only the existence of paths. No file contents, credentials, or write access are obtainable through this issue alone. The information gained may assist further attacks when combined with other vulnerabilities.
This vulnerability is associated with program files lib/ssh/src/ssh_sftpd.erl and program routine ssh_sftpd:handle_op/4.
This issue affects OTP from OTP 17.0 until OTP 29.0.3, 28.5.0.3, and 27.3.4.14 corresponding to ssh from 3.0.1 until 6.0.2, 5.5.2.2, and 5.2.11.9.(CVE-2026-53422)
Loop with Unreachable Exit Condition ('Infinite Loop') vulnerability in Erlang OTP ssh (ssh_sftpd module) allows an authenticated SFTP user to render an SFTP channel permanently unresponsive.
The handle_data/4 function in ssh_sftpd contains a catch-all clause that accepts channel data of any type. When channel data with a non-zero type code (SSH_MSG_CHANNEL_EXTENDED_DATA) arrives with an empty pending buffer and a payload at or below the SFTP packet size limit, the clause tail-calls itself with identical arguments, creating an infinite loop.
The SFTP protocol operates exclusively on normal channel data (type 0). Extended data (non-zero type) is meaningless for SFTP and is never sent by conforming clients. However, the SSH protocol permits any channel participant to send extended data on an open channel, so an authenticated SFTP client can trigger the loop by sending SSH_MSG_CHANNEL_EXTENDED_DATA with any data_type_code and any non-empty payload at or below the size limit.
The targeted ssh_sftpd process enters an infinite tail-recursive loop. It never processes another message, its message queue grows without bound, and it can only be stopped by killing the process. BEAM's reduction-based scheduler preemption continues to function, so other processes on the node are not starved, but each stuck channel process consumes its full CPU time share continuously and accumulates unbounded message queue memory. Opening many channels amplifies the CPU and memory impact.
Erlang/OTP SSH configurations using the default max_channels setting (infinity) allow an authenticated user to open unlimited channels per connection, amplifying the attack without requiring multiple TCP connections or authentications.
No file contents, credentials, or write access are obtainable through this issue. The impact is limited to denial of service on targeted SFTP channels, with secondary CPU degradation and memory growth.
This vulnerability is associated with program file lib/ssh/src/ssh_sftpd.erl and program routine ssh_sftpd:handle_data/4.
This issue affects OTP from OTP 17.0 until OTP 29.0.3, 28.5.0.3, and 27.3.4.14 corresponding to ssh from 3.0.1 until 6.0.2, 5.5.2.2, and 5.2.11.9.(CVE-2026-54886)
Use of Default Cryptographic Key vulnerability in Erlang/OTP ssl (DTLS server) allows predictable DTLS cookie computation during the startup window, enabling source address verification bypass.
On DTLS server startup, dtls_server_connection:initial_hello/3 initializes previous_cookie_secret to the empty binary (<<>>) instead of a random value. Because HMAC with an empty key is deterministic, anyone who observes the plaintext ClientHello can compute dtls_handshake:cookie(<<>>, IP, Port, Hello) and forge a valid DTLS cookie before the first rotation of the cookie secret. The DTLS cookie (RFC 6347 §4.2.1) is a denial-of-service mitigation that prevents spoofed source IPs from forcing the server to allocate state and perform expensive cryptographic operations; it is not an authentication mechanism. During the window from server startup until the first secret rotation (0 to 15 seconds), an attacker who can observe the plaintext ClientHello can bypass the source address verification, enabling DTLS handshake amplification with spoofed source addresses.
This vulnerability is associated with program file lib/ssl/src/dtls_server_connection.erl and program routine dtls_server_connection:initial_hello/3.
This issue affects OTP from OTP 20.0 before 29.0.3, 28.5.0.3 and 27.3.4.14 corresponding to ssl from 8.2 before 11.7.3, 11.6.0.3 and 11.2.12.10.(CVE-2026-54887)
Improper Enforcement of Message Integrity During Transmission in a Communication Channel vulnerability in Erlang/OTP ssl (tls_gen_connection module) allows a network-positioned attacker to inject unauthenticated plaintext that the TLS client application later treats as authenticated server data.
The function tls_gen_connection:handle_protocol_record/3 rejects APPLICATION_DATA records that arrive in pre-handshake states when the TLS endpoint acts as a server, but does not apply the same check when the endpoint acts as a client. A network-positioned attacker can send plaintext APPLICATION_DATA records to the client during the handshake. The records are buffered and, once the handshake completes successfully, delivered to the application as if they were authenticated post-handshake data. The attacker cannot observe the client's response or steer the connection, so the impact is limited to blind injection of unauthenticated bytes. The injection window is wider for TLS versions prior to TLS 1.3 than for TLS 1.3.
This vulnerability is associated with program file lib/ssl/src/tls_gen_connection.erl.
This issue affects OTP from OTP 17.0 before 29.0.3, 28.5.0.3 and 27.3.4.14 corresponding to ssl from 5.3.4 before 11.7.3, 11.6.0.3 and 11.2.12.10. TLS 1.3 is affected starting with OTP 22.0, when TLS 1.3 support was added.(CVE-2026-54891)
The Erlang/OTP ssl application does not validate that the PSK identity list and binder list carried in a TLS 1.3 ClientHello pre-shared key extension have equal length before passing them to the session ticket handler. In tls_handshake_1_3:handle_pre_shared_key/3, an OfferedPreSharedKeys record with a mismatched number of identities and binders is forwarded directly to tls_server_session_ticket:use/4, which crashes the session ticket handler process.
An unauthenticated remote attacker can send a single crafted ClientHello to a TLS 1.3 server with session tickets enabled (stateful or stateless mode) and permanently disrupt session ticket handling on that listener. New TLS 1.3 handshakes complete but subsequently crash when the server attempts to issue a session ticket, effectively making TLS 1.3 unusable on the affected listener until the ssl application is restarted. TLS 1.2 connections are not affected.
This issue affects OTP from 22.2 before 29.0.3, 28.5.0.3 and 27.3.4.14 corresponding to ssl from 9.5 before 11.7.3, 11.6.0.3 and 11.2.12.10.(CVE-2026-55952)
{
"affected": [
{
"ecosystem_specific": {
"aarch64": [
"erlang-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-asn1-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-common_test-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-compiler-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-crypto-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-debugger-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-debuginfo-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-debugsource-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-dialyzer-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-diameter-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-edoc-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-eldap-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-erl_docgen-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-erl_interface-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-erts-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-et-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-eunit-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-examples-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-ftp-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-hipe-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-inets-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-jinterface-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-kernel-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-megaco-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-mnesia-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-observer-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-odbc-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-os_mon-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-parsetools-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-public_key-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-reltool-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-runtime_tools-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-sasl-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-snmp-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-ssh-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-ssl-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-stdlib-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-syntax_tools-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-tftp-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-tools-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-wx-23.3.4.9-11.oe2203sp4.aarch64.rpm",
"erlang-xmerl-23.3.4.9-11.oe2203sp4.aarch64.rpm"
],
"src": [
"erlang-23.3.4.9-11.oe2203sp4.src.rpm"
],
"x86_64": [
"erlang-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-asn1-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-common_test-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-compiler-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-crypto-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-debugger-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-debuginfo-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-debugsource-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-dialyzer-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-diameter-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-edoc-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-eldap-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-erl_docgen-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-erl_interface-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-erts-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-et-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-eunit-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-examples-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-ftp-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-hipe-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-inets-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-jinterface-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-kernel-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-megaco-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-mnesia-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-observer-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-odbc-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-os_mon-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-parsetools-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-public_key-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-reltool-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-runtime_tools-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-sasl-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-snmp-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-ssh-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-ssl-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-stdlib-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-syntax_tools-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-tftp-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-tools-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-wx-23.3.4.9-11.oe2203sp4.x86_64.rpm",
"erlang-xmerl-23.3.4.9-11.oe2203sp4.x86_64.rpm"
]
},
"package": {
"ecosystem": "openEuler:22.03-LTS-SP4",
"name": "erlang",
"purl": "pkg:rpm/openEuler/erlang\u0026distro=openEuler-22.03-LTS-SP4"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "23.3.4.9-11.oe2203sp4"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"database_specific": {
"severity": "High"
},
"details": "Erlang is a general-purpose programming language and runtime environment. Erlang has built-in support for concurrency, distribution and fault tolerance. Erlang is used in several large telecommunication systems from Ericsson.\r\n\r\nSecurity Fix(es):\n\nExposure of Sensitive Information to an Unauthorized Actor vulnerability in Erlang OTP ssh (ssh_sftpd module) allows File Discovery.\n\nThe SSH_FXP_READLINK handler in ssh_sftpd sends the raw result of file:read_link/2 to the client without calling chroot_filename/2 to strip the backend root prefix. An authenticated SFTP client can create a symlink inside the chroot pointing to /; ssh_sftpd resolves the target to the absolute backend root and stores it on disk. Reading the symlink back via SSH_FXP_READLINK returns that absolute path, for example /data/sftp, instead of the chrooted value /.\n\nThe information disclosed is the absolute filesystem path of the SFTP root directory and of any symlink targets within it. No file contents, credentials, or access to paths outside the root directory are obtainable through this issue alone.\n\nThis vulnerability is associated with program files lib/ssh/src/ssh_sftpd.erl.\n\nThis issue affects OTP from OTP 17.0 before 29.0.2, 28.5.0.2 and 27.3.4.13 corresponding to ssh from 3.0.1 before 6.0.1, 5.5.2.1 and 5.2.11.8.(CVE-2026-48855)\n\nSensitive Data Exposure vulnerability in Erlang OTP inets (httpc_response module) allows Retrieve Embedded Sensitive Data.\n\nThe httpc client forwards the Authorization and Proxy-Authorization request headers to redirect targets without checking whether the redirect crosses an origin boundary. httpc_response:redirect/2 constructs the redirected request by updating only the host field of the header record; all other fields (including authorization and proxy_authorization) are copied verbatim. The redirect target host is never compared against the original host.\n\nautoredirect defaults to true, so this affects all httpc callers that do not explicitly disable automatic redirects.\n\nAn attacker who controls a server that the victim contacts via httpc can issue a cross-origin 3xx redirect to a server they also control. The Authorization header (including Basic credentials derived from URL userinfo via httpc_request:handle_user_info/2) is forwarded to the redirect target, allowing credential theft. The same applies to the Proxy-Authorization header.\n\nThis vulnerability is associated with program files lib/inets/src/http_client/httpc_response.erl.\n\nThis issue affects OTP from 17.0 before 29.0.2, 28.5.0.2 and 27.3.4.13 corresponding to inets from 5.10 before 9.7.1, 9.6.2.2 and 9.3.2.6.(CVE-2026-48856)\n\nServer-Side Request Forgery (SSRF) vulnerability in Erlang/OTP ftp (ftp_internal module) allows FTP bounce attacks and SSRF via an unvalidated PASV response IP address.\n\nThe ftp_internal:handle_ctrl_result/2 PASV handler (mode=passive, ipfamily=inet, ftp_extension=false) extracts the IP address from the server\u0026apos;s 227 response and passes it directly to gen_tcp:connect/4 without validating it against the control connection peer address. The adjacent EPSV handlers correctly call peername(CSock) to derive the IP from the control connection, but the PASV handler does not. A malicious or compromised FTP server can redirect the client\u0026apos;s data connection to an arbitrary internal host and port. On read operations (ftp:ls/1,2, ftp:nlist/1,2, ftp:recv/2,3), data from the redirected target is returned to the caller. On write operations (ftp:send/2,3, ftp:append/2,3), file content is sent to the redirected target. This enables SSRF against internal hosts, cloud metadata endpoints, and FTP bounce attacks against third-party hosts.\n\nThe vulnerable path is the default configuration (mode=passive, ipfamily=inet, ftp_extension=false). RFC 2577 section 3 explicitly recommends validating the PASV response IP against the control connection peer.\n\nThe ftp application is deprecated and scheduled for removal in OTP-30.\n\nThis vulnerability is associated with program files lib/inets/src/ftp/ftp_internal.erl (inets 5.10.4 through 6.5, OTP 17.4 through 20.3) and lib/ftp/src/ftp_internal.erl (ftp 1.0 and later, OTP 21.0 and later).\n\nThis issue affects OTP from OTP 17.4 before 29.0.2, 28.5.0.2 and 27.3.4.13 corresponding to inets from 5.10.4 before 7.0 and ftp from 1.0 before 1.2.6, 1.2.4.1 and 1.2.3.1.(CVE-2026-48858)\n\nStack-based Buffer Overflow vulnerability in Erlang OTP erts (inet_drv) allows an unauthenticated remote attacker to crash the BEAM VM by sending a crafted SCTP ERROR chunk.\n\nThe sctp_parse_error_chunk function in erts/emulator/drivers/common/inet_drv.c parses SCTP ERROR chunks and writes cause codes into a fixed-size stack-allocated ErlDrvTermData spec[] array without checking bounds. A remote attacker who has established an SCTP association to a listening port can send a single crafted SCTP ERROR chunk containing enough cause codes to overflow the stack buffer, crashing the VM. The attacker can only write 16-bit values interleaved with a fixed tag, so the overflow does not provide a controlled return address, limiting exploitation to Denial of Service.\n\nA crafted SCTP ERROR chunk may also leak bits and pieces of Erlang VM memory into the received error packet observed by the Erlang process. Such data is already readable by the user running the Erlang VM, so the disclosure scope is limited.\n\nThis issue affects OTP from OTP 17.0 before 27.3.4.13, 28.5.0.2 and 29.0.2, corresponding to erts from 6.0 before 15.2.7.9, 16.4.0.2 and 17.0.2.(CVE-2026-49759)\n\nStack-based Buffer Overflow vulnerability in Erlang OTP (erl_interface) allows Stack-based Buffer Overflow.\n\nThis vulnerability is associated with program file lib/erl_interface/src/misc/ei_printterm.c and program routine ei_s_print_term.\n\nThe C function ei_s_print_term uses an internal 2000-character stack buffer to format terms. When called with an encoded Erlang term containing a very large integer (encoded representation exceeding 2000 characters), the buffer overflows. The overflow bytes are restricted to the ASCII values of 0-9 and A-F, which limits exploitation to Denial of Service.\n\nThe companion function ei_print_term, which prints directly to a FILE instead of a memory buffer, does not contain this bug.\n\nThis issue affects OTP from OTP 17.0 before 27.3.4.13, 28.5.0.2 and 29.0.2, corresponding to erl_interface from 3.7.16 before 5.5.2.1, 5.7.0.1 and 5.8.1.(CVE-2026-49760)\n\nObservable Response Discrepancy vulnerability in Erlang OTP ssh (ssh_sftpd module) allows an authenticated SFTP user to enumerate the existence of files and directories outside the configured root directory.\n\nThe SSH_FXP_REALPATH handler in ssh_sftpd calls relate_file_name/3 with Canonicalize=false, unlike every other SFTP operation handler. This allows .. components in the requested path to bypass the is_within_root/2 check without being resolved. The un-canonicalized path then enters resolve_symlinks/2, which walks up the directory tree above the configured root and issues read_link() syscalls on arbitrary filesystem paths.\n\nAn authenticated SFTP client can exploit this by sending a REALPATH request with a crafted traversal path. The server response differs depending on whether the target path exists on the host filesystem (SSH_FXP_NAME when the path resolves successfully, SSH_FX_NO_SUCH_FILE when it does not). This creates a path-existence oracle that an attacker can use to enumerate the filesystem structure outside the configured root, including the existence of sensitive files, directories, and mount points.\n\nThe vulnerability leaks only the existence of paths. No file contents, credentials, or write access are obtainable through this issue alone. The information gained may assist further attacks when combined with other vulnerabilities.\n\nThis vulnerability is associated with program files lib/ssh/src/ssh_sftpd.erl and program routine ssh_sftpd:handle_op/4.\n\nThis issue affects OTP from OTP 17.0 until OTP 29.0.3, 28.5.0.3, and 27.3.4.14 corresponding to ssh from 3.0.1 until 6.0.2, 5.5.2.2, and 5.2.11.9.(CVE-2026-53422)\n\nLoop with Unreachable Exit Condition (\u0026apos;Infinite Loop\u0026apos;) vulnerability in Erlang OTP ssh (ssh_sftpd module) allows an authenticated SFTP user to render an SFTP channel permanently unresponsive.\n\nThe handle_data/4 function in ssh_sftpd contains a catch-all clause that accepts channel data of any type. When channel data with a non-zero type code (SSH_MSG_CHANNEL_EXTENDED_DATA) arrives with an empty pending buffer and a payload at or below the SFTP packet size limit, the clause tail-calls itself with identical arguments, creating an infinite loop.\n\nThe SFTP protocol operates exclusively on normal channel data (type 0). Extended data (non-zero type) is meaningless for SFTP and is never sent by conforming clients. However, the SSH protocol permits any channel participant to send extended data on an open channel, so an authenticated SFTP client can trigger the loop by sending SSH_MSG_CHANNEL_EXTENDED_DATA with any data_type_code and any non-empty payload at or below the size limit.\n\nThe targeted ssh_sftpd process enters an infinite tail-recursive loop. It never processes another message, its message queue grows without bound, and it can only be stopped by killing the process. BEAM\u0026apos;s reduction-based scheduler preemption continues to function, so other processes on the node are not starved, but each stuck channel process consumes its full CPU time share continuously and accumulates unbounded message queue memory. Opening many channels amplifies the CPU and memory impact.\n\nErlang/OTP SSH configurations using the default max_channels setting (infinity) allow an authenticated user to open unlimited channels per connection, amplifying the attack without requiring multiple TCP connections or authentications.\n\nNo file contents, credentials, or write access are obtainable through this issue. The impact is limited to denial of service on targeted SFTP channels, with secondary CPU degradation and memory growth.\n\nThis vulnerability is associated with program file lib/ssh/src/ssh_sftpd.erl and program routine ssh_sftpd:handle_data/4.\n\nThis issue affects OTP from OTP 17.0 until OTP 29.0.3, 28.5.0.3, and 27.3.4.14 corresponding to ssh from 3.0.1 until 6.0.2, 5.5.2.2, and 5.2.11.9.(CVE-2026-54886)\n\nUse of Default Cryptographic Key vulnerability in Erlang/OTP ssl (DTLS server) allows predictable DTLS cookie computation during the startup window, enabling source address verification bypass.\n\nOn DTLS server startup, dtls_server_connection:initial_hello/3 initializes previous_cookie_secret to the empty binary (\u0026lt;\u0026lt;\u0026gt;\u0026gt;) instead of a random value. Because HMAC with an empty key is deterministic, anyone who observes the plaintext ClientHello can compute dtls_handshake:cookie(\u0026lt;\u0026lt;\u0026gt;\u0026gt;, IP, Port, Hello) and forge a valid DTLS cookie before the first rotation of the cookie secret. The DTLS cookie (RFC 6347 \u00a74.2.1) is a denial-of-service mitigation that prevents spoofed source IPs from forcing the server to allocate state and perform expensive cryptographic operations; it is not an authentication mechanism. During the window from server startup until the first secret rotation (0 to 15 seconds), an attacker who can observe the plaintext ClientHello can bypass the source address verification, enabling DTLS handshake amplification with spoofed source addresses.\n\nThis vulnerability is associated with program file lib/ssl/src/dtls_server_connection.erl and program routine dtls_server_connection:initial_hello/3.\n\nThis issue affects OTP from OTP 20.0 before 29.0.3, 28.5.0.3 and 27.3.4.14 corresponding to ssl from 8.2 before 11.7.3, 11.6.0.3 and 11.2.12.10.(CVE-2026-54887)\n\nImproper Enforcement of Message Integrity During Transmission in a Communication Channel vulnerability in Erlang/OTP ssl (tls_gen_connection module) allows a network-positioned attacker to inject unauthenticated plaintext that the TLS client application later treats as authenticated server data.\n\nThe function tls_gen_connection:handle_protocol_record/3 rejects APPLICATION_DATA records that arrive in pre-handshake states when the TLS endpoint acts as a server, but does not apply the same check when the endpoint acts as a client. A network-positioned attacker can send plaintext APPLICATION_DATA records to the client during the handshake. The records are buffered and, once the handshake completes successfully, delivered to the application as if they were authenticated post-handshake data. The attacker cannot observe the client\u0026apos;s response or steer the connection, so the impact is limited to blind injection of unauthenticated bytes. The injection window is wider for TLS versions prior to TLS 1.3 than for TLS 1.3.\n\nThis vulnerability is associated with program file lib/ssl/src/tls_gen_connection.erl.\n\nThis issue affects OTP from OTP 17.0 before 29.0.3, 28.5.0.3 and 27.3.4.14 corresponding to ssl from 5.3.4 before 11.7.3, 11.6.0.3 and 11.2.12.10. TLS 1.3 is affected starting with OTP 22.0, when TLS 1.3 support was added.(CVE-2026-54891)\n\nThe Erlang/OTP ssl application does not validate that the PSK identity list and binder list carried in a TLS 1.3 ClientHello pre-shared key extension have equal length before passing them to the session ticket handler. In tls_handshake_1_3:handle_pre_shared_key/3, an OfferedPreSharedKeys record with a mismatched number of identities and binders is forwarded directly to tls_server_session_ticket:use/4, which crashes the session ticket handler process.\n\nAn unauthenticated remote attacker can send a single crafted ClientHello to a TLS 1.3 server with session tickets enabled (stateful or stateless mode) and permanently disrupt session ticket handling on that listener. New TLS 1.3 handshakes complete but subsequently crash when the server attempts to issue a session ticket, effectively making TLS 1.3 unusable on the affected listener until the ssl application is restarted. TLS 1.2 connections are not affected.\n\nThis issue affects OTP from 22.2 before 29.0.3, 28.5.0.3 and 27.3.4.14 corresponding to ssl from 9.5 before 11.7.3, 11.6.0.3 and 11.2.12.10.(CVE-2026-55952)",
"id": "OESA-2026-3043",
"modified": "2026-08-06T11:11:56Z",
"published": "2026-07-19T11:11:56Z",
"references": [
{
"type": "ADVISORY",
"url": "https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-3043"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-48855"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-48856"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-48858"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-49759"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-49760"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-53422"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-54886"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-54887"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-54891"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-55952"
}
],
"schema_version": "1.7.2",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H",
"type": "CVSS_V3"
}
],
"summary": "erlang security update",
"upstream": [
"CVE-2026-48855",
"CVE-2026-48856",
"CVE-2026-48858",
"CVE-2026-49759",
"CVE-2026-49760",
"CVE-2026-53422",
"CVE-2026-54886",
"CVE-2026-54887",
"CVE-2026-54891",
"CVE-2026-55952"
]
}
CVE-2026-48855 (GCVE-0-2026-48855)
Vulnerability from cvelistv5 – Published: 2026-06-10 14:35 – Updated: 2026-09-24 20:35- CWE-200 - Exposure of Sensitive Information to an Unauthorized Actor
| URL | Tags |
|---|---|
| https://github.com/erlang/otp/security/advisories… | vendor-advisoryrelated |
| https://cna.erlef.org/cves/CVE-2026-48855.html | related |
| https://osv.dev/vulnerability/EEF-CVE-2026-48855 | related |
| https://www.erlang.org/doc/system/versions.html#o… | x_version-scheme |
| https://github.com/erlang/otp/commit/08225797f7ef… | related |
| https://github.com/erlang/otp/commit/8f4224a0d267… | patch |
| Vendor | Product | Version | |
|---|---|---|---|
| Erlang | OTP |
Affected:
17.0 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
3.0.1 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
08225797f7ef943d0c82a1d9dd6650d94ca2580d , < 8f4224a0d2676b0653d2c71a889a956e8c2c62d6
(git)
Unaffected: 8f4224a0d2676b0653d2c71a889a956e8c2c62d6 , < * (git) cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-48855",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-06-10T16:22:16.684743Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-06-10T16:22:24.746Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"ssh_sftpd"
],
"packageName": "otp",
"packageURL": "pkg:software-id/erlang.org/otp",
"product": "OTP",
"programFiles": [
"lib/ssh/src/ssh_sftpd.erl"
],
"programRoutines": [
{
"name": "ssh_sftpd:handle_op/4"
}
],
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "27.3.4.13",
"status": "unaffected"
},
{
"at": "28.5.0.2",
"status": "unaffected"
},
{
"at": "29.0.2",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "17.0",
"versionType": "otp"
}
]
},
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"ssh_sftpd"
],
"packageName": "ssh",
"packageURL": "pkg:otp/ssh?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
"product": "OTP",
"programFiles": [
"src/ssh_sftpd.erl"
],
"programRoutines": [
{
"name": "ssh_sftpd:handle_op/4"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "5.2.11.8",
"status": "unaffected"
},
{
"at": "5.5.2.1",
"status": "unaffected"
},
{
"at": "6.0.1",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "3.0.1",
"versionType": "otp"
}
]
},
{
"collectionURL": "https://github.com",
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"ssh_sftpd"
],
"packageName": "erlang/otp",
"packageURL": "pkg:github/erlang/otp",
"product": "OTP",
"programFiles": [
"lib/ssh/src/ssh_sftpd.erl"
],
"programRoutines": [
{
"name": "ssh_sftpd:handle_op/4"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"lessThan": "8f4224a0d2676b0653d2c71a889a956e8c2c62d6",
"status": "affected",
"version": "08225797f7ef943d0c82a1d9dd6650d94ca2580d",
"versionType": "git"
},
{
"lessThan": "*",
"status": "unaffected",
"version": "8f4224a0d2676b0653d2c71a889a956e8c2c62d6",
"versionType": "git"
}
]
}
],
"configurations": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eThe SFTP subsystem must be enabled on the SSH server and the \u003ccode\u003eroot\u003c/code\u003e option must be configured in the \u003ccode\u003essh_sftpd:subsystem_spec/1\u003c/code\u003e call. Deployments without the \u003ccode\u003eroot\u003c/code\u003e option are not affected.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "The SFTP subsystem must be enabled on the SSH server and the `root` option must be configured in the `ssh_sftpd:subsystem_spec/1` call. Deployments without the `root` option are not affected."
}
],
"value": "The SFTP subsystem must be enabled on the SSH server and the root option must be configured in the ssh_sftpd:subsystem_spec/1 call. Deployments without the root option are not affected."
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "27.3.4.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "28.5.0.2",
"versionStartIncluding": "28.0",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "29.0.2",
"versionStartIncluding": "29.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Jonatan M\u00e4nnchen / EEF"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Jonatan M\u00e4nnchen / EEF"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Micha\u0142 W\u0105sowski"
},
{
"lang": "en",
"type": "remediation reviewer",
"value": "Jakub Witczak"
}
],
"datePublic": "2026-06-10T14:35:49.000Z",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eExposure of Sensitive Information to an Unauthorized Actor vulnerability in Erlang OTP ssh (\u003ccode\u003essh_sftpd\u003c/code\u003e module) allows File Discovery.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eSSH_FXP_READLINK\u003c/code\u003e handler in \u003ccode\u003essh_sftpd\u003c/code\u003e sends the raw result of \u003ccode\u003efile:read_link/2\u003c/code\u003e to the client without calling \u003ccode\u003echroot_filename/2\u003c/code\u003e to strip the backend root prefix. An authenticated SFTP client can create a symlink inside the chroot pointing to \u003ccode\u003e/\u003c/code\u003e; \u003ccode\u003essh_sftpd\u003c/code\u003e resolves the target to the absolute backend root and stores it on disk. Reading the symlink back via \u003ccode\u003eSSH_FXP_READLINK\u003c/code\u003e returns that absolute path, for example \u003ccode\u003e/data/sftp\u003c/code\u003e, instead of the chrooted value \u003ccode\u003e/\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe information disclosed is the absolute filesystem path of the SFTP root directory and of any symlink targets within it. No file contents, credentials, or access to paths outside the root directory are obtainable through this issue alone.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is associated with program files \u003ccode\u003elib/ssh/src/ssh_sftpd.erl\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue affects OTP from OTP\u0026nbsp;17.0 before OTP\u0026nbsp;27.3.4.13, OTP\u0026nbsp;28.5.0.2, and OTP\u0026nbsp;29.0.2, corresponding to ssh from 3.0.1 before 5.2.11.8, 5.5.2.1, and 6.0.1. Whether OTP before OTP\u0026nbsp;17.0, corresponding to ssh before 3.0.1, is affected is unknown.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "Exposure of Sensitive Information to an Unauthorized Actor vulnerability in Erlang OTP ssh (`ssh_sftpd` module) allows File Discovery.\n\nThe `SSH_FXP_READLINK` handler in `ssh_sftpd` sends the raw result of `file:read_link/2` to the client without calling `chroot_filename/2` to strip the backend root prefix. An authenticated SFTP client can create a symlink inside the chroot pointing to `/`; `ssh_sftpd` resolves the target to the absolute backend root and stores it on disk. Reading the symlink back via `SSH_FXP_READLINK` returns that absolute path, for example `/data/sftp`, instead of the chrooted value `/`.\n\nThe information disclosed is the absolute filesystem path of the SFTP root directory and of any symlink targets within it. No file contents, credentials, or access to paths outside the root directory are obtainable through this issue alone.\n\nThis vulnerability is associated with program files `lib/ssh/src/ssh_sftpd.erl`.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to ssh from 3.0.1 before 5.2.11.8, 5.5.2.1, and 6.0.1. Whether OTP before OTP\u00a017.0, corresponding to ssh before 3.0.1, is affected is unknown."
}
],
"value": "Exposure of Sensitive Information to an Unauthorized Actor vulnerability in Erlang OTP ssh (ssh_sftpd module) allows File Discovery.\n\nThe SSH_FXP_READLINK handler in ssh_sftpd sends the raw result of file:read_link/2 to the client without calling chroot_filename/2 to strip the backend root prefix. An authenticated SFTP client can create a symlink inside the chroot pointing to /; ssh_sftpd resolves the target to the absolute backend root and stores it on disk. Reading the symlink back via SSH_FXP_READLINK returns that absolute path, for example /data/sftp, instead of the chrooted value /.\n\nThe information disclosed is the absolute filesystem path of the SFTP root directory and of any symlink targets within it. No file contents, credentials, or access to paths outside the root directory are obtainable through this issue alone.\n\nThis vulnerability is associated with program files lib/ssh/src/ssh_sftpd.erl.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to ssh from 3.0.1 before 5.2.11.8, 5.5.2.1, and 6.0.1. Whether OTP before OTP\u00a017.0, corresponding to ssh before 3.0.1, is affected is unknown."
}
],
"impacts": [
{
"capecId": "CAPEC-116",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-116 Excavation"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 2.3,
"baseSeverity": "LOW",
"privilegesRequired": "LOW",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "NONE",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-200",
"description": "CWE-200 Exposure of Sensitive Information to an Unauthorized Actor",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-24T20:35:33.970Z",
"orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"shortName": "EEF"
},
"references": [
{
"tags": [
"vendor-advisory",
"related"
],
"url": "https://github.com/erlang/otp/security/advisories/GHSA-pv7g-pjrq-x2fh"
},
{
"name": "EEF CNA record for CVE-2026-48855",
"tags": [
"related"
],
"url": "https://cna.erlef.org/cves/CVE-2026-48855.html"
},
{
"name": "OSV record EEF-CVE-2026-48855",
"tags": [
"related"
],
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-48855"
},
{
"name": "Erlang/OTP version ordering",
"tags": [
"x_version-scheme"
],
"url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
},
{
"name": "Introducing commit 0822579 in erlang/otp",
"tags": [
"related"
],
"url": "https://github.com/erlang/otp/commit/08225797f7ef943d0c82a1d9dd6650d94ca2580d"
},
{
"name": "Fix commit 8f4224a in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/8f4224a0d2676b0653d2c71a889a956e8c2c62d6"
}
],
"source": {
"discovery": "INTERNAL"
},
"title": "SFTP READLINK Leaks Absolute Backend Filesystem Path When Root Is Configured",
"workarounds": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cul\u003e\n\u003cli\u003eUse OS-level chroot to run the Erlang VM/SFTP server process in an isolated filesystem environment, eliminating reliance on the application-level \u003ccode\u003eroot\u003c/code\u003e option.\u003c/li\u003e\n\u003cli\u003eEnsure that the SFTP server port is not reachable from untrusted machines.\u003c/li\u003e\n\u003cli\u003eEnsure that no sensitive information (usernames, project names, mount topology) is inferrable from the absolute path of the configured root directory.\u003c/li\u003e\n\u003c/ul\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "* Use OS-level chroot to run the Erlang VM/SFTP server process in an isolated filesystem environment, eliminating reliance on the application-level `root` option.\n* Ensure that the SFTP server port is not reachable from untrusted machines.\n* Ensure that no sensitive information (usernames, project names, mount topology) is inferrable from the absolute path of the configured root directory."
}
],
"value": "* Use OS-level chroot to run the Erlang VM/SFTP server process in an isolated filesystem environment, eliminating reliance on the application-level root option.\n* Ensure that the SFTP server port is not reachable from untrusted machines.\n* Ensure that no sensitive information (usernames, project names, mount topology) is inferrable from the absolute path of the configured root directory."
}
]
}
},
"cveMetadata": {
"assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"assignerShortName": "EEF",
"cveId": "CVE-2026-48855",
"datePublished": "2026-06-10T14:35:49.683Z",
"dateReserved": "2026-05-25T20:44:10.697Z",
"dateUpdated": "2026-09-24T20:35:33.970Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-48856 (GCVE-0-2026-48856)
Vulnerability from cvelistv5 – Published: 2026-06-10 14:41 – Updated: 2026-10-15 10:50- CWE-601 - URL Redirection to Untrusted Site ('Open Redirect')
| URL | Tags |
|---|---|
| https://github.com/erlang/otp/security/advisories… | relatedvendor-advisory |
| https://cna.erlef.org/cves/CVE-2026-48856.html | related |
| https://osv.dev/vulnerability/EEF-CVE-2026-48856 | related |
| https://www.erlang.org/doc/system/versions.html#o… | x_version-scheme |
| https://github.com/erlang/otp/commit/f78fae929488… | patch |
| Vendor | Product | Version | |
|---|---|---|---|
| Erlang | OTP |
Affected:
17.0 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
5.10 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
84adefa331c4159d432d22840663c38f155cd4c1 , < f78fae9294886f95545a2212671282eda230def1
(git)
Unaffected: f78fae9294886f95545a2212671282eda230def1 , < * (git) cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-48856",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-06-10T16:23:52.053802Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-06-10T16:24:02.066Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"httpc_response"
],
"packageName": "otp",
"packageURL": "pkg:software-id/erlang.org/otp",
"product": "OTP",
"programFiles": [
"lib/inets/src/http_client/httpc_response.erl"
],
"programRoutines": [
{
"name": "httpc_response:redirect/2"
}
],
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "27.3.4.19",
"status": "unaffected"
},
{
"at": "28.5.0.8",
"status": "unaffected"
},
{
"at": "29.1.2",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "17.0",
"versionType": "otp"
}
]
},
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"httpc_response"
],
"packageName": "inets",
"packageURL": "pkg:otp/inets?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
"product": "OTP",
"programFiles": [
"src/http_client/httpc_response.erl"
],
"programRoutines": [
{
"name": "httpc_response:redirect/2"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "9.3.2.8",
"status": "unaffected"
},
{
"at": "9.6.2.4",
"status": "unaffected"
},
{
"at": "9.8.1",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "5.10",
"versionType": "otp"
}
]
},
{
"collectionURL": "https://github.com",
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"httpc_response"
],
"packageName": "erlang/otp",
"packageURL": "pkg:github/erlang/otp",
"product": "OTP",
"programFiles": [
"lib/inets/src/http_client/httpc_response.erl"
],
"programRoutines": [
{
"name": "httpc_response:redirect/2"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"lessThan": "f78fae9294886f95545a2212671282eda230def1",
"status": "affected",
"version": "84adefa331c4159d432d22840663c38f155cd4c1",
"versionType": "git"
},
{
"lessThan": "*",
"status": "unaffected",
"version": "f78fae9294886f95545a2212671282eda230def1",
"versionType": "git"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "27.3.4.19",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "28.5.0.8",
"versionStartIncluding": "28.0",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "29.1.2",
"versionStartIncluding": "29.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Jonatan M\u00e4nnchen / EEF"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Jonatan M\u00e4nnchen / EEF"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Konrad Pietrzak"
},
{
"lang": "en",
"type": "remediation reviewer",
"value": "Ingela Andin"
},
{
"lang": "en",
"type": "remediation reviewer",
"value": "Konrad Pietrzak"
}
],
"datePublic": "2026-06-10T14:41:51.000Z",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eSensitive Data Exposure vulnerability in Erlang OTP inets (\u003ccode\u003ehttpc_response\u003c/code\u003e module) allows Retrieve Embedded Sensitive Data.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ehttpc\u003c/code\u003e client forwards the \u003ccode\u003eAuthorization\u003c/code\u003e and \u003ccode\u003eProxy-Authorization\u003c/code\u003e request headers to redirect targets without checking whether the redirect crosses an origin boundary. \u003ccode\u003ehttpc_response:redirect/2\u003c/code\u003e constructs the redirected request by updating only the \u003ccode\u003ehost\u003c/code\u003e field of the header record; all other fields (including \u003ccode\u003eauthorization\u003c/code\u003e and \u003ccode\u003eproxy_authorization\u003c/code\u003e) are copied verbatim. The redirect target host is never compared against the original host.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eautoredirect\u003c/code\u003e defaults to \u003ccode\u003etrue\u003c/code\u003e, so this affects all \u003ccode\u003ehttpc\u003c/code\u003e callers that do not explicitly disable automatic redirects.\u003c/p\u003e\n\u003cp\u003eAn attacker who controls a server that the victim contacts via \u003ccode\u003ehttpc\u003c/code\u003e can issue a cross-origin 3xx redirect to a server they also control. The \u003ccode\u003eAuthorization\u003c/code\u003e header (including Basic credentials derived from URL userinfo via \u003ccode\u003ehttpc_request:handle_user_info/2\u003c/code\u003e) is forwarded to the redirect target, allowing credential theft. The same applies to the \u003ccode\u003eProxy-Authorization\u003c/code\u003e header.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is associated with program files \u003ccode\u003elib/inets/src/http_client/httpc_response.erl\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue affects OTP from OTP\u0026nbsp;17.0 before OTP\u0026nbsp;27.3.4.19, OTP\u0026nbsp;28.5.0.8, and OTP\u0026nbsp;29.1.2, corresponding to inets from 5.10 before 9.3.2.8, 9.6.2.4, and 9.8.1. Whether OTP before OTP\u0026nbsp;17.0, corresponding to inets before 5.10, is affected is unknown.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "Sensitive Data Exposure vulnerability in Erlang OTP inets (`httpc_response` module) allows Retrieve Embedded Sensitive Data.\n\nThe `httpc` client forwards the `Authorization` and `Proxy-Authorization` request headers to redirect targets without checking whether the redirect crosses an origin boundary. `httpc_response:redirect/2` constructs the redirected request by updating only the `host` field of the header record; all other fields (including `authorization` and `proxy_authorization`) are copied verbatim. The redirect target host is never compared against the original host.\n\n`autoredirect` defaults to `true`, so this affects all `httpc` callers that do not explicitly disable automatic redirects.\n\nAn attacker who controls a server that the victim contacts via `httpc` can issue a cross-origin 3xx redirect to a server they also control. The `Authorization` header (including Basic credentials derived from URL userinfo via `httpc_request:handle_user_info/2`) is forwarded to the redirect target, allowing credential theft. The same applies to the `Proxy-Authorization` header.\n\nThis vulnerability is associated with program files `lib/inets/src/http_client/httpc_response.erl`.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.19, OTP\u00a028.5.0.8, and OTP\u00a029.1.2, corresponding to inets from 5.10 before 9.3.2.8, 9.6.2.4, and 9.8.1. Whether OTP before OTP\u00a017.0, corresponding to inets before 5.10, is affected is unknown."
}
],
"value": "Sensitive Data Exposure vulnerability in Erlang OTP inets (httpc_response module) allows Retrieve Embedded Sensitive Data.\n\nThe httpc client forwards the Authorization and Proxy-Authorization request headers to redirect targets without checking whether the redirect crosses an origin boundary. httpc_response:redirect/2 constructs the redirected request by updating only the host field of the header record; all other fields (including authorization and proxy_authorization) are copied verbatim. The redirect target host is never compared against the original host.\n\nautoredirect defaults to true, so this affects all httpc callers that do not explicitly disable automatic redirects.\n\nAn attacker who controls a server that the victim contacts via httpc can issue a cross-origin 3xx redirect to a server they also control. The Authorization header (including Basic credentials derived from URL userinfo via httpc_request:handle_user_info/2) is forwarded to the redirect target, allowing credential theft. The same applies to the Proxy-Authorization header.\n\nThis vulnerability is associated with program files lib/inets/src/http_client/httpc_response.erl.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.19, OTP\u00a028.5.0.8, and OTP\u00a029.1.2, corresponding to inets from 5.10 before 9.3.2.8, 9.6.2.4, and 9.8.1. Whether OTP before OTP\u00a017.0, corresponding to inets before 5.10, is affected is unknown."
}
],
"impacts": [
{
"capecId": "CAPEC-37",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-37 Retrieve Embedded Sensitive Data"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 7.1,
"baseSeverity": "HIGH",
"privilegesRequired": "NONE",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "PASSIVE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "NONE",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-601",
"description": "CWE-601 URL Redirection to Untrusted Site (\u0027Open Redirect\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-15T10:50:06.903Z",
"orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"shortName": "EEF"
},
"references": [
{
"name": "GitHub Advisory",
"tags": [
"related",
"vendor-advisory"
],
"url": "https://github.com/erlang/otp/security/advisories/GHSA-m75x-4vwg-ggjh"
},
{
"name": "EEF CNA record for CVE-2026-48856",
"tags": [
"related"
],
"url": "https://cna.erlef.org/cves/CVE-2026-48856.html"
},
{
"name": "OSV record EEF-CVE-2026-48856",
"tags": [
"related"
],
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-48856"
},
{
"name": "Erlang/OTP version ordering",
"tags": [
"x_version-scheme"
],
"url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
},
{
"name": "Fix commit f78fae9 in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/f78fae9294886f95545a2212671282eda230def1"
}
],
"source": {
"discovery": "INTERNAL"
},
"title": "httpc leaks Authorization header to cross-origin redirect targets",
"workarounds": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003e{autoredirect, false}\u003c/code\u003e in the \u003ccode\u003ehttpc:request/4\u003c/code\u003e options and handle redirects manually, stripping the \u003ccode\u003eAuthorization\u003c/code\u003e header when the redirect crosses an origin boundary.\u003c/li\u003e\n\u003cli\u003eEnsure that \u003ccode\u003ehttpc\u003c/code\u003e is only used to contact trusted servers that will not issue cross-origin redirects.\u003c/li\u003e\n\u003c/ul\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "* Set `{autoredirect, false}` in the `httpc:request/4` options and handle redirects manually, stripping the `Authorization` header when the redirect crosses an origin boundary.\n* Ensure that `httpc` is only used to contact trusted servers that will not issue cross-origin redirects."
}
],
"value": "* Set {autoredirect, false} in the httpc:request/4 options and handle redirects manually, stripping the Authorization header when the redirect crosses an origin boundary.\n* Ensure that httpc is only used to contact trusted servers that will not issue cross-origin redirects."
}
]
}
},
"cveMetadata": {
"assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"assignerShortName": "EEF",
"cveId": "CVE-2026-48856",
"datePublished": "2026-06-10T14:41:51.616Z",
"dateReserved": "2026-05-25T20:44:10.697Z",
"dateUpdated": "2026-10-15T10:50:06.903Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-48858 (GCVE-0-2026-48858)
Vulnerability from cvelistv5 – Published: 2026-06-10 14:35 – Updated: 2026-11-11 19:05- CWE-918 - Server-Side Request Forgery
| URL | Tags |
|---|---|
| https://github.com/erlang/otp/security/advisories… | vendor-advisoryrelated |
| https://cna.erlef.org/cves/CVE-2026-48858.html | related |
| https://osv.dev/vulnerability/EEF-CVE-2026-48858 | related |
| https://www.erlang.org/doc/system/versions.html#o… | x_version-scheme |
| https://github.com/erlang/otp/commit/be95772ee1fc… | related |
| https://github.com/erlang/otp/commit/521bcfa24407… | patch |
| https://github.com/erlang/otp/commit/2691a806231f… | patch |
| Vendor | Product | Version | |
|---|---|---|---|
| Erlang | OTP |
Affected:
17.4 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
5.10.4 , < 7.0
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
1.0 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
be95772ee1fcfe71045ef070130bea7a910b81e3 , < *
(git)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-48858",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-06-10T16:20:57.662713Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-06-10T16:21:08.893Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"ftp_internal"
],
"packageName": "otp",
"packageURL": "pkg:software-id/erlang.org/otp",
"product": "OTP",
"programFiles": [
"lib/inets/src/ftp/ftp_internal.erl",
"lib/ftp/src/ftp_internal.erl"
],
"programRoutines": [
{
"name": "ftp_internal:handle_ctrl_result/2"
}
],
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "27.3.4.13",
"status": "unaffected"
},
{
"at": "28.5.0.2",
"status": "unaffected"
},
{
"at": "29.0.2",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "17.4",
"versionType": "otp"
}
]
},
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"ftp_internal"
],
"packageName": "inets",
"packageURL": "pkg:otp/inets?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
"product": "OTP",
"programFiles": [
"src/ftp/ftp_internal.erl"
],
"programRoutines": [
{
"name": "ftp_internal:handle_ctrl_result/2"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"lessThan": "7.0",
"status": "affected",
"version": "5.10.4",
"versionType": "otp"
}
]
},
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"ftp_internal"
],
"packageName": "ftp",
"packageURL": "pkg:otp/ftp?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
"product": "OTP",
"programFiles": [
"src/ftp_internal.erl"
],
"programRoutines": [
{
"name": "ftp_internal:handle_ctrl_result/2"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "1.2.3.1",
"status": "unaffected"
},
{
"at": "1.2.4.1",
"status": "unaffected"
},
{
"at": "1.2.6",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "1.0",
"versionType": "otp"
}
]
},
{
"collectionURL": "https://github.com",
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"ftp_internal"
],
"packageName": "erlang/otp",
"packageURL": "pkg:github/erlang/otp",
"product": "OTP",
"programFiles": [
"lib/inets/src/ftp/ftp_internal.erl",
"lib/ftp/src/ftp_internal.erl"
],
"programRoutines": [
{
"name": "ftp_internal:handle_ctrl_result/2"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "521bcfa24407ee8cb5614823cf905c37ea3aa605",
"status": "unaffected"
},
{
"at": "2691a806231ffd0490a8a9e20500dec0c7e73727",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "be95772ee1fcfe71045ef070130bea7a910b81e3",
"versionType": "git"
}
]
}
],
"configurations": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eThe vulnerable path is active under the default configuration: \u003ccode\u003emode=passive\u003c/code\u003e, \u003ccode\u003eipfamily=inet\u003c/code\u003e, and \u003ccode\u003eftp_extension=false\u003c/code\u003e are all defaults for \u003ccode\u003eftp:open/2\u003c/code\u003e.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "The vulnerable path is active under the default configuration: `mode=passive`, `ipfamily=inet`, and `ftp_extension=false` are all defaults for `ftp:open/2`."
}
],
"value": "The vulnerable path is active under the default configuration: mode=passive, ipfamily=inet, and ftp_extension=false are all defaults for ftp:open/2."
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "27.3.4.13",
"versionStartIncluding": "17.4",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "28.5.0.2",
"versionStartIncluding": "28.0",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "29.0.2",
"versionStartIncluding": "29.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Jonatan M\u00e4nnchen / EEF"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Jonatan M\u00e4nnchen / EEF"
},
{
"lang": "en",
"type": "remediation reviewer",
"value": "Ingela Anderton Andin"
}
],
"datePublic": "2026-06-10T14:35:45.000Z",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eServer-Side Request Forgery (SSRF) vulnerability in Erlang/OTP ftp (ftp_internal module) allows FTP bounce attacks and SSRF via an unvalidated PASV response IP address.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eftp_internal:handle_ctrl_result/2\u003c/code\u003e PASV handler (mode=passive, ipfamily=inet, ftp_extension=false) extracts the IP address from the server\u0027s 227 response and passes it directly to \u003ccode\u003egen_tcp:connect/4\u003c/code\u003e without validating it against the control connection peer address. The adjacent EPSV handlers correctly call \u003ccode\u003epeername(CSock)\u003c/code\u003e to derive the IP from the control connection, but the PASV handler does not. A malicious or compromised FTP server can redirect the client\u0027s data connection to an arbitrary internal host and port. On read operations (\u003ccode\u003eftp:ls/1,2\u003c/code\u003e, \u003ccode\u003eftp:nlist/1,2\u003c/code\u003e, \u003ccode\u003eftp:recv/2,3\u003c/code\u003e), data from the redirected target is returned to the caller. On write operations (\u003ccode\u003eftp:send/2,3\u003c/code\u003e, \u003ccode\u003eftp:append/2,3\u003c/code\u003e), file content is sent to the redirected target. This enables SSRF against internal hosts, cloud metadata endpoints, and FTP bounce attacks against third-party hosts.\u003c/p\u003e\n\u003cp\u003eThe vulnerable path is the default configuration (mode=passive, ipfamily=inet, ftp_extension=false). RFC 2577 section 3 explicitly recommends validating the PASV response IP against the control connection peer.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eftp\u003c/code\u003e application is deprecated and scheduled for removal in OTP-30.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is associated with program files \u003ccode\u003elib/inets/src/ftp/ftp_internal.erl\u003c/code\u003e (inets 5.10.4 through 6.5, OTP\u0026nbsp;17.4 through 20.3) and \u003ccode\u003elib/ftp/src/ftp_internal.erl\u003c/code\u003e (ftp 1.0 and later, OTP\u0026nbsp;21.0 and later).\u003c/p\u003e\n\u003cp\u003eThis issue affects OTP from OTP\u0026nbsp;17.4 before OTP\u0026nbsp;27.3.4.13, OTP\u0026nbsp;28.5.0.2, and OTP\u0026nbsp;29.0.2, corresponding to inets from 5.10.4 before 7.0, and ftp from 1.0 before 1.2.3.1, 1.2.4.1, and 1.2.6.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "Server-Side Request Forgery (SSRF) vulnerability in Erlang/OTP ftp (ftp_internal module) allows FTP bounce attacks and SSRF via an unvalidated PASV response IP address.\n\nThe `ftp_internal:handle_ctrl_result/2` PASV handler (mode=passive, ipfamily=inet, ftp_extension=false) extracts the IP address from the server\u0027s 227 response and passes it directly to `gen_tcp:connect/4` without validating it against the control connection peer address. The adjacent EPSV handlers correctly call `peername(CSock)` to derive the IP from the control connection, but the PASV handler does not. A malicious or compromised FTP server can redirect the client\u0027s data connection to an arbitrary internal host and port. On read operations (`ftp:ls/1,2`, `ftp:nlist/1,2`, `ftp:recv/2,3`), data from the redirected target is returned to the caller. On write operations (`ftp:send/2,3`, `ftp:append/2,3`), file content is sent to the redirected target. This enables SSRF against internal hosts, cloud metadata endpoints, and FTP bounce attacks against third-party hosts.\n\nThe vulnerable path is the default configuration (mode=passive, ipfamily=inet, ftp_extension=false). RFC 2577 section 3 explicitly recommends validating the PASV response IP against the control connection peer.\n\nThe `ftp` application is deprecated and scheduled for removal in OTP-30.\n\nThis vulnerability is associated with program files `lib/inets/src/ftp/ftp_internal.erl` (inets 5.10.4 through 6.5, OTP\u00a017.4 through 20.3) and `lib/ftp/src/ftp_internal.erl` (ftp 1.0 and later, OTP\u00a021.0 and later).\n\nThis issue affects OTP from OTP\u00a017.4 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to inets from 5.10.4 before 7.0, and ftp from 1.0 before 1.2.3.1, 1.2.4.1, and 1.2.6."
}
],
"value": "Server-Side Request Forgery (SSRF) vulnerability in Erlang/OTP ftp (ftp_internal module) allows FTP bounce attacks and SSRF via an unvalidated PASV response IP address.\n\nThe ftp_internal:handle_ctrl_result/2 PASV handler (mode=passive, ipfamily=inet, ftp_extension=false) extracts the IP address from the server\u0027s 227 response and passes it directly to gen_tcp:connect/4 without validating it against the control connection peer address. The adjacent EPSV handlers correctly call peername(CSock) to derive the IP from the control connection, but the PASV handler does not. A malicious or compromised FTP server can redirect the client\u0027s data connection to an arbitrary internal host and port. On read operations (ftp:ls/1,2, ftp:nlist/1,2, ftp:recv/2,3), data from the redirected target is returned to the caller. On write operations (ftp:send/2,3, ftp:append/2,3), file content is sent to the redirected target. This enables SSRF against internal hosts, cloud metadata endpoints, and FTP bounce attacks against third-party hosts.\n\nThe vulnerable path is the default configuration (mode=passive, ipfamily=inet, ftp_extension=false). RFC 2577 section 3 explicitly recommends validating the PASV response IP against the control connection peer.\n\nThe ftp application is deprecated and scheduled for removal in OTP-30.\n\nThis vulnerability is associated with program files lib/inets/src/ftp/ftp_internal.erl (inets 5.10.4 through 6.5, OTP\u00a017.4 through 20.3) and lib/ftp/src/ftp_internal.erl (ftp 1.0 and later, OTP\u00a021.0 and later).\n\nThis issue affects OTP from OTP\u00a017.4 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to inets from 5.10.4 before 7.0, and ftp from 1.0 before 1.2.3.1, 1.2.4.1, and 1.2.6."
}
],
"impacts": [
{
"capecId": "CAPEC-664",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-664 Server Side Request Forgery"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 6.3,
"baseSeverity": "MEDIUM",
"privilegesRequired": "NONE",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "LOW",
"subIntegrityImpact": "LOW",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "LOW",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-918",
"description": "CWE-918 Server-Side Request Forgery",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-11-11T19:05:09.624Z",
"orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"shortName": "EEF"
},
"references": [
{
"name": "FTP Client PASV Response IP not Validated Against Control Peer, Enabling SSRF and FTP Bounce Attacks",
"tags": [
"vendor-advisory",
"related"
],
"url": "https://github.com/erlang/otp/security/advisories/GHSA-24cv-hwgr-37fq"
},
{
"name": "EEF CNA record for CVE-2026-48858",
"tags": [
"related"
],
"url": "https://cna.erlef.org/cves/CVE-2026-48858.html"
},
{
"name": "OSV record EEF-CVE-2026-48858",
"tags": [
"related"
],
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-48858"
},
{
"name": "Erlang/OTP version ordering",
"tags": [
"x_version-scheme"
],
"url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
},
{
"name": "Introducing commit be95772 in erlang/otp",
"tags": [
"related"
],
"url": "https://github.com/erlang/otp/commit/be95772ee1fcfe71045ef070130bea7a910b81e3"
},
{
"name": "Fix commit 521bcfa in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/521bcfa24407ee8cb5614823cf905c37ea3aa605"
},
{
"name": "Fix commit 2691a80 in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/2691a806231ffd0490a8a9e20500dec0c7e73727"
}
],
"source": {
"discovery": "INTERNAL"
},
"title": "ftp client PASV response IP not validated against control peer, enabling SSRF and FTP bounce attacks",
"workarounds": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003ePass \u003ccode\u003e{ftp_extension, true}\u003c/code\u003e to \u003ccode\u003eftp:open/2\u003c/code\u003e to use EPSV instead of PASV. Alternatively, pass \u003ccode\u003e{mode, active}\u003c/code\u003e to use active mode, or pass \u003ccode\u003e{ipfamily, inet6}\u003c/code\u003e to force IPv6, both of which bypass the vulnerable PASV path.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "Pass `{ftp_extension, true}` to `ftp:open/2` to use EPSV instead of PASV. Alternatively, pass `{mode, active}` to use active mode, or pass `{ipfamily, inet6}` to force IPv6, both of which bypass the vulnerable PASV path."
}
],
"value": "Pass {ftp_extension, true} to ftp:open/2 to use EPSV instead of PASV. Alternatively, pass {mode, active} to use active mode, or pass {ipfamily, inet6} to force IPv6, both of which bypass the vulnerable PASV path."
}
]
}
},
"cveMetadata": {
"assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"assignerShortName": "EEF",
"cveId": "CVE-2026-48858",
"datePublished": "2026-06-10T14:35:45.466Z",
"dateReserved": "2026-05-25T20:44:10.697Z",
"dateUpdated": "2026-11-11T19:05:09.624Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-49759 (GCVE-0-2026-49759)
Vulnerability from cvelistv5 – Published: 2026-06-10 14:35 – Updated: 2026-09-24 20:41| URL | Tags |
|---|---|
| https://github.com/erlang/otp/security/advisories… | vendor-advisoryrelated |
| https://cna.erlef.org/cves/CVE-2026-49759.html | related |
| https://osv.dev/vulnerability/EEF-CVE-2026-49759 | related |
| https://www.erlang.org/doc/system/versions.html#o… | x_version-scheme |
| https://github.com/erlang/otp/commit/3983d4952843… | patch |
| https://access.redhat.com/security/cve/CVE-2026-49759 | vdb-entryx_refsource_REDHAT |
| https://bugzilla.redhat.com/show_bug.cgi?id=2487607 | issue-trackingx_refsource_REDHAT |
| https://security.access.redhat.com/data/csaf/v2/v… | x_sadp-csaf-vex |
| Vendor | Product | Version | |
|---|---|---|---|
| Erlang | OTP |
Affected:
17.0 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
6.0 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
84adefa331c4159d432d22840663c38f155cd4c1 , < 3983d495284331c121f600a80bac9fcf4e16381e
(git)
Unaffected: 3983d495284331c121f600a80bac9fcf4e16381e , < * (git) cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Red Hat | Red Hat OpenStack Platform 16.2 |
cpe:/a:redhat:openstack:16.2
|
|
| Red Hat | Red Hat OpenStack Platform 17.1 |
cpe:/a:redhat:openstack:17.1
|
|
| Red Hat | Red Hat OpenStack Platform 18.0 |
cpe:/a:redhat:openstack:18.0
|
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-49759",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-06-10T16:18:27.945916Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-06-10T16:18:43.800Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
},
{
"affected": [
{
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"cpes": [
"cpe:/a:redhat:openstack:16.2"
],
"defaultStatus": "unaffected",
"packageName": "erlang",
"product": "Red Hat OpenStack Platform 16.2",
"vendor": "Red Hat"
},
{
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"cpes": [
"cpe:/a:redhat:openstack:17.1"
],
"defaultStatus": "unaffected",
"packageName": "erlang",
"product": "Red Hat OpenStack Platform 17.1",
"vendor": "Red Hat"
},
{
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"cpes": [
"cpe:/a:redhat:openstack:18.0"
],
"defaultStatus": "unaffected",
"packageName": "erlang",
"product": "Red Hat OpenStack Platform 18.0",
"vendor": "Red Hat"
}
],
"datePublic": "2026-06-10T14:35:38.838Z",
"descriptions": [
{
"lang": "en",
"value": "A flaw was found in Erlang OTP (Open Telecom Platform) erts, specifically within the `inet_drv` component. An unauthenticated remote attacker can exploit a stack-based buffer overflow vulnerability by sending a specially crafted Stream Control Transmission Protocol (SCTP) ERROR chunk. This can lead to a Denial of Service (DoS) by crashing the BEAM virtual machine. Additionally, this flaw may result in limited information disclosure by leaking small portions of Erlang VM memory."
}
],
"metrics": [
{
"other": {
"content": {
"namespace": "https://access.redhat.com/security/updates/classification/",
"value": "Important"
},
"type": "Red Hat severity rating"
}
},
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "HIGH",
"baseScore": 8.2,
"baseSeverity": "HIGH",
"confidentialityImpact": "LOW",
"integrityImpact": "NONE",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-120",
"description": "Buffer Copy without Checking Size of Input (\u0027Classic Buffer Overflow\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-17T12:04:38.340Z",
"orgId": "0b0ca135-0b70-47e7-9f44-1890c2a1c46c",
"shortName": "redhat-SADP"
},
"references": [
{
"tags": [
"vdb-entry",
"x_refsource_REDHAT"
],
"url": "https://access.redhat.com/security/cve/CVE-2026-49759"
},
{
"name": "RHBZ#2487607",
"tags": [
"issue-tracking",
"x_refsource_REDHAT"
],
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2487607"
},
{
"tags": [
"x_sadp-csaf-vex"
],
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-49759.json"
}
],
"timeline": [
{
"lang": "en",
"time": "2026-06-10T16:01:51.030Z",
"value": "Reported to Red Hat."
},
{
"lang": "en",
"time": "2026-06-10T14:35:38.838Z",
"value": "Made public."
}
],
"title": "erlang: Erlang OTP: Denial of Service via crafted SCTP ERROR chunk",
"workarounds": [
{
"lang": "en",
"value": "Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability."
}
],
"x_adpType": "supplier",
"x_generator": {
"engine": "sadp-cli 1.0.0"
}
}
],
"cna": {
"affected": [
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"inet_drv"
],
"packageName": "otp",
"packageURL": "pkg:software-id/erlang.org/otp",
"product": "OTP",
"programFiles": [
"erts/emulator/drivers/common/inet_drv.c"
],
"programRoutines": [
{
"name": "sctp_parse_error_chunk"
}
],
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "27.3.4.13",
"status": "unaffected"
},
{
"at": "28.5.0.2",
"status": "unaffected"
},
{
"at": "29.0.2",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "17.0",
"versionType": "otp"
}
]
},
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"inet_drv"
],
"packageName": "erts",
"packageURL": "pkg:otp/erts?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
"product": "OTP",
"programFiles": [
"emulator/drivers/common/inet_drv.c"
],
"programRoutines": [
{
"name": "sctp_parse_error_chunk"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "15.2.7.9",
"status": "unaffected"
},
{
"at": "16.4.0.2",
"status": "unaffected"
},
{
"at": "17.0.2",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "6.0",
"versionType": "otp"
}
]
},
{
"collectionURL": "https://github.com",
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"inet_drv"
],
"packageName": "erlang/otp",
"packageURL": "pkg:github/erlang/otp",
"product": "OTP",
"programFiles": [
"erts/emulator/drivers/common/inet_drv.c"
],
"programRoutines": [
{
"name": "sctp_parse_error_chunk"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"lessThan": "3983d495284331c121f600a80bac9fcf4e16381e",
"status": "affected",
"version": "84adefa331c4159d432d22840663c38f155cd4c1",
"versionType": "git"
},
{
"lessThan": "*",
"status": "unaffected",
"version": "3983d495284331c121f600a80bac9fcf4e16381e",
"versionType": "git"
}
]
}
],
"configurations": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eSCTP support must be compiled into OTP. A listening SCTP socket must be opened via \u003ccode\u003egen_sctp\u003c/code\u003e with the default \u003ccode\u003einet\u003c/code\u003e backend and must be reachable from the attacker\u0027s network. Windows builds are unaffected as SCTP is not supported on Windows.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "SCTP support must be compiled into OTP. A listening SCTP socket must be opened via `gen_sctp` with the default `inet` backend and must be reachable from the attacker\u0027s network. Windows builds are unaffected as SCTP is not supported on Windows."
}
],
"value": "SCTP support must be compiled into OTP. A listening SCTP socket must be opened via gen_sctp with the default inet backend and must be reachable from the attacker\u0027s network. Windows builds are unaffected as SCTP is not supported on Windows."
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "27.3.4.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "28.5.0.2",
"versionStartIncluding": "28.0",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "29.0.2",
"versionStartIncluding": "29.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Zhang Delong"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Raimo Niskanen"
}
],
"datePublic": "2026-06-10T14:35:38.000Z",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eStack-based Buffer Overflow vulnerability in Erlang OTP \u003ccode\u003eerts\u003c/code\u003e (\u003ccode\u003einet_drv\u003c/code\u003e) allows an unauthenticated remote attacker to crash the BEAM VM by sending a crafted SCTP ERROR chunk.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003esctp_parse_error_chunk\u003c/code\u003e function in \u003ccode\u003eerts/emulator/drivers/common/inet_drv.c\u003c/code\u003e parses SCTP ERROR chunks and writes cause codes into a fixed-size stack-allocated \u003ccode\u003eErlDrvTermData spec[]\u003c/code\u003e array without checking bounds. A remote attacker who has established an SCTP association to a listening port can send a single crafted SCTP ERROR chunk containing enough cause codes to overflow the stack buffer, crashing the VM. The attacker can only write 16-bit values interleaved with a fixed tag, so the overflow does not provide a controlled return address, limiting exploitation to Denial of Service.\u003c/p\u003e\n\u003cp\u003eA crafted SCTP ERROR chunk may also leak bits and pieces of Erlang VM memory into the received error packet observed by the Erlang process. Such data is already readable by the user running the Erlang VM, so the disclosure scope is limited.\u003c/p\u003e\n\u003cp\u003eThis issue affects OTP from OTP\u0026nbsp;17.0 before OTP\u0026nbsp;27.3.4.13, OTP\u0026nbsp;28.5.0.2, and OTP\u0026nbsp;29.0.2, corresponding to erts from 6.0 before 15.2.7.9, 16.4.0.2, and 17.0.2. Whether OTP before OTP\u0026nbsp;17.0, corresponding to erts before 6.0, is affected is unknown.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "Stack-based Buffer Overflow vulnerability in Erlang OTP `erts` (`inet_drv`) allows an unauthenticated remote attacker to crash the BEAM VM by sending a crafted SCTP ERROR chunk.\n\nThe `sctp_parse_error_chunk` function in `erts/emulator/drivers/common/inet_drv.c` parses SCTP ERROR chunks and writes cause codes into a fixed-size stack-allocated `ErlDrvTermData spec[]` array without checking bounds. A remote attacker who has established an SCTP association to a listening port can send a single crafted SCTP ERROR chunk containing enough cause codes to overflow the stack buffer, crashing the VM. The attacker can only write 16-bit values interleaved with a fixed tag, so the overflow does not provide a controlled return address, limiting exploitation to Denial of Service.\n\nA crafted SCTP ERROR chunk may also leak bits and pieces of Erlang VM memory into the received error packet observed by the Erlang process. Such data is already readable by the user running the Erlang VM, so the disclosure scope is limited.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to erts from 6.0 before 15.2.7.9, 16.4.0.2, and 17.0.2. Whether OTP before OTP\u00a017.0, corresponding to erts before 6.0, is affected is unknown."
}
],
"value": "Stack-based Buffer Overflow vulnerability in Erlang OTP erts (inet_drv) allows an unauthenticated remote attacker to crash the BEAM VM by sending a crafted SCTP ERROR chunk.\n\nThe sctp_parse_error_chunk function in erts/emulator/drivers/common/inet_drv.c parses SCTP ERROR chunks and writes cause codes into a fixed-size stack-allocated ErlDrvTermData spec[] array without checking bounds. A remote attacker who has established an SCTP association to a listening port can send a single crafted SCTP ERROR chunk containing enough cause codes to overflow the stack buffer, crashing the VM. The attacker can only write 16-bit values interleaved with a fixed tag, so the overflow does not provide a controlled return address, limiting exploitation to Denial of Service.\n\nA crafted SCTP ERROR chunk may also leak bits and pieces of Erlang VM memory into the received error packet observed by the Erlang process. Such data is already readable by the user running the Erlang VM, so the disclosure scope is limited.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to erts from 6.0 before 15.2.7.9, 16.4.0.2, and 17.0.2. Whether OTP before OTP\u00a017.0, corresponding to erts before 6.0, is affected is unknown."
}
],
"impacts": [
{
"capecId": "CAPEC-100",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-100 Overflow Buffers"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 8.8,
"baseSeverity": "HIGH",
"privilegesRequired": "NONE",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "HIGH",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "NONE",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-121",
"description": "CWE-121 Stack-based Buffer Overflow",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-24T20:41:04.351Z",
"orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"shortName": "EEF"
},
"references": [
{
"tags": [
"vendor-advisory",
"related"
],
"url": "https://github.com/erlang/otp/security/advisories/GHSA-6f4f-chj5-5g97"
},
{
"name": "EEF CNA record for CVE-2026-49759",
"tags": [
"related"
],
"url": "https://cna.erlef.org/cves/CVE-2026-49759.html"
},
{
"name": "OSV record EEF-CVE-2026-49759",
"tags": [
"related"
],
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-49759"
},
{
"name": "Erlang/OTP version ordering",
"tags": [
"x_version-scheme"
],
"url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
},
{
"name": "Fix commit 3983d49 in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/3983d495284331c121f600a80bac9fcf4e16381e"
}
],
"source": {
"discovery": "EXTERNAL"
},
"title": "Stack buffer overflow in SCTP error cause parsing in inet_drv allows remote VM crash"
}
},
"cveMetadata": {
"assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"assignerShortName": "EEF",
"cveId": "CVE-2026-49759",
"datePublished": "2026-06-10T14:35:38.838Z",
"dateReserved": "2026-06-01T13:45:22.449Z",
"dateUpdated": "2026-09-24T20:41:04.351Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-49760 (GCVE-0-2026-49760)
Vulnerability from cvelistv5 – Published: 2026-06-10 14:35 – Updated: 2026-09-24 20:42- CWE-121 - Stack-based Buffer Overflow
| URL | Tags |
|---|---|
| https://github.com/erlang/otp/security/advisories… | vendor-advisoryrelated |
| https://cna.erlef.org/cves/CVE-2026-49760.html | related |
| https://osv.dev/vulnerability/EEF-CVE-2026-49760 | related |
| https://www.erlang.org/doc/system/versions.html#o… | x_version-scheme |
| https://github.com/erlang/otp/commit/0bef277b2d39… | patch |
| Vendor | Product | Version | |
|---|---|---|---|
| Erlang | OTP |
Affected:
17.0 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
3.7.16 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
84adefa331c4159d432d22840663c38f155cd4c1 , < 0bef277b2d39dc8babb9ceb4f5d0a456f3007111
(git)
Unaffected: 0bef277b2d39dc8babb9ceb4f5d0a456f3007111 , < * (git) cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-49760",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-06-10T16:16:14.697009Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-06-10T16:16:28.366Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"erl_interface"
],
"packageName": "otp",
"packageURL": "pkg:software-id/erlang.org/otp",
"product": "OTP",
"programFiles": [
"lib/erl_interface/src/misc/ei_printterm.c"
],
"programRoutines": [
{
"name": "ei_s_print_term"
}
],
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "27.3.4.13",
"status": "unaffected"
},
{
"at": "28.5.0.2",
"status": "unaffected"
},
{
"at": "29.0.2",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "17.0",
"versionType": "otp"
}
]
},
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"erl_interface"
],
"packageName": "erl_interface",
"packageURL": "pkg:otp/erl_interface?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
"product": "OTP",
"programFiles": [
"src/misc/ei_printterm.c"
],
"programRoutines": [
{
"name": "ei_s_print_term"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "5.5.2.1",
"status": "unaffected"
},
{
"at": "5.7.0.1",
"status": "unaffected"
},
{
"at": "5.8.1",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "3.7.16",
"versionType": "otp"
}
]
},
{
"collectionURL": "https://github.com",
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"erl_interface"
],
"packageName": "erlang/otp",
"packageURL": "pkg:github/erlang/otp",
"product": "OTP",
"programFiles": [
"lib/erl_interface/src/misc/ei_printterm.c"
],
"programRoutines": [
{
"name": "ei_s_print_term"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"lessThan": "0bef277b2d39dc8babb9ceb4f5d0a456f3007111",
"status": "affected",
"version": "84adefa331c4159d432d22840663c38f155cd4c1",
"versionType": "git"
},
{
"lessThan": "*",
"status": "unaffected",
"version": "0bef277b2d39dc8babb9ceb4f5d0a456f3007111",
"versionType": "git"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "27.3.4.13",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "28.5.0.2",
"versionStartIncluding": "28.0",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "29.0.2",
"versionStartIncluding": "29.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Jonatan M\u00e4nnchen / EEF"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Sverker Eriksson"
}
],
"datePublic": "2026-06-10T14:35:36.000Z",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eStack-based Buffer Overflow vulnerability in Erlang OTP (erl_interface) allows Stack-based Buffer Overflow.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is associated with program file \u003ccode\u003elib/erl_interface/src/misc/ei_printterm.c\u003c/code\u003e and program routine \u003ccode\u003eei_s_print_term\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe C function \u003ccode\u003eei_s_print_term\u003c/code\u003e uses an internal 2000-character stack buffer to format terms. When called with an encoded Erlang term containing a very large integer (encoded representation exceeding 2000 characters), the buffer overflows. The overflow bytes are restricted to the ASCII values of \u003ccode\u003e0\u003c/code\u003e-\u003ccode\u003e9\u003c/code\u003e and \u003ccode\u003eA\u003c/code\u003e-\u003ccode\u003eF\u003c/code\u003e, which limits exploitation to Denial of Service.\u003c/p\u003e\n\u003cp\u003eThe companion function \u003ccode\u003eei_print_term\u003c/code\u003e, which prints directly to a \u003ccode\u003eFILE\u003c/code\u003e instead of a memory buffer, does not contain this bug.\u003c/p\u003e\n\u003cp\u003eThis issue affects OTP from OTP\u0026nbsp;17.0 before OTP\u0026nbsp;27.3.4.13, OTP\u0026nbsp;28.5.0.2, and OTP\u0026nbsp;29.0.2, corresponding to erl_interface from 3.7.16 before 5.5.2.1, 5.7.0.1, and 5.8.1. Whether OTP before OTP\u0026nbsp;17.0, corresponding to erl_interface before 3.7.16, is affected is unknown.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "Stack-based Buffer Overflow vulnerability in Erlang OTP (erl_interface) allows Stack-based Buffer Overflow.\n\nThis vulnerability is associated with program file `lib/erl_interface/src/misc/ei_printterm.c` and program routine `ei_s_print_term`.\n\nThe C function `ei_s_print_term` uses an internal 2000-character stack buffer to format terms. When called with an encoded Erlang term containing a very large integer (encoded representation exceeding 2000 characters), the buffer overflows. The overflow bytes are restricted to the ASCII values of `0`-`9` and `A`-`F`, which limits exploitation to Denial of Service.\n\nThe companion function `ei_print_term`, which prints directly to a `FILE` instead of a memory buffer, does not contain this bug.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to erl_interface from 3.7.16 before 5.5.2.1, 5.7.0.1, and 5.8.1. Whether OTP before OTP\u00a017.0, corresponding to erl_interface before 3.7.16, is affected is unknown."
}
],
"value": "Stack-based Buffer Overflow vulnerability in Erlang OTP (erl_interface) allows Stack-based Buffer Overflow.\n\nThis vulnerability is associated with program file lib/erl_interface/src/misc/ei_printterm.c and program routine ei_s_print_term.\n\nThe C function ei_s_print_term uses an internal 2000-character stack buffer to format terms. When called with an encoded Erlang term containing a very large integer (encoded representation exceeding 2000 characters), the buffer overflows. The overflow bytes are restricted to the ASCII values of 0-9 and A-F, which limits exploitation to Denial of Service.\n\nThe companion function ei_print_term, which prints directly to a FILE instead of a memory buffer, does not contain this bug.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.13, OTP\u00a028.5.0.2, and OTP\u00a029.0.2, corresponding to erl_interface from 3.7.16 before 5.5.2.1, 5.7.0.1, and 5.8.1. Whether OTP before OTP\u00a017.0, corresponding to erl_interface before 3.7.16, is affected is unknown."
}
],
"impacts": [
{
"capecId": "CAPEC-8",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-8 Buffer Overflow in an API Call"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "LOCAL",
"baseScore": 6.9,
"baseSeverity": "MEDIUM",
"privilegesRequired": "NONE",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "HIGH",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "NONE",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-121",
"description": "CWE-121 Stack-based Buffer Overflow",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-24T20:42:47.418Z",
"orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"shortName": "EEF"
},
"references": [
{
"tags": [
"vendor-advisory",
"related"
],
"url": "https://github.com/erlang/otp/security/advisories/GHSA-xcxj-5pg2-v72j"
},
{
"name": "EEF CNA record for CVE-2026-49760",
"tags": [
"related"
],
"url": "https://cna.erlef.org/cves/CVE-2026-49760.html"
},
{
"name": "OSV record EEF-CVE-2026-49760",
"tags": [
"related"
],
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-49760"
},
{
"name": "Erlang/OTP version ordering",
"tags": [
"x_version-scheme"
],
"url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
},
{
"name": "Fix commit 0bef277 in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/0bef277b2d39dc8babb9ceb4f5d0a456f3007111"
}
],
"source": {
"discovery": "INTERNAL"
},
"title": "Stack Buffer Overflow in ei_s_print_term at Very Large Integer",
"workarounds": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eAvoid calling \u003ccode\u003eei_s_print_term\u003c/code\u003e with untrusted data whose encoded integer representation could exceed 2000 characters.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "Avoid calling `ei_s_print_term` with untrusted data whose encoded integer representation could exceed 2000 characters."
}
],
"value": "Avoid calling ei_s_print_term with untrusted data whose encoded integer representation could exceed 2000 characters."
}
]
}
},
"cveMetadata": {
"assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"assignerShortName": "EEF",
"cveId": "CVE-2026-49760",
"datePublished": "2026-06-10T14:35:36.804Z",
"dateReserved": "2026-06-01T13:45:22.449Z",
"dateUpdated": "2026-09-24T20:42:47.418Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-53422 (GCVE-0-2026-53422)
Vulnerability from cvelistv5 – Published: 2026-07-02 16:06 – Updated: 2026-11-11 18:58- CWE-204 - Observable Response Discrepancy
| URL | Tags |
|---|---|
| https://github.com/erlang/otp/security/advisories… | vendor-advisoryrelated |
| https://cna.erlef.org/cves/CVE-2026-53422.html | related |
| https://osv.dev/vulnerability/EEF-CVE-2026-53422 | related |
| https://www.erlang.org/doc/system/versions.html#o… | x_version-scheme |
| https://github.com/erlang/otp/commit/86622cfaacf5… | patch |
| https://github.com/erlang/otp/commit/c5a8f50ae688… | patch |
| https://github.com/erlang/otp/commit/059e5785ef8c… | patch |
| Vendor | Product | Version | |
|---|---|---|---|
| Erlang | OTP |
Affected:
17.0 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
3.0.1 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
84adefa331c4159d432d22840663c38f155cd4c1 , < *
(git)
Unaffected: 86622cfaacf57a02c7645d1999f946846b504c94 , < * (git) Unaffected: c5a8f50ae68888ff243c5c741a06d2b3a4b48b7a , < * (git) Unaffected: 059e5785ef8c1d423820ca633fb7b37f47645172 , < * (git) cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-53422",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-07-02T17:29:13.490797Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-07-02T17:29:32.878Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"ssh_sftpd"
],
"packageName": "otp",
"packageURL": "pkg:software-id/erlang.org/otp",
"product": "OTP",
"programFiles": [
"lib/ssh/src/ssh_sftpd.erl"
],
"programRoutines": [
{
"name": "ssh_sftpd:handle_op/4"
}
],
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "27.3.4.14",
"status": "unaffected"
},
{
"at": "28.5.0.3",
"status": "unaffected"
},
{
"at": "29.0.3",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "17.0",
"versionType": "otp"
}
]
},
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"ssh_sftpd"
],
"packageName": "ssh",
"packageURL": "pkg:otp/ssh?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
"product": "OTP",
"programFiles": [
"src/ssh_sftpd.erl"
],
"programRoutines": [
{
"name": "ssh_sftpd:handle_op/4"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "5.2.11.9",
"status": "unaffected"
},
{
"at": "5.5.2.2",
"status": "unaffected"
},
{
"at": "6.0.2",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "3.0.1",
"versionType": "otp"
}
]
},
{
"collectionURL": "https://github.com",
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"ssh_sftpd"
],
"packageName": "erlang/otp",
"packageURL": "pkg:github/erlang/otp",
"product": "OTP",
"programFiles": [
"lib/ssh/src/ssh_sftpd.erl"
],
"programRoutines": [
{
"name": "ssh_sftpd:handle_op/4"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "86622cfaacf57a02c7645d1999f946846b504c94",
"status": "unaffected"
},
{
"at": "c5a8f50ae68888ff243c5c741a06d2b3a4b48b7a",
"status": "unaffected"
},
{
"at": "059e5785ef8c1d423820ca633fb7b37f47645172",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "84adefa331c4159d432d22840663c38f155cd4c1",
"versionType": "git"
},
{
"lessThan": "*",
"status": "unaffected",
"version": "86622cfaacf57a02c7645d1999f946846b504c94",
"versionType": "git"
},
{
"lessThan": "*",
"status": "unaffected",
"version": "c5a8f50ae68888ff243c5c741a06d2b3a4b48b7a",
"versionType": "git"
},
{
"lessThan": "*",
"status": "unaffected",
"version": "059e5785ef8c1d423820ca633fb7b37f47645172",
"versionType": "git"
}
]
}
],
"configurations": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eThe SFTP subsystem must be configured with the \u003ccode\u003eroot\u003c/code\u003e option in \u003ccode\u003essh_sftpd:subsystem_spec/1\u003c/code\u003e, and the operator must rely on it to provide filesystem path isolation. The \u003ccode\u003eroot\u003c/code\u003e option is not set by default.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "The SFTP subsystem must be configured with the `root` option in `ssh_sftpd:subsystem_spec/1`, and the operator must rely on it to provide filesystem path isolation. The `root` option is not set by default."
}
],
"value": "The SFTP subsystem must be configured with the root option in ssh_sftpd:subsystem_spec/1, and the operator must rely on it to provide filesystem path isolation. The root option is not set by default."
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "27.3.4.14",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "28.5.0.3",
"versionStartIncluding": "28.0",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "29.0.3",
"versionStartIncluding": "29.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Mohamed Ali IBNAL HAJALI / Ericsson"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Micha\u0142 W\u0105sowski"
},
{
"lang": "en",
"type": "remediation reviewer",
"value": "Jakub Witczak"
}
],
"datePublic": "2026-07-02T16:06:03.000Z",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eObservable Response Discrepancy vulnerability in Erlang OTP \u003ccode\u003essh\u003c/code\u003e (\u003ccode\u003essh_sftpd\u003c/code\u003e module) allows an authenticated SFTP user to enumerate the existence of files and directories outside the configured root directory.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eSSH_FXP_REALPATH\u003c/code\u003e handler in \u003ccode\u003essh_sftpd\u003c/code\u003e calls \u003ccode\u003erelate_file_name/3\u003c/code\u003e with \u003ccode\u003eCanonicalize=false\u003c/code\u003e, unlike every other SFTP operation handler. This allows \u003ccode\u003e..\u003c/code\u003e components in the requested path to bypass the \u003ccode\u003eis_within_root/2\u003c/code\u003e check without being resolved. The un-canonicalized path then enters \u003ccode\u003eresolve_symlinks/2\u003c/code\u003e, which walks up the directory tree above the configured root and issues \u003ccode\u003eread_link()\u003c/code\u003e syscalls on arbitrary filesystem paths.\u003c/p\u003e\n\u003cp\u003eAn authenticated SFTP client can exploit this by sending a \u003ccode\u003eREALPATH\u003c/code\u003e request with a crafted traversal path. The server response differs depending on whether the target path exists on the host filesystem (\u003ccode\u003eSSH_FXP_NAME\u003c/code\u003e when the path resolves successfully, \u003ccode\u003eSSH_FX_NO_SUCH_FILE\u003c/code\u003e when it does not). This creates a path-existence oracle that an attacker can use to enumerate the filesystem structure outside the configured root, including the existence of sensitive files, directories, and mount points.\u003c/p\u003e\n\u003cp\u003eThe vulnerability leaks only the existence of paths. No file contents, credentials, or write access are obtainable through this issue alone. The information gained may assist further attacks when combined with other vulnerabilities.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is associated with program files \u003ccode\u003elib/ssh/src/ssh_sftpd.erl\u003c/code\u003e and program routine \u003ccode\u003essh_sftpd:handle_op/4\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue affects OTP from OTP\u0026nbsp;17.0 before OTP\u0026nbsp;27.3.4.14, OTP\u0026nbsp;28.5.0.3, and OTP\u0026nbsp;29.0.3, corresponding to ssh from 3.0.1 before 5.2.11.9, 5.5.2.2, and 6.0.2. Whether OTP before OTP\u0026nbsp;17.0, corresponding to ssh before 3.0.1, is affected is unknown.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "Observable Response Discrepancy vulnerability in Erlang OTP `ssh` (`ssh_sftpd` module) allows an authenticated SFTP user to enumerate the existence of files and directories outside the configured root directory.\n\nThe `SSH_FXP_REALPATH` handler in `ssh_sftpd` calls `relate_file_name/3` with `Canonicalize=false`, unlike every other SFTP operation handler. This allows `..` components in the requested path to bypass the `is_within_root/2` check without being resolved. The un-canonicalized path then enters `resolve_symlinks/2`, which walks up the directory tree above the configured root and issues `read_link()` syscalls on arbitrary filesystem paths.\n\nAn authenticated SFTP client can exploit this by sending a `REALPATH` request with a crafted traversal path. The server response differs depending on whether the target path exists on the host filesystem (`SSH_FXP_NAME` when the path resolves successfully, `SSH_FX_NO_SUCH_FILE` when it does not). This creates a path-existence oracle that an attacker can use to enumerate the filesystem structure outside the configured root, including the existence of sensitive files, directories, and mount points.\n\nThe vulnerability leaks only the existence of paths. No file contents, credentials, or write access are obtainable through this issue alone. The information gained may assist further attacks when combined with other vulnerabilities.\n\nThis vulnerability is associated with program files `lib/ssh/src/ssh_sftpd.erl` and program routine `ssh_sftpd:handle_op/4`.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.14, OTP\u00a028.5.0.3, and OTP\u00a029.0.3, corresponding to ssh from 3.0.1 before 5.2.11.9, 5.5.2.2, and 6.0.2. Whether OTP before OTP\u00a017.0, corresponding to ssh before 3.0.1, is affected is unknown."
}
],
"value": "Observable Response Discrepancy vulnerability in Erlang OTP ssh (ssh_sftpd module) allows an authenticated SFTP user to enumerate the existence of files and directories outside the configured root directory.\n\nThe SSH_FXP_REALPATH handler in ssh_sftpd calls relate_file_name/3 with Canonicalize=false, unlike every other SFTP operation handler. This allows .. components in the requested path to bypass the is_within_root/2 check without being resolved. The un-canonicalized path then enters resolve_symlinks/2, which walks up the directory tree above the configured root and issues read_link() syscalls on arbitrary filesystem paths.\n\nAn authenticated SFTP client can exploit this by sending a REALPATH request with a crafted traversal path. The server response differs depending on whether the target path exists on the host filesystem (SSH_FXP_NAME when the path resolves successfully, SSH_FX_NO_SUCH_FILE when it does not). This creates a path-existence oracle that an attacker can use to enumerate the filesystem structure outside the configured root, including the existence of sensitive files, directories, and mount points.\n\nThe vulnerability leaks only the existence of paths. No file contents, credentials, or write access are obtainable through this issue alone. The information gained may assist further attacks when combined with other vulnerabilities.\n\nThis vulnerability is associated with program files lib/ssh/src/ssh_sftpd.erl and program routine ssh_sftpd:handle_op/4.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.14, OTP\u00a028.5.0.3, and OTP\u00a029.0.3, corresponding to ssh from 3.0.1 before 5.2.11.9, 5.5.2.2, and 6.0.2. Whether OTP before OTP\u00a017.0, corresponding to ssh before 3.0.1, is affected is unknown."
}
],
"impacts": [
{
"capecId": "CAPEC-54",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-54 Query System for Information"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 2.3,
"baseSeverity": "LOW",
"privilegesRequired": "LOW",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "NONE",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-204",
"description": "CWE-204 Observable Response Discrepancy",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-11-11T18:58:19.012Z",
"orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"shortName": "EEF"
},
"references": [
{
"name": "OTP ssh_sftpd REALPATH Path Existence Oracle ( File system Enumeration )",
"tags": [
"vendor-advisory",
"related"
],
"url": "https://github.com/erlang/otp/security/advisories/GHSA-h9pw-h5w4-h976"
},
{
"name": "EEF CNA record for CVE-2026-53422",
"tags": [
"related"
],
"url": "https://cna.erlef.org/cves/CVE-2026-53422.html"
},
{
"name": "OSV record EEF-CVE-2026-53422",
"tags": [
"related"
],
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-53422"
},
{
"name": "Erlang/OTP version ordering",
"tags": [
"x_version-scheme"
],
"url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
},
{
"name": "Fix commit 86622cf in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/86622cfaacf57a02c7645d1999f946846b504c94"
},
{
"name": "Fix commit c5a8f50 in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/c5a8f50ae68888ff243c5c741a06d2b3a4b48b7a"
},
{
"name": "Fix commit 059e578 in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/059e5785ef8c1d423820ca633fb7b37f47645172"
}
],
"source": {
"discovery": "EXTERNAL"
},
"title": "SFTP REALPATH path-existence oracle allowing filesystem enumeration outside configured root",
"workarounds": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cul\u003e\n\u003cli\u003eUse OS-level chroot to run the Erlang VM or SFTP server process in an isolated filesystem environment, eliminating reliance on the application-level \u003ccode\u003eroot\u003c/code\u003e option.\u003c/li\u003e\n\u003cli\u003eEnsure the SFTP server port on the machine running the Erlang/OTP SFTP server is not reachable from untrusted machines.\u003c/li\u003e\n\u003cli\u003eEnsure that no sensitive information (usernames, project names, mount topology) is inferrable from the existence or non-existence of paths on the host filesystem.\u003c/li\u003e\n\u003c/ul\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "* Use OS-level chroot to run the Erlang VM or SFTP server process in an isolated filesystem environment, eliminating reliance on the application-level `root` option.\n* Ensure the SFTP server port on the machine running the Erlang/OTP SFTP server is not reachable from untrusted machines.\n* Ensure that no sensitive information (usernames, project names, mount topology) is inferrable from the existence or non-existence of paths on the host filesystem."
}
],
"value": "* Use OS-level chroot to run the Erlang VM or SFTP server process in an isolated filesystem environment, eliminating reliance on the application-level root option.\n* Ensure the SFTP server port on the machine running the Erlang/OTP SFTP server is not reachable from untrusted machines.\n* Ensure that no sensitive information (usernames, project names, mount topology) is inferrable from the existence or non-existence of paths on the host filesystem."
}
]
}
},
"cveMetadata": {
"assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"assignerShortName": "EEF",
"cveId": "CVE-2026-53422",
"datePublished": "2026-07-02T16:06:03.802Z",
"dateReserved": "2026-06-09T11:01:47.529Z",
"dateUpdated": "2026-11-11T18:58:19.012Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-54886 (GCVE-0-2026-54886)
Vulnerability from cvelistv5 – Published: 2026-07-02 16:06 – Updated: 2026-11-11 18:55| URL | Tags |
|---|---|
| https://github.com/erlang/otp/security/advisories… | vendor-advisoryrelated |
| https://cna.erlef.org/cves/CVE-2026-54886.html | related |
| https://osv.dev/vulnerability/EEF-CVE-2026-54886 | related |
| https://www.erlang.org/doc/system/versions.html#o… | x_version-scheme |
| https://github.com/erlang/otp/commit/eaf9550b8ad4… | patch |
| Vendor | Product | Version | |
|---|---|---|---|
| Erlang | OTP |
Affected:
17.0 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
3.0.1 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
84adefa331c4159d432d22840663c38f155cd4c1 , < eaf9550b8ad4738b81149d3f617102d980c6dd18
(git)
Unaffected: eaf9550b8ad4738b81149d3f617102d980c6dd18 , < * (git) cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-54886",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-07-02T17:27:25.414155Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-07-02T17:27:30.648Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"ssh_sftpd"
],
"packageName": "otp",
"packageURL": "pkg:software-id/erlang.org/otp",
"product": "OTP",
"programFiles": [
"lib/ssh/src/ssh_sftpd.erl"
],
"programRoutines": [
{
"name": "ssh_sftpd:handle_data/4"
}
],
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "27.3.4.14",
"status": "unaffected"
},
{
"at": "28.5.0.3",
"status": "unaffected"
},
{
"at": "29.0.3",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "17.0",
"versionType": "otp"
}
]
},
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"ssh_sftpd"
],
"packageName": "ssh",
"packageURL": "pkg:otp/ssh?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
"product": "OTP",
"programFiles": [
"src/ssh_sftpd.erl"
],
"programRoutines": [
{
"name": "ssh_sftpd:handle_data/4"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "5.2.11.9",
"status": "unaffected"
},
{
"at": "5.5.2.2",
"status": "unaffected"
},
{
"at": "6.0.2",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "3.0.1",
"versionType": "otp"
}
]
},
{
"collectionURL": "https://github.com",
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"modules": [
"ssh_sftpd"
],
"packageName": "erlang/otp",
"packageURL": "pkg:github/erlang/otp",
"product": "OTP",
"programFiles": [
"lib/ssh/src/ssh_sftpd.erl"
],
"programRoutines": [
{
"name": "ssh_sftpd:handle_data/4"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"lessThan": "eaf9550b8ad4738b81149d3f617102d980c6dd18",
"status": "affected",
"version": "84adefa331c4159d432d22840663c38f155cd4c1",
"versionType": "git"
},
{
"lessThan": "*",
"status": "unaffected",
"version": "eaf9550b8ad4738b81149d3f617102d980c6dd18",
"versionType": "git"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "27.3.4.14",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "28.5.0.3",
"versionStartIncluding": "28.0",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "29.0.3",
"versionStartIncluding": "29.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Lukas Backstr\u00f6m"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Micha\u0142 W\u0105sowski"
},
{
"lang": "en",
"type": "remediation reviewer",
"value": "Jakub Witczak"
}
],
"datePublic": "2026-07-02T16:06:20.000Z",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eLoop with Unreachable Exit Condition (\u0027Infinite Loop\u0027) vulnerability in Erlang OTP \u003ccode\u003essh\u003c/code\u003e (\u003ccode\u003essh_sftpd\u003c/code\u003e module) allows an authenticated SFTP user to render an SFTP channel permanently unresponsive.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ehandle_data/4\u003c/code\u003e function in \u003ccode\u003essh_sftpd\u003c/code\u003e contains a catch-all clause that accepts channel data of any type. When channel data with a non-zero type code (\u003ccode\u003eSSH_MSG_CHANNEL_EXTENDED_DATA\u003c/code\u003e) arrives with an empty pending buffer and a payload at or below the SFTP packet size limit, the clause tail-calls itself with identical arguments, creating an infinite loop.\u003c/p\u003e\n\u003cp\u003eThe SFTP protocol operates exclusively on normal channel data (type 0). Extended data (non-zero type) is meaningless for SFTP and is never sent by conforming clients. However, the SSH protocol permits any channel participant to send extended data on an open channel, so an authenticated SFTP client can trigger the loop by sending \u003ccode\u003eSSH_MSG_CHANNEL_EXTENDED_DATA\u003c/code\u003e with any \u003ccode\u003edata_type_code\u003c/code\u003e and any non-empty payload at or below the size limit.\u003c/p\u003e\n\u003cp\u003eThe targeted \u003ccode\u003essh_sftpd\u003c/code\u003e process enters an infinite tail-recursive loop. It never processes another message, its message queue grows without bound, and it can only be stopped by killing the process. BEAM\u0027s reduction-based scheduler preemption continues to function, so other processes on the node are not starved, but each stuck channel process consumes its full CPU time share continuously and accumulates unbounded message queue memory. Opening many channels amplifies the CPU and memory impact.\u003c/p\u003e\n\u003cp\u003eErlang/OTP SSH configurations using the default \u003ccode\u003emax_channels\u003c/code\u003e setting (\u003ccode\u003einfinity\u003c/code\u003e) allow an authenticated user to open unlimited channels per connection, amplifying the attack without requiring multiple TCP connections or authentications.\u003c/p\u003e\n\u003cp\u003eNo file contents, credentials, or write access are obtainable through this issue. The impact is limited to denial of service on targeted SFTP channels, with secondary CPU degradation and memory growth.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is associated with program file \u003ccode\u003elib/ssh/src/ssh_sftpd.erl\u003c/code\u003e and program routine \u003ccode\u003essh_sftpd:handle_data/4\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue affects OTP from OTP\u0026nbsp;17.0 before OTP\u0026nbsp;27.3.4.14, OTP\u0026nbsp;28.5.0.3, and OTP\u0026nbsp;29.0.3, corresponding to ssh from 3.0.1 before 5.2.11.9, 5.5.2.2, and 6.0.2. Whether OTP before OTP\u0026nbsp;17.0, corresponding to ssh before 3.0.1, is affected is unknown.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "Loop with Unreachable Exit Condition (\u0027Infinite Loop\u0027) vulnerability in Erlang OTP `ssh` (`ssh_sftpd` module) allows an authenticated SFTP user to render an SFTP channel permanently unresponsive.\n\nThe `handle_data/4` function in `ssh_sftpd` contains a catch-all clause that accepts channel data of any type. When channel data with a non-zero type code (`SSH_MSG_CHANNEL_EXTENDED_DATA`) arrives with an empty pending buffer and a payload at or below the SFTP packet size limit, the clause tail-calls itself with identical arguments, creating an infinite loop.\n\nThe SFTP protocol operates exclusively on normal channel data (type 0). Extended data (non-zero type) is meaningless for SFTP and is never sent by conforming clients. However, the SSH protocol permits any channel participant to send extended data on an open channel, so an authenticated SFTP client can trigger the loop by sending `SSH_MSG_CHANNEL_EXTENDED_DATA` with any `data_type_code` and any non-empty payload at or below the size limit.\n\nThe targeted `ssh_sftpd` process enters an infinite tail-recursive loop. It never processes another message, its message queue grows without bound, and it can only be stopped by killing the process. BEAM\u0027s reduction-based scheduler preemption continues to function, so other processes on the node are not starved, but each stuck channel process consumes its full CPU time share continuously and accumulates unbounded message queue memory. Opening many channels amplifies the CPU and memory impact.\n\nErlang/OTP SSH configurations using the default `max_channels` setting (`infinity`) allow an authenticated user to open unlimited channels per connection, amplifying the attack without requiring multiple TCP connections or authentications.\n\nNo file contents, credentials, or write access are obtainable through this issue. The impact is limited to denial of service on targeted SFTP channels, with secondary CPU degradation and memory growth.\n\nThis vulnerability is associated with program file `lib/ssh/src/ssh_sftpd.erl` and program routine `ssh_sftpd:handle_data/4`.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.14, OTP\u00a028.5.0.3, and OTP\u00a029.0.3, corresponding to ssh from 3.0.1 before 5.2.11.9, 5.5.2.2, and 6.0.2. Whether OTP before OTP\u00a017.0, corresponding to ssh before 3.0.1, is affected is unknown."
}
],
"value": "Loop with Unreachable Exit Condition (\u0027Infinite Loop\u0027) vulnerability in Erlang OTP ssh (ssh_sftpd module) allows an authenticated SFTP user to render an SFTP channel permanently unresponsive.\n\nThe handle_data/4 function in ssh_sftpd contains a catch-all clause that accepts channel data of any type. When channel data with a non-zero type code (SSH_MSG_CHANNEL_EXTENDED_DATA) arrives with an empty pending buffer and a payload at or below the SFTP packet size limit, the clause tail-calls itself with identical arguments, creating an infinite loop.\n\nThe SFTP protocol operates exclusively on normal channel data (type 0). Extended data (non-zero type) is meaningless for SFTP and is never sent by conforming clients. However, the SSH protocol permits any channel participant to send extended data on an open channel, so an authenticated SFTP client can trigger the loop by sending SSH_MSG_CHANNEL_EXTENDED_DATA with any data_type_code and any non-empty payload at or below the size limit.\n\nThe targeted ssh_sftpd process enters an infinite tail-recursive loop. It never processes another message, its message queue grows without bound, and it can only be stopped by killing the process. BEAM\u0027s reduction-based scheduler preemption continues to function, so other processes on the node are not starved, but each stuck channel process consumes its full CPU time share continuously and accumulates unbounded message queue memory. Opening many channels amplifies the CPU and memory impact.\n\nErlang/OTP SSH configurations using the default max_channels setting (infinity) allow an authenticated user to open unlimited channels per connection, amplifying the attack without requiring multiple TCP connections or authentications.\n\nNo file contents, credentials, or write access are obtainable through this issue. The impact is limited to denial of service on targeted SFTP channels, with secondary CPU degradation and memory growth.\n\nThis vulnerability is associated with program file lib/ssh/src/ssh_sftpd.erl and program routine ssh_sftpd:handle_data/4.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.14, OTP\u00a028.5.0.3, and OTP\u00a029.0.3, corresponding to ssh from 3.0.1 before 5.2.11.9, 5.5.2.2, and 6.0.2. Whether OTP before OTP\u00a017.0, corresponding to ssh before 3.0.1, is affected is unknown."
}
],
"impacts": [
{
"capecId": "CAPEC-130",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-130 Excessive Allocation"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 5.3,
"baseSeverity": "MEDIUM",
"privilegesRequired": "LOW",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "LOW",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "NONE",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-835",
"description": "CWE-835 Loop with Unreachable Exit Condition",
"lang": "en",
"type": "CWE"
}
]
},
{
"descriptions": [
{
"cweId": "CWE-400",
"description": "CWE-400 Uncontrolled Resource Consumption",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-11-11T18:55:39.707Z",
"orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"shortName": "EEF"
},
"references": [
{
"name": "SSH SFTP server denial of service via extended data infinite loop",
"tags": [
"vendor-advisory",
"related"
],
"url": "https://github.com/erlang/otp/security/advisories/GHSA-7wp4-pc27-2vj9"
},
{
"name": "EEF CNA record for CVE-2026-54886",
"tags": [
"related"
],
"url": "https://cna.erlef.org/cves/CVE-2026-54886.html"
},
{
"name": "OSV record EEF-CVE-2026-54886",
"tags": [
"related"
],
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-54886"
},
{
"name": "Erlang/OTP version ordering",
"tags": [
"x_version-scheme"
],
"url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
},
{
"name": "Fix commit eaf9550 in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/eaf9550b8ad4738b81149d3f617102d980c6dd18"
}
],
"source": {
"discovery": "EXTERNAL"
},
"title": "SSH SFTP server denial of service via extended channel data infinite loop",
"workarounds": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cul\u003e\n\u003cli\u003eSet the \u003ccode\u003emax_channels\u003c/code\u003e daemon option to a finite value (e.g., \u003ccode\u003e{max_channels, 10}\u003c/code\u003e) to limit the number of channels an attacker can open per connection.\u003c/li\u003e\n\u003cli\u003eSet the \u003ccode\u003emax_sessions\u003c/code\u003e daemon option to limit total concurrent SSH connections to the daemon.\u003c/li\u003e\n\u003cli\u003eUse external process monitoring to detect and kill \u003ccode\u003essh_sftpd\u003c/code\u003e processes with abnormally high reduction counts and growing message queues.\u003c/li\u003e\n\u003cli\u003eEnsure that the SFTP server port is not reachable from untrusted machines.\u003c/li\u003e\n\u003c/ul\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "* Set the `max_channels` daemon option to a finite value (e.g., `{max_channels, 10}`) to limit the number of channels an attacker can open per connection.\n* Set the `max_sessions` daemon option to limit total concurrent SSH connections to the daemon.\n* Use external process monitoring to detect and kill `ssh_sftpd` processes with abnormally high reduction counts and growing message queues.\n* Ensure that the SFTP server port is not reachable from untrusted machines."
}
],
"value": "* Set the max_channels daemon option to a finite value (e.g., {max_channels, 10}) to limit the number of channels an attacker can open per connection.\n* Set the max_sessions daemon option to limit total concurrent SSH connections to the daemon.\n* Use external process monitoring to detect and kill ssh_sftpd processes with abnormally high reduction counts and growing message queues.\n* Ensure that the SFTP server port is not reachable from untrusted machines."
}
]
}
},
"cveMetadata": {
"assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"assignerShortName": "EEF",
"cveId": "CVE-2026-54886",
"datePublished": "2026-07-02T16:06:20.502Z",
"dateReserved": "2026-06-16T10:47:13.914Z",
"dateUpdated": "2026-11-11T18:55:39.707Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-54887 (GCVE-0-2026-54887)
Vulnerability from cvelistv5 – Published: 2026-07-02 16:06 – Updated: 2026-11-11 18:50- CWE-1394 - Use of Default Cryptographic Key
| URL | Tags |
|---|---|
| https://github.com/erlang/otp/security/advisories… | vendor-advisoryrelated |
| https://cna.erlef.org/cves/CVE-2026-54887.html | related |
| https://osv.dev/vulnerability/EEF-CVE-2026-54887 | related |
| https://www.erlang.org/doc/system/versions.html#o… | x_version-scheme |
| https://github.com/erlang/otp/commit/e594aad2f87a… | related |
| https://github.com/erlang/otp/commit/888e3bcd72d5… | patch |
| Vendor | Product | Version | |
|---|---|---|---|
| Erlang | OTP |
Affected:
20.0 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
8.2 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
e594aad2f87aab39e99fccf9e021bc94e0bbf7d4 , < 888e3bcd72d5406016b9e0de741026bc2a6f114d
(git)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-54887",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-07-02T17:28:36.936306Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-07-02T17:28:43.784Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"dtls_server_connection"
],
"packageName": "otp",
"packageURL": "pkg:software-id/erlang.org/otp",
"product": "OTP",
"programFiles": [
"lib/ssl/src/dtls_server_connection.erl"
],
"programRoutines": [
{
"name": "dtls_server_connection:initial_hello/3"
}
],
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "27.3.4.14",
"status": "unaffected"
},
{
"at": "28.5.0.3",
"status": "unaffected"
},
{
"at": "29.0.3",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "20.0",
"versionType": "otp"
}
]
},
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"dtls_server_connection"
],
"packageName": "ssl",
"packageURL": "pkg:otp/ssl?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
"product": "OTP",
"programFiles": [
"src/dtls_server_connection.erl"
],
"programRoutines": [
{
"name": "dtls_server_connection:initial_hello/3"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "11.2.12.10",
"status": "unaffected"
},
{
"at": "11.6.0.3",
"status": "unaffected"
},
{
"at": "11.7.3",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "8.2",
"versionType": "otp"
}
]
},
{
"collectionURL": "https://github.com",
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"dtls_server_connection"
],
"packageName": "erlang/otp",
"packageURL": "pkg:github/erlang/otp",
"product": "OTP",
"programFiles": [
"lib/ssl/src/dtls_server_connection.erl"
],
"programRoutines": [
{
"name": "dtls_server_connection:initial_hello/3"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"lessThan": "888e3bcd72d5406016b9e0de741026bc2a6f114d",
"status": "affected",
"version": "e594aad2f87aab39e99fccf9e021bc94e0bbf7d4",
"versionType": "git"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "27.3.4.14",
"versionStartIncluding": "20.0",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "28.5.0.3",
"versionStartIncluding": "28.0",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "29.0.3",
"versionStartIncluding": "29.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Lukas Backstr\u00f6m"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Ingela Anderton Andin"
},
{
"lang": "en",
"type": "remediation reviewer",
"value": "Dan Gudmundsson"
}
],
"datePublic": "2026-07-02T16:06:04.000Z",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eUse of Default Cryptographic Key vulnerability in Erlang/OTP ssl (DTLS server) allows predictable DTLS cookie computation during the startup window, enabling source address verification bypass.\u003c/p\u003e\n\u003cp\u003eOn DTLS server startup, \u003ccode\u003edtls_server_connection:initial_hello/3\u003c/code\u003e initializes \u003ccode\u003eprevious_cookie_secret\u003c/code\u003e to the empty binary (\u003ccode\u003e\u0026lt;\u0026lt;\u0026gt;\u0026gt;\u003c/code\u003e) instead of a random value. Because HMAC with an empty key is deterministic, anyone who observes the plaintext \u003ccode\u003eClientHello\u003c/code\u003e can compute \u003ccode\u003edtls_handshake:cookie(\u0026lt;\u0026lt;\u0026gt;\u0026gt;, IP, Port, Hello)\u003c/code\u003e and forge a valid DTLS cookie before the first rotation of the cookie secret. The DTLS cookie (RFC 6347 \u00a74.2.1) is a denial-of-service mitigation that prevents spoofed source IPs from forcing the server to allocate state and perform expensive cryptographic operations; it is not an authentication mechanism. During the window from server startup until the first secret rotation (0 to 15 seconds), an attacker who can observe the plaintext \u003ccode\u003eClientHello\u003c/code\u003e can bypass the source address verification, enabling DTLS handshake amplification with spoofed source addresses.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is associated with program file \u003ccode\u003elib/ssl/src/dtls_server_connection.erl\u003c/code\u003e and program routine \u003ccode\u003edtls_server_connection:initial_hello/3\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue affects OTP from OTP\u0026nbsp;20.0 before OTP\u0026nbsp;27.3.4.14, OTP\u0026nbsp;28.5.0.3, and OTP\u0026nbsp;29.0.3, corresponding to ssl from 8.2 before 11.2.12.10, 11.6.0.3, and 11.7.3.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "Use of Default Cryptographic Key vulnerability in Erlang/OTP ssl (DTLS server) allows predictable DTLS cookie computation during the startup window, enabling source address verification bypass.\n\nOn DTLS server startup, `dtls_server_connection:initial_hello/3` initializes `previous_cookie_secret` to the empty binary (`\u003c\u003c\u003e\u003e`) instead of a random value. Because HMAC with an empty key is deterministic, anyone who observes the plaintext `ClientHello` can compute `dtls_handshake:cookie(\u003c\u003c\u003e\u003e, IP, Port, Hello)` and forge a valid DTLS cookie before the first rotation of the cookie secret. The DTLS cookie (RFC 6347 \u00a74.2.1) is a denial-of-service mitigation that prevents spoofed source IPs from forcing the server to allocate state and perform expensive cryptographic operations; it is not an authentication mechanism. During the window from server startup until the first secret rotation (0 to 15 seconds), an attacker who can observe the plaintext `ClientHello` can bypass the source address verification, enabling DTLS handshake amplification with spoofed source addresses.\n\nThis vulnerability is associated with program file `lib/ssl/src/dtls_server_connection.erl` and program routine `dtls_server_connection:initial_hello/3`.\n\nThis issue affects OTP from OTP\u00a020.0 before OTP\u00a027.3.4.14, OTP\u00a028.5.0.3, and OTP\u00a029.0.3, corresponding to ssl from 8.2 before 11.2.12.10, 11.6.0.3, and 11.7.3."
}
],
"value": "Use of Default Cryptographic Key vulnerability in Erlang/OTP ssl (DTLS server) allows predictable DTLS cookie computation during the startup window, enabling source address verification bypass.\n\nOn DTLS server startup, dtls_server_connection:initial_hello/3 initializes previous_cookie_secret to the empty binary (\u003c\u003c\u003e\u003e) instead of a random value. Because HMAC with an empty key is deterministic, anyone who observes the plaintext ClientHello can compute dtls_handshake:cookie(\u003c\u003c\u003e\u003e, IP, Port, Hello) and forge a valid DTLS cookie before the first rotation of the cookie secret. The DTLS cookie (RFC 6347 \u00a74.2.1) is a denial-of-service mitigation that prevents spoofed source IPs from forcing the server to allocate state and perform expensive cryptographic operations; it is not an authentication mechanism. During the window from server startup until the first secret rotation (0 to 15 seconds), an attacker who can observe the plaintext ClientHello can bypass the source address verification, enabling DTLS handshake amplification with spoofed source addresses.\n\nThis vulnerability is associated with program file lib/ssl/src/dtls_server_connection.erl and program routine dtls_server_connection:initial_hello/3.\n\nThis issue affects OTP from OTP\u00a020.0 before OTP\u00a027.3.4.14, OTP\u00a028.5.0.3, and OTP\u00a029.0.3, corresponding to ssl from 8.2 before 11.2.12.10, 11.6.0.3, and 11.7.3."
}
],
"impacts": [
{
"capecId": "CAPEC-485",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-485 Signature Spoofing by Key Recreation"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 6.3,
"baseSeverity": "MEDIUM",
"privilegesRequired": "NONE",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "LOW",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "NONE",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-1394",
"description": "CWE-1394 Use of Default Cryptographic Key",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-11-11T18:50:00.580Z",
"orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"shortName": "EEF"
},
"references": [
{
"name": "DTLS Cookie Bypass During Startup",
"tags": [
"vendor-advisory",
"related"
],
"url": "https://github.com/erlang/otp/security/advisories/GHSA-p2m2-3c2w-8jp8"
},
{
"name": "EEF CNA record for CVE-2026-54887",
"tags": [
"related"
],
"url": "https://cna.erlef.org/cves/CVE-2026-54887.html"
},
{
"name": "OSV record EEF-CVE-2026-54887",
"tags": [
"related"
],
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-54887"
},
{
"name": "Erlang/OTP version ordering",
"tags": [
"x_version-scheme"
],
"url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
},
{
"name": "Introducing commit e594aad in erlang/otp",
"tags": [
"related"
],
"url": "https://github.com/erlang/otp/commit/e594aad2f87aab39e99fccf9e021bc94e0bbf7d4"
},
{
"name": "Fix commit 888e3bc in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/888e3bcd72d5406016b9e0de741026bc2a6f114d"
}
],
"source": {
"discovery": "INTERNAL"
},
"title": "DTLS server cookie bypass during startup window due to empty initial cookie secret"
}
},
"cveMetadata": {
"assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"assignerShortName": "EEF",
"cveId": "CVE-2026-54887",
"datePublished": "2026-07-02T16:06:04.156Z",
"dateReserved": "2026-06-16T10:47:13.915Z",
"dateUpdated": "2026-11-11T18:50:00.580Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-54891 (GCVE-0-2026-54891)
Vulnerability from cvelistv5 – Published: 2026-07-02 16:06 – Updated: 2026-09-08 01:06- CWE-924 - Improper Enforcement of Message Integrity During Transmission in a Communication Channel
| URL | Tags |
|---|---|
| https://github.com/erlang/otp/security/advisories… | vendor-advisoryrelated |
| https://cna.erlef.org/cves/CVE-2026-54891.html | related |
| https://osv.dev/vulnerability/EEF-CVE-2026-54891 | related |
| https://www.erlang.org/doc/system/versions.html#o… | x_version-scheme |
| https://github.com/erlang/otp/commit/07d2d0e93f6a… | patch |
| Vendor | Product | Version | |
|---|---|---|---|
| Erlang | OTP |
Unknown:
0 , < 17.0
(otp)
Affected: 17.0 , < 27.3.4.14 (otp) Affected: 28.0 , < 28.5.0.3 (otp) Affected: 29.0 , < 29.0.3 (otp) cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Unknown:
0 , < 5.3.4
(otp)
Affected: 5.3.4 , < 11.2.12.10 (otp) Affected: 11.3 , < 11.6.0.3 (otp) Affected: 11.7 , < 11.7.3 (otp) cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
84adefa331c4159d432d22840663c38f155cd4c1 , < 07d2d0e93f6aaf7652a81e8df075fc1728da5e96
(git)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-54891",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-07-02T17:24:44.468465Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-07-02T17:24:50.025Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"tls_gen_connection"
],
"packageName": "otp",
"packageURL": "pkg:software-id/erlang.org/otp",
"product": "OTP",
"programFiles": [
"lib/ssl/src/tls_gen_connection.erl"
],
"programRoutines": [
{
"name": "tls_gen_connection:handle_protocol_record/3"
}
],
"vendor": "Erlang",
"versions": [
{
"lessThan": "17.0",
"status": "unknown",
"version": "0",
"versionType": "otp"
},
{
"lessThan": "27.3.4.14",
"status": "affected",
"version": "17.0",
"versionType": "otp"
},
{
"lessThan": "28.5.0.3",
"status": "affected",
"version": "28.0",
"versionType": "otp"
},
{
"lessThan": "29.0.3",
"status": "affected",
"version": "29.0",
"versionType": "otp"
}
]
},
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"tls_gen_connection"
],
"packageName": "ssl",
"packageURL": "pkg:otp/ssl?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
"product": "OTP",
"programFiles": [
"src/tls_gen_connection.erl"
],
"programRoutines": [
{
"name": "tls_gen_connection:handle_protocol_record/3"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"lessThan": "5.3.4",
"status": "unknown",
"version": "0",
"versionType": "otp"
},
{
"lessThan": "11.2.12.10",
"status": "affected",
"version": "5.3.4",
"versionType": "otp"
},
{
"lessThan": "11.6.0.3",
"status": "affected",
"version": "11.3",
"versionType": "otp"
},
{
"lessThan": "11.7.3",
"status": "affected",
"version": "11.7",
"versionType": "otp"
}
]
},
{
"collectionURL": "https://github.com",
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"tls_gen_connection"
],
"packageName": "erlang/otp",
"packageURL": "pkg:github/erlang/otp",
"product": "OTP",
"programFiles": [
"lib/ssl/src/tls_gen_connection.erl"
],
"programRoutines": [
{
"name": "tls_gen_connection:handle_protocol_record/3"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"lessThan": "07d2d0e93f6aaf7652a81e8df075fc1728da5e96",
"status": "affected",
"version": "84adefa331c4159d432d22840663c38f155cd4c1",
"versionType": "git"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "27.3.4.14",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "28.5.0.3",
"versionStartIncluding": "28.0",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "29.0.3",
"versionStartIncluding": "29.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Lukas Backstr\u00f6m"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Ingela Anderton Andin"
},
{
"lang": "en",
"type": "remediation reviewer",
"value": "Dan Gudmundsson"
},
{
"lang": "en",
"type": "remediation reviewer",
"value": "Jakub Witczak"
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eImproper Enforcement of Message Integrity During Transmission in a Communication Channel vulnerability in Erlang/OTP ssl (tls_gen_connection module) allows a network-positioned attacker to inject unauthenticated plaintext that the TLS client application later treats as authenticated server data.\u003c/p\u003e\n\u003cp\u003eThe function \u003ccode\u003etls_gen_connection:handle_protocol_record/3\u003c/code\u003e rejects \u003ccode\u003eAPPLICATION_DATA\u003c/code\u003e records that arrive in pre-handshake states when the TLS endpoint acts as a server, but does not apply the same check when the endpoint acts as a client. A network-positioned attacker can send plaintext \u003ccode\u003eAPPLICATION_DATA\u003c/code\u003e records to the client during the handshake. The records are buffered and, once the handshake completes successfully, delivered to the application as if they were authenticated post-handshake data. The attacker cannot observe the client\u0027s response or steer the connection, so the impact is limited to blind injection of unauthenticated bytes. The injection window is wider for TLS versions prior to TLS 1.3 than for TLS 1.3.\u003c/p\u003e\n\u003cp\u003eThis vulnerability is associated with program file \u003ccode\u003elib/ssl/src/tls_gen_connection.erl\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eTLS 1.3 is affected starting with OTP\u0026nbsp;22.0, when TLS 1.3 support was added.\u003c/p\u003e\n\u003cp\u003eThis issue affects OTP from OTP\u0026nbsp;17.0 before OTP\u0026nbsp;27.3.4.14, from OTP\u0026nbsp;28.0 before OTP\u0026nbsp;28.5.0.3, and from OTP\u0026nbsp;29.0 before OTP\u0026nbsp;29.0.3, corresponding to ssl from 5.3.4 before 11.2.12.10, from 11.3 before 11.6.0.3, and from 11.7 before 11.7.3. Whether OTP before OTP\u0026nbsp;17.0, corresponding to ssl before 5.3.4, is affected is unknown.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "Improper Enforcement of Message Integrity During Transmission in a Communication Channel vulnerability in Erlang/OTP ssl (tls_gen_connection module) allows a network-positioned attacker to inject unauthenticated plaintext that the TLS client application later treats as authenticated server data.\n\nThe function `tls_gen_connection:handle_protocol_record/3` rejects `APPLICATION_DATA` records that arrive in pre-handshake states when the TLS endpoint acts as a server, but does not apply the same check when the endpoint acts as a client. A network-positioned attacker can send plaintext `APPLICATION_DATA` records to the client during the handshake. The records are buffered and, once the handshake completes successfully, delivered to the application as if they were authenticated post-handshake data. The attacker cannot observe the client\u0027s response or steer the connection, so the impact is limited to blind injection of unauthenticated bytes. The injection window is wider for TLS versions prior to TLS 1.3 than for TLS 1.3.\n\nThis vulnerability is associated with program file `lib/ssl/src/tls_gen_connection.erl`.\n\nTLS 1.3 is affected starting with OTP\u0026nbsp;22.0, when TLS 1.3 support was added.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.14, from OTP\u00a028.0 before OTP\u00a028.5.0.3, and from OTP\u00a029.0 before OTP\u00a029.0.3, corresponding to ssl from 5.3.4 before 11.2.12.10, from 11.3 before 11.6.0.3, and from 11.7 before 11.7.3. Whether OTP before OTP\u00a017.0, corresponding to ssl before 5.3.4, is affected is unknown."
}
],
"value": "Improper Enforcement of Message Integrity During Transmission in a Communication Channel vulnerability in Erlang/OTP ssl (tls_gen_connection module) allows a network-positioned attacker to inject unauthenticated plaintext that the TLS client application later treats as authenticated server data.\n\nThe function tls_gen_connection:handle_protocol_record/3 rejects APPLICATION_DATA records that arrive in pre-handshake states when the TLS endpoint acts as a server, but does not apply the same check when the endpoint acts as a client. A network-positioned attacker can send plaintext APPLICATION_DATA records to the client during the handshake. The records are buffered and, once the handshake completes successfully, delivered to the application as if they were authenticated post-handshake data. The attacker cannot observe the client\u0027s response or steer the connection, so the impact is limited to blind injection of unauthenticated bytes. The injection window is wider for TLS versions prior to TLS 1.3 than for TLS 1.3.\n\nThis vulnerability is associated with program file lib/ssl/src/tls_gen_connection.erl.\n\nTLS 1.3 is affected starting with OTP\u00a022.0, when TLS 1.3 support was added.\n\nThis issue affects OTP from OTP\u00a017.0 before OTP\u00a027.3.4.14, from OTP\u00a028.0 before OTP\u00a028.5.0.3, and from OTP\u00a029.0 before OTP\u00a029.0.3, corresponding to ssl from 5.3.4 before 11.2.12.10, from 11.3 before 11.6.0.3, and from 11.7 before 11.7.3. Whether OTP before OTP\u00a017.0, corresponding to ssl before 5.3.4, is affected is unknown."
}
],
"impacts": [
{
"capecId": "CAPEC-94",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-94 Adversary in the Middle (AiTM)"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "HIGH",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 6.3,
"baseSeverity": "MEDIUM",
"privilegesRequired": "NONE",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "LOW",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-924",
"description": "CWE-924 Improper Enforcement of Message Integrity During Transmission in a Communication Channel",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-09-08T01:06:03.832Z",
"orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"shortName": "EEF"
},
"references": [
{
"tags": [
"vendor-advisory",
"related"
],
"url": "https://github.com/erlang/otp/security/advisories/GHSA-gf6r-99xw-6qg6"
},
{
"tags": [
"related"
],
"url": "https://cna.erlef.org/cves/CVE-2026-54891.html"
},
{
"tags": [
"related"
],
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-54891"
},
{
"tags": [
"x_version-scheme"
],
"url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
},
{
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/07d2d0e93f6aaf7652a81e8df075fc1728da5e96"
}
],
"source": {
"discovery": "INTERNAL"
},
"title": "Plaintext APPLICATION_DATA injected during TLS handshake delivered to client application post-handshake in ssl"
}
},
"cveMetadata": {
"assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"assignerShortName": "EEF",
"cveId": "CVE-2026-54891",
"datePublished": "2026-07-02T16:06:30.982Z",
"dateReserved": "2026-06-16T10:47:13.915Z",
"dateUpdated": "2026-09-08T01:06:03.832Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
CVE-2026-55952 (GCVE-0-2026-55952)
Vulnerability from cvelistv5 – Published: 2026-07-02 16:06 – Updated: 2026-11-11 14:58- CWE-1284 - Improper Validation of Specified Quantity in Input
| URL | Tags |
|---|---|
| https://github.com/erlang/otp/security/advisories… | vendor-advisoryrelated |
| https://cna.erlef.org/cves/CVE-2026-55952.html | related |
| https://osv.dev/vulnerability/EEF-CVE-2026-55952 | related |
| https://www.erlang.org/doc/system/versions.html#o… | x_version-scheme |
| https://github.com/erlang/otp/commit/339a279f02ce… | related |
| https://github.com/erlang/otp/commit/095f744713c3… | patch |
| https://github.com/erlang/otp/commit/e77823e6d980… | patch |
| https://github.com/erlang/otp/commit/2c3e59979764… | patch |
| https://github.com/erlang/otp/commit/9b5437c72fa3… | patch |
| Vendor | Product | Version | |
|---|---|---|---|
| Erlang | OTP |
Affected:
22.2 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
9.5 , < *
(otp)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
|
| Erlang | OTP |
Affected:
339a279f02ce38a7b23010e56000613e19abb21f , < *
(git)
cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:* |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-55952",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-07-02T17:28:09.569991Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-07-02T17:28:15.681Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"tls_handshake_1_3"
],
"packageName": "otp",
"packageURL": "pkg:software-id/erlang.org/otp",
"product": "OTP",
"programFiles": [
"lib/ssl/src/tls_handshake_1_3.erl"
],
"programRoutines": [
{
"name": "tls_handshake_1_3:handle_pre_shared_key/3"
}
],
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "27.3.4.14",
"status": "unaffected"
},
{
"at": "28.5.0.3",
"status": "unaffected"
},
{
"at": "29.0.3",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "22.2",
"versionType": "otp"
}
]
},
{
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"tls_handshake_1_3"
],
"packageName": "ssl",
"packageURL": "pkg:otp/ssl?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
"product": "OTP",
"programFiles": [
"src/tls_handshake_1_3.erl"
],
"programRoutines": [
{
"name": "tls_handshake_1_3:handle_pre_shared_key/3"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "11.2.12.10",
"status": "unaffected"
},
{
"at": "11.6.0.3",
"status": "unaffected"
},
{
"at": "11.7.3",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "9.5",
"versionType": "otp"
}
]
},
{
"collectionURL": "https://github.com",
"cpes": [
"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unaffected",
"modules": [
"tls_handshake_1_3"
],
"packageName": "erlang/otp",
"packageURL": "pkg:github/erlang/otp",
"product": "OTP",
"programFiles": [
"lib/ssl/src/tls_handshake_1_3.erl"
],
"programRoutines": [
{
"name": "tls_handshake_1_3:handle_pre_shared_key/3"
}
],
"repo": "https://github.com/erlang/otp",
"vendor": "Erlang",
"versions": [
{
"changes": [
{
"at": "095f744713c325acdbd18c23e397f04593c06275",
"status": "unaffected"
},
{
"at": "e77823e6d980b2ec0b4fe4ea3f2d098ca239e3ce",
"status": "unaffected"
},
{
"at": "2c3e599797644310e5d4aa39c7193420e59dadff",
"status": "unaffected"
},
{
"at": "9b5437c72fa3403a75c1aba28e5c532bc191c662",
"status": "unaffected"
}
],
"lessThan": "*",
"status": "affected",
"version": "339a279f02ce38a7b23010e56000613e19abb21f",
"versionType": "git"
}
]
}
],
"configurations": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eThe vulnerability only affects TLS 1.3 servers that have session tickets enabled (either stateful or stateless mode). TLS 1.2 connections and clients are not affected.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "The vulnerability only affects TLS 1.3 servers that have session tickets enabled (either stateful or stateless mode). TLS 1.2 connections and clients are not affected."
}
],
"value": "The vulnerability only affects TLS 1.3 servers that have session tickets enabled (either stateful or stateless mode). TLS 1.2 connections and clients are not affected."
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "27.3.4.14",
"versionStartIncluding": "22.2",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "28.5.0.3",
"versionStartIncluding": "28.0",
"vulnerable": true
},
{
"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
"versionEndExcluding": "29.0.3",
"versionStartIncluding": "29.0",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
],
"operator": "AND"
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Lukas Backstr\u00f6m"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Ingela Anderton Andin"
},
{
"lang": "en",
"type": "remediation reviewer",
"value": "Dan Gudmundsson"
},
{
"lang": "en",
"type": "remediation reviewer",
"value": "Jakub Witczak"
}
],
"datePublic": "2026-07-02T16:06:08.000Z",
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eThe Erlang/OTP \u003ccode\u003essl\u003c/code\u003e application does not validate that the PSK identity list and binder list carried in a TLS 1.3 \u003ccode\u003eClientHello\u003c/code\u003e pre-shared key extension have equal length before passing them to the session ticket handler. In \u003ccode\u003etls_handshake_1_3:handle_pre_shared_key/3\u003c/code\u003e, an \u003ccode\u003eOfferedPreSharedKeys\u003c/code\u003e record with a mismatched number of identities and binders is forwarded directly to \u003ccode\u003etls_server_session_ticket:use/4\u003c/code\u003e, which crashes the session ticket handler process.\u003c/p\u003e\n\u003cp\u003eAn unauthenticated remote attacker can send a single crafted \u003ccode\u003eClientHello\u003c/code\u003e to a TLS 1.3 server with session tickets enabled (stateful or stateless mode) and permanently disrupt session ticket handling on that listener. New TLS 1.3 handshakes complete but subsequently crash when the server attempts to issue a session ticket, effectively making TLS 1.3 unusable on the affected listener until the \u003ccode\u003essl\u003c/code\u003e application is restarted. TLS 1.2 connections are not affected.\u003c/p\u003e\n\u003cp\u003eThis issue affects OTP from OTP\u0026nbsp;22.2 before OTP\u0026nbsp;27.3.4.14, OTP\u0026nbsp;28.5.0.3, and OTP\u0026nbsp;29.0.3, corresponding to ssl from 9.5 before 11.2.12.10, 11.6.0.3, and 11.7.3.\u003c/p\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "The Erlang/OTP `ssl` application does not validate that the PSK identity list and binder list carried in a TLS 1.3 `ClientHello` pre-shared key extension have equal length before passing them to the session ticket handler. In `tls_handshake_1_3:handle_pre_shared_key/3`, an `OfferedPreSharedKeys` record with a mismatched number of identities and binders is forwarded directly to `tls_server_session_ticket:use/4`, which crashes the session ticket handler process.\n\nAn unauthenticated remote attacker can send a single crafted `ClientHello` to a TLS 1.3 server with session tickets enabled (stateful or stateless mode) and permanently disrupt session ticket handling on that listener. New TLS 1.3 handshakes complete but subsequently crash when the server attempts to issue a session ticket, effectively making TLS 1.3 unusable on the affected listener until the `ssl` application is restarted. TLS 1.2 connections are not affected.\n\nThis issue affects OTP from OTP\u00a022.2 before OTP\u00a027.3.4.14, OTP\u00a028.5.0.3, and OTP\u00a029.0.3, corresponding to ssl from 9.5 before 11.2.12.10, 11.6.0.3, and 11.7.3."
}
],
"value": "The Erlang/OTP ssl application does not validate that the PSK identity list and binder list carried in a TLS 1.3 ClientHello pre-shared key extension have equal length before passing them to the session ticket handler. In tls_handshake_1_3:handle_pre_shared_key/3, an OfferedPreSharedKeys record with a mismatched number of identities and binders is forwarded directly to tls_server_session_ticket:use/4, which crashes the session ticket handler process.\n\nAn unauthenticated remote attacker can send a single crafted ClientHello to a TLS 1.3 server with session tickets enabled (stateful or stateless mode) and permanently disrupt session ticket handling on that listener. New TLS 1.3 handshakes complete but subsequently crash when the server attempts to issue a session ticket, effectively making TLS 1.3 unusable on the affected listener until the ssl application is restarted. TLS 1.2 connections are not affected.\n\nThis issue affects OTP from OTP\u00a022.2 before OTP\u00a027.3.4.14, OTP\u00a028.5.0.3, and OTP\u00a029.0.3, corresponding to ssl from 9.5 before 11.2.12.10, 11.6.0.3, and 11.7.3."
}
],
"impacts": [
{
"capecId": "CAPEC-153",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-153 Input Data Manipulation"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "NETWORK",
"baseScore": 8.2,
"baseSeverity": "HIGH",
"privilegesRequired": "NONE",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "HIGH",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "NONE",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-1284",
"description": "CWE-1284 Improper Validation of Specified Quantity in Input",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-11-11T14:58:32.325Z",
"orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"shortName": "EEF"
},
"references": [
{
"name": "Denial-of-Service for TLS-1.3 server Using Session Tickets",
"tags": [
"vendor-advisory",
"related"
],
"url": "https://github.com/erlang/otp/security/advisories/GHSA-8c57-44c9-pc59"
},
{
"name": "EEF CNA record for CVE-2026-55952",
"tags": [
"related"
],
"url": "https://cna.erlef.org/cves/CVE-2026-55952.html"
},
{
"name": "OSV record EEF-CVE-2026-55952",
"tags": [
"related"
],
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-55952"
},
{
"name": "Erlang/OTP version ordering",
"tags": [
"x_version-scheme"
],
"url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
},
{
"name": "Introducing commit 339a279 in erlang/otp",
"tags": [
"related"
],
"url": "https://github.com/erlang/otp/commit/339a279f02ce38a7b23010e56000613e19abb21f"
},
{
"name": "Fix commit 095f744 in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/095f744713c325acdbd18c23e397f04593c06275"
},
{
"name": "Fix commit e77823e in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/e77823e6d980b2ec0b4fe4ea3f2d098ca239e3ce"
},
{
"name": "Fix commit 2c3e599 in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/2c3e599797644310e5d4aa39c7193420e59dadff"
},
{
"name": "Fix commit 9b5437c in erlang/otp",
"tags": [
"patch"
],
"url": "https://github.com/erlang/otp/commit/9b5437c72fa3403a75c1aba28e5c532bc191c662"
}
],
"source": {
"discovery": "INTERNAL"
},
"title": "TLS 1.3 server denial of service via malformed ClientHello pre-shared key extension",
"workarounds": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cul\u003e\n\u003cli\u003eDisable session tickets on TLS 1.3 servers by setting \u003ccode\u003esession_tickets\u003c/code\u003e to \u003ccode\u003edisabled\u003c/code\u003e in the server\u0027s \u003ccode\u003essl\u003c/code\u003e options.\u003c/li\u003e\n\u003cli\u003eRestrict the server to TLS 1.2 by setting \u003ccode\u003eversions\u003c/code\u003e to \u003ccode\u003e[\u0027tlsv1.2\u0027]\u003c/code\u003e in the server\u0027s \u003ccode\u003essl\u003c/code\u003e options.\u003c/li\u003e\n\u003c/ul\u003e"
},
{
"base64": false,
"type": "text/markdown",
"value": "* Disable session tickets on TLS 1.3 servers by setting `session_tickets` to `disabled` in the server\u0027s `ssl` options.\n* Restrict the server to TLS 1.2 by setting `versions` to `[\u0027tlsv1.2\u0027]` in the server\u0027s `ssl` options."
}
],
"value": "* Disable session tickets on TLS 1.3 servers by setting session_tickets to disabled in the server\u0027s ssl options.\n* Restrict the server to TLS 1.2 by setting versions to [\u0027tlsv1.2\u0027] in the server\u0027s ssl options."
}
]
}
},
"cveMetadata": {
"assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"assignerShortName": "EEF",
"cveId": "CVE-2026-55952",
"datePublished": "2026-07-02T16:06:08.474Z",
"dateReserved": "2026-06-17T17:55:15.686Z",
"dateUpdated": "2026-11-11T14:58:32.325Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
How durations are calculated
Following the VTEM framework (Black Hat USA 2015), time to patch starts when the vendor or a coordinator was informed, total time to patch at discovery, and disclosure to patch at public disclosure; vendor response time runs from the report to its acknowledgement. Time to exploit and time unpatched start at the earliest discovery or report, falling back to public disclosure. Unpatched time ends at the first recorded patch, or the calculation time when no patch is recorded. Exploitation to patch shows the interval between those two events; a published proof of concept is a public exploit, not exploitation.
Each result shows its source dates. A negative interval means the end event came first; when date-only inputs leave the order open, the result says so. Date-only inputs are approximate. The earliest evidence wins: KEV report dates and sightings are labelled as such. Records describing another vulnerability are listed but never calculated from, and a PoC alone does not establish exploitation. Missing patch evidence does not prove that no patch exists. Filters below change the event list only.
Loading timeline…
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.