{"id":"CVE-2026-32147","summary":"SFTP chroot bypass via path traversal in SSH_FXP_FSETSTAT","details":"Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') vulnerability in Erlang OTP ssh (ssh_sftpd module) allows an authenticated SFTP user to modify file attributes outside the configured chroot directory.\n\nThe SFTP daemon (ssh_sftpd) stores the raw, user-supplied path in file handles instead of the chroot-resolved path. When SSH_FXP_FSETSTAT is issued on such a handle, file attributes (permissions, ownership, timestamps) are modified on the real filesystem path, bypassing the root directory boundary entirely.\n\nAny authenticated SFTP user on a server configured with the root option can modify file attributes of files outside the intended chroot boundary. The prerequisite is that a target file must exist on the real filesystem at the same relative path. Note that this vulnerability only allows modification of file attributes; file contents cannot be read or altered through this attack vector.\n\nIf the SSH daemon runs as root, this enables direct privilege escalation: an attacker can set the setuid bit on any binary, change ownership of sensitive files, or make system configuration world-writable.\n\nThis vulnerability is associated with program files lib/ssh/src/ssh_sftpd.erl and program routines ssh_sftpd:do_open/4 and ssh_sftpd:handle_op/4.\n\nThis issue affects OTP from OTP 17.0 until OTP 28.4.3, 27.3.4.11, and 26.2.5.20 corresponding to ssh from 3.01 until 5.5.3, 5.2.11.7, and 5.1.4.15.","aliases":["EEF-CVE-2026-32147","GHSA-28jg-mw9x-hpm5"],"modified":"2026-07-15T01:48:51.814975286Z","published":"2026-04-21T12:01:20.350Z","related":["SUSE-SU-2026:2010-1","SUSE-SU-2026:22082-1","openSUSE-SU-2026:10947-1","openSUSE-SU-2026:20907-1"],"database_specific":{"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/32xxx/CVE-2026-32147.json","unresolved_ranges":[{"extracted_events":[{"introduced":"3.01"},{"fixed":"*"},{"introduced":"17.0"},{"fixed":"*"},{"introduced":"07b8f441ca711f9812fad9e9115bab3c3aa92f79"},{"fixed":"*"}],"source":"AFFECTED_FIELD"}],"cna_assigner":"EEF","cwe_ids":["CWE-22"]},"references":[{"type":"WEB","url":"https://cna.erlef.org/cves/CVE-2026-32147.html"},{"type":"WEB","url":"https://github.com"},{"type":"WEB","url":"https://osv.dev/vulnerability/EEF-CVE-2026-32147"},{"type":"WEB","url":"https://www.erlang.org/doc/system/versions.html#order-of-versions"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/32xxx/CVE-2026-32147.json"},{"type":"ADVISORY","url":"https://github.com/erlang/otp/security/advisories/GHSA-28jg-mw9x-hpm5"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-32147"},{"type":"FIX","url":"https://github.com/erlang/otp/commit/28c5d5a6c5f873dc701b597276271763e7d1c004"},{"type":"PACKAGE","url":"https://github.com/erlang/otp"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/erlang/otp","events":[{"introduced":"07b8f441ca711f9812fad9e9115bab3c3aa92f79"},{"fixed":"e5d6d95c9aac559b59b78c66eb558ee54bd4e006"},{"introduced":"601a012837ea0a5c8095bf24223132824177124d"},{"fixed":"c0ce26bb20ab5fcd6e214fa285aec5a409772e61"},{"introduced":"9e6f6742c4d9e9915ee8af0dcb7d97cf1f836116"},{"fixed":"359d91e66ffdede8f7855565087d324581c28f2e"},{"fixed":"28c5d5a6c5f873dc701b597276271763e7d1c004"}],"database_specific":{"cpe":"cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*","extracted_events":[{"introduced":"17.0"},{"fixed":"26.2.5.20"},{"introduced":"27.0"},{"fixed":"27.3.4.11"},{"introduced":"28.0"},{"fixed":"28.4.3"}],"source":["CPE_RANGE","REFERENCES"]}}],"versions":["patch-base-27","OTP-27.3.4","OTP-28.4","OTP-27.3.4.9","OTP-27.0","patch-base-26","OTP-26.2.5","OTP-26.2.5.9","OTP-28.4.1","OTP-28.4.2","OTP-27.3.4.10","OTP-26.2.5.19","OTP-28.0","OTP-26.2.5.18","OTP-26.2.5.17","OTP-27.3.4.8","OTP-27.3.4.6","OTP-27.3.4.7","OTP-26.2.5.16","OTP-26.2.5.12","OTP-27.3","OTP-27.3.4.5","OTP-27.3.4.4","OTP-26.2.5.15","OTP-26.2.3","OTP-28.1","OTP-27.3.4.3","OTP-27.3.3","OTP-26.2.5.14","OTP-27.3.4.2","OTP-26.0","OTP-26.2.5.13","OTP-25.0","OTP-27.3.4.1","OTP-26.2.5.11","OTP-27.3.2","OTP-26.2.5.10","OTP-27.2","OTP-27.3.1","OTP-26.2.5.8","OTP-26.2.5.7","OTP-26.2.5.6","OTP-27.1","OTP-26.2.5.5","OTP-26.2.5.4","OTP-26.2.5.3","OTP-26.2","OTP-26.2.5.2","OTP-26.2.5.1","OTP-26.2.4","OTP-24.0","OTP-26.1","OTP-26.0-rc3","OTP-26.0-rc2","OTP-26.0-rc1","OTP-23.0","OTP-21.0","OTP-25.0-rc3","OTP-25.0-rc2","OTP-25.0-rc1","OTP-22.0","OTP-24.0-rc3","OTP-24.0-rc2","OTP-24.0-rc1","OTP-23.0-rc3","OTP-23.0-rc2","OTP-23.0-rc1","OTP-20.0","OTP-22.0-rc3","OTP-22.0-rc2","OTP-22.0-rc1","OTP-19.0","OTP-21.0-rc2","OTP-18.0","OTP-21.0-rc1","OTP-17.0","OTP-20.0-rc2","OTP-20.0-rc1","OTP-19.0-rc2","OTP-19.0-rc1","OTP-18.0-rc1"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-32147.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N"}]}