CVE-2026-40876 SFTP root escape via prefix-based path validation in goshs
Authenticated SFTP users can escape the configured root directory via prefix-based path validation flaws, allowing unauthorized file access and modification.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-40876?
CVE-2026-40876 is a high-severity path traversal vulnerability in patrickhener goshs, published on 21 Apr 2026. Any signed-in user can exploit it over the network, with no action from the victim.
Official description
goshs is a SimpleHTTPServer written in Go. Prior to 2.0.0-beta.6, goshs contains an SFTP root escape caused by prefix-based path validation. An authenticated SFTP user can read from and write to filesystem paths outside the configured SFTP root, which breaks the intended jail boundary and can expose or modify unrelated server files. The SFTP subsystem routes requests through sftpserver/sftpserver.go into DefaultHandler.GetHandler() in sftpserver/handler.go, which forwards file operations into readFile, writeFile, listFile, and cmdFile. All of those sinks rely on sanitizePath() in sftpserver/helper.go. helper.go uses a raw string-prefix comparison, not a directory-boundary check. Because of that, if the configured root is /tmp/goshsroot, then a sibling path such as /tmp/goshsroot_evil/secret.txt incorrectly passes validation since it starts with the same byte prefix. This vulnerability is fixed in 2.0.0-beta.6.
Weakness: CWE-22
Which versions are affected by CVE-2026-40876?
6 open source packages ship an affected version, including github.com/patrickhener/goshs and github.com/patrickhener/goshs/v2. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
github.com/patrickhener/goshs Go | All versions | None |
github.com/patrickhener/goshs Go | All versions to 1.1.4 | None |
github.com/patrickhener/goshs Go | All versions to 1.1.4 | None |
github.com/patrickhener/goshs/v2 Go | All versions | 2.0.0 |
github.com/patrickhener/goshs/v2 Go | All versions | 2.0.0 |
github.com/patrickhener/goshs/v2 Go | All versions | 2.0.0 |
Products include Goshs Goshs.
How do I fix CVE-2026-40876?
Upgrade to a fixed version.
Upgrade, and resolve every user-supplied path against an allowed base folder before opening it. More about Path traversal.
Is CVE-2026-40876 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-40876 exists.
Other vulnerabilities in patrickhener goshs
- CVE-2026-40884 goshs: Empty-username SFTP password authentication bypass in goshs
- CVE-2026-35392 goshs has an Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') in goshs PUT Upload
- CVE-2026-35393 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') in goshs POST multipart upload
- CVE-2026-35471 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') in goshs
- CVE-2026-40189 goshs has a file-based ACL authorization bypass in goshs state-changing routes
Sources
Also known as GHSA-5h6h-7rc9-3824, GO-2026-5146.