Description
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 before OTP 27.3.4.14, OTP 28.5.0.3, and OTP 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 17.0, corresponding to ssh before 3.0.1, is affected is unknown.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| Erlang | OTP | 17.0, 3.0.1 | — |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | erlang | 1:29.0.3+dfsg-1 | — |
| Debian 13 | erlang | 1:27.3.4.1+dfsg-1+deb13u3 | — |
| Debian 12 | erlang | No fix yet | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 26.04 LTS | erlang | 1:27.3.4.6+dfsg-1ubuntu0.2 | USN-8901-1 |
| Ubuntu 25.10 | erlang | No fix yet | — |
| Ubuntu 24.04 LTS | erlang | 1:25.3.2.8+dfsg-1ubuntu4.8 | USN-8901-1 |
| Ubuntu 22.04 LTS | erlang | 1:24.2.1+dfsg-1ubuntu0.8 | USN-8901-1 |
Show 4 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu Pro 20.04 LTS | erlang | 1:22.2.7+dfsg-1ubuntu0.5+esm3 | USN-8901-1 |
| Ubuntu Pro 18.04 LTS | erlang | 1:20.2.2+dfsg-1ubuntu2+esm4 | USN-8901-1 |
| Ubuntu Pro 16.04 LTS | erlang | 1:18.3-dfsg-1ubuntu3.1+esm4 | USN-8901-1 |
| Ubuntu Pro 14.04 LTS | erlang | 1:16.b.3-dfsg-1ubuntu2.2+esm3 | USN-8901-1 |
Red Hat
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Red Hat Hardened Images 1 | erlang27 +38 | 27.3.4.14-1.hum1 | RHSA-2026:35998 |
SUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES 15 SP7 | erlang | 23.3.4.19-150300.3.39.1 | SUSE-SU-2026:3645-1 |
| SLES 15 SP7 | erlang26 | 26.2.1-150300.7.28.1 | SUSE-SU-2026:3579-1 |
| SLES 15 SP6 | erlang | 23.3.4.19-150300.3.39.1 | SUSE-SU-2026:3645-1 |
| SLES 15 SP6 | erlang26 | 26.2.1-150300.7.28.1 | SUSE-SU-2026:3579-1 |
| SLES 15 SP5 | erlang | 23.3.4.19-150300.3.39.1 | SUSE-SU-2026:3645-1 |
| SLES 15 SP4 | erlang | 23.3.4.19-150300.3.39.1 | SUSE-SU-2026:3645-1 |
Show 5 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES for SAP 15 SP6 | erlang | 23.3.4.19-150300.3.39.1 | SUSE-SU-2026:3645-1 |
| SLES for SAP 15 SP6 | erlang26 | 26.2.1-150300.7.28.1 | SUSE-SU-2026:3579-1 |
| SLES for SAP 15 SP5 | erlang | 23.3.4.19-150300.3.39.1 | SUSE-SU-2026:3645-1 |
| SLES for SAP 15 SP4 | erlang | 23.3.4.19-150300.3.39.1 | SUSE-SU-2026:3645-1 |
| SLE HPC 15 SP5 | erlang | 23.3.4.19-150300.3.39.1 | SUSE-SU-2026:3645-1 |
| SLE HPC 15 SP4 | erlang | 23.3.4.19-150300.3.39.1 | SUSE-SU-2026:3645-1 |
openSUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| openSUSE Tumbleweed | erlang | 28.5.0.4-1.1 | openSUSE-SU-2026:11559-1 |
| openSUSE Tumbleweed | erlang27 | 27.1.3-3.1 | openSUSE-SU-2026:11560-1 |
Azure Linux
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Azure Linux 3 | erlang | 26.2.5.21-6 | — |
Advisories 7
- USN-8901-1 erlang vulnerabilities Ubuntu Security Notices (USN) · Oct 8, 2026
- RHSA-2026:35998 Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update Red Hat Security Advisories (RHSA) · Oct 6, 2026
- WID-SEC-2026-2194 Erlang/OTP: Mehrere Schwachstellen BSI CERT-Bund (WID) · Sep 28, 2026
- openSUSE-SU-2026:11559-1 erlang-28.5.0.4-1.1 on GA media SUSE / openSUSE Security Updates · Aug 21, 2026
- openSUSE-SU-2026:11560-1 erlang27-27.1.3-3.1 on GA media SUSE / openSUSE Security Updates · Aug 21, 2026
- SUSE-SU-2026:3645-1 Security update for erlang SUSE / openSUSE Security Updates · Aug 21, 2026
- SUSE-SU-2026:3579-1 Security update for erlang26 SUSE / openSUSE Security Updates · Aug 12, 2026
References
- OTP ssh_sftpd REALPATH Path Existence Oracle ( File system Enumeration ) vendor-advisory related
- EEF CNA record for CVE-2026-53422 related
- OSV record EEF-CVE-2026-53422 related
- Erlang/OTP version ordering
- Fix commit 86622cf in erlang/otp patch
- Fix commit c5a8f50 in erlang/otp patch
- Fix commit 059e578 in erlang/otp patch