CVE-2026-40876 SFTP root escape via prefix-based path validation in goshs

High 8.7 Published Updated

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.

PackageAffectedFixed in
github.com/patrickhener/goshs GoAll versionsNone
github.com/patrickhener/goshs GoAll versions to 1.1.4None
github.com/patrickhener/goshs GoAll versions to 1.1.4None
github.com/patrickhener/goshs/v2 GoAll versions2.0.0
github.com/patrickhener/goshs/v2 GoAll versions2.0.0
github.com/patrickhener/goshs/v2 GoAll versions2.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.

Sources

Also known as GHSA-5h6h-7rc9-3824, GO-2026-5146.

Is CVE-2026-40876 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free