Public mode

No access to your tenant or devices. Every item links to its source. What this means

Some sources, documents or advisories need attention: 272/272 feeds/APIs · 469/469 docs · 8/9 advisories · checked 08:27 UTC Customize Public modeDiscuss ChangeIntel on Discord

goshs SFTP authentication bypass via empty password (incomplete fix of CVE-2026-40884)

Collected exploitation and prediction evidence

Risk source coverage

CISA KEV is observed exploitation evidence. FIRST EPSS is a dated prediction of exploitation in the next 30 days. Missing scores are unknown. This collector requests predictions only for explicit CVE aliases in the public NuGet archive; Microsoft release views retain their existing prediction scope.

No collected risk observation for these identifiers. This does not establish absence of exploitation or a zero probability.

cve-program · CVE-2026-62325

Published

goshs is a feature-rich single-binary file server for red teamers and developers. From 2.1.3 until 2.1.4, the sftpserver/sftpserver.go password handler used Username != "" && Password != "", so running goshs with -b 'admin:' -sftp and no -fkf left both SFTP authentication handlers unset and allowed unauthenticated file access. This issue is fixed in version 2.1.4.

Source published
28 Jul 2026 21:52:05 UTC
Source modified
29 Jul 2026 13:25:38 UTC
Observed here
23 Oct 2026 15:48:27 UTC
Source terms
CVE Program Terms of Use

Original source record · Cite this exact observation · Complete original publisher JSON

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: cve-program · CVE Program Terms of Use. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS 3.1 · 9.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

nvd · CVE-2026-62325

Published

goshs is a feature-rich single-binary file server for red teamers and developers. From 2.1.3 until 2.1.4, the sftpserver/sftpserver.go password handler used Username != "" && Password != "", so running goshs with -b 'admin:' -sftp and no -fkf left both SFTP authentication handlers unset and allowed unauthenticated file access. This issue is fixed in version 2.1.4.

NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON.

Source analysis status: Deferred

Weakness classifications: CWE-306

Original publisher date fields

published: 2026-07-28T23:17:10.077

lastModified: 2026-10-23T23:10:00.157

Source published
28 Jul 2026 23:17:10 UTC
Source modified
23 Oct 2026 23:10:00 UTC
Observed here
25 Oct 2026 14:19:28 UTC
Source terms
NIST NVD usage terms; underlying source attribution retained

Original source record · Cite this exact observation · Complete original publisher JSON

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: nvd · NIST NVD usage terms; underlying source attribution retained. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS 3.1 · [email protected] · Secondary · 9.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

osv · GHSA-rjrw-mjq6-hpmm

Published

## Summary Start goshs v2.1.3 with `-b 'admin:' -sftp`. No `-fkf`. SFTP accepts connections without password. CVE-2026-40884 blocks the empty-username variant (`-b ':pass'`). The empty-password variant bypasses that fix. ## CVE-2026-40884 **CVE-2026-40884** (GHSA-c29w-qq4m-2gcv, Apr 13 2026) reported the empty-username case: `-b ':pass'` with `-sftp`. `sftpserver.go:85` uses `&&`: ```go if s.Username != "" && s.Password != "" { sshServer.PasswordHandler = func(ctx ssh.Context, password string) bool { return subtle.ConstantTimeCompare([]byte(ctx.User()), []byte(s.Username)) == 1 && subtle.ConstantTimeCompare([]byte(password), []byte(s.Password)) == 1 } } ``` Empty username → `Username != ""` false → `PasswordHandler` nil. No `-fkf` means `PublicKeyHandler` also nil. gliderlabs/ssh sees all handlers nil and sets `NoClientAuth = true`. Unauthenticated access. Patrickhener fixed it with a sanity check at `sanity/checks.go:114-118`: ```go if opts.FTP && opts.FTPSFTPMode && strings.HasPrefix(opts.BasicAuth, ":") { logger.Fatal("When using SFTP with password authentication, the username cannot be empty. ...") } ``` `HasPrefix(":")` catches empty username. It does not catch empty password. ## Empty Password Bypass Same `&&` at `sftpserver.go:85`. Same nil handler. Different input: ``` goshs -b 'admin:' -sftp ``` - `Username = "admin"`, `Password = ""` - `Username != "" && Password != ""` → false. Password is empty. - `PasswordHandler` not set. No `-fkf` → `PublicKeyHandler` not set. - gliderlabs/ssh → `NoClientAuth = true`. CVE-2026-40884 patched the symptom (empty username) with input validation. Root cause (`&&`) stayed in the code. v2.1.3 still has it. That makes any unanticipated input format exploitable. ## PoC ```bash #!/usr/bin/env bash set -euo pipefail HOST="${1:-127.0.0.1}" PORT="${2:-2121}" echo "[*] Connecting to goshs SFTP at $HOST:$PORT with empty password..." echo "ls -la /" | sftp -o StrictHostKeyChecking=no \ -o UserKnownHostsFile=/dev/null \ -o PreferredAuthentications=none,password \ -o PubkeyAuthentication=no \ -P "$PORT" -b - admin@"$HOST" 2>&1 && \ echo "[+] VULNERABLE: Connected without password!" || \ echo "[-] Connection failed (patched or not running)" ``` ## Root Cause ```go // Wrong: && if s.Username != "" && s.Password != "" { // Correct: || if s.Username != "" || s.Password != "" { ``` `&&` blocks `PasswordHandler` when either field is empty. `||` installs it when either field is set. ## Incomplete Fix Patrickhener added `HasPrefix(":")` at `sanity/checks.go:116`. Two gaps remain: 1. `&&` still at `sftpserver.go:85` in v2.1.3 2. No `HasSuffix(":")` check for empty password ## Impact - Unauthenticated SFTP file access (read, write, delete, rename) - Same impact as CVE-2026-40884 via a different input - Exploitable with `-b 'user:'` and no `-fkf` ## Affected All goshs versions including v2.1.3. CVE-2026-40884 fix does not cover this variant. ## Recommended Fix 1. `&&` → `||` at `sftpserver/sftpserver.go:85` 2. `HasSuffix(":")` check at `sanity/checks.go` 3. Shared auth handler setup for HTTP and SFTP code paths

Source published
28 Jul 2026 21:56:28 UTC
Source modified
18 Aug 2026 15:10:54 UTC
Observed here
24 Oct 2026 13:19:41 UTC
Source terms
GitHub Advisory Database · CC-BY-4.0

Original source record · Cite this exact observation · Complete original publisher JSON

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · GitHub Advisory Database · CC-BY-4.0. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS_V3 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

Publisher rating · CRITICAL

osv · GO-2026-6132

Published

goshs SFTP authentication bypass via empty password (incomplete fix of CVE-2026-40884) in goshs.de/goshs

Source published
18 Aug 2026 14:32:29 UTC
Source modified
18 Aug 2026 15:00:22 UTC
Observed here
24 Oct 2026 13:19:41 UTC
Source terms
OSV · upstream source license applies

Original source record · Cite this exact observation · Complete original publisher JSON

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · OSV · upstream source license applies. Source text is retained; field grouping and change labels are provided by ChangeIntel.

ChangeIntel

An IT change radar: releases, security, known issues, retirements, documentation changes, and service status from public sources. Every item links to supporting evidence; dates and statuses can change after they are read.

Sources read 26 Oct 08:27 UTC · 272 of 272 readable · 270 fully read · documentation 469/469 current