Skip to main content

SFTPGo CVE-2026-49245

| EUVDEUVD-2026-63709 LOW
Cross-site Scripting (XSS) (CWE-79)
2026-07-02 https://github.com/drakkan/sftpgo GHSA-3vcg-pv95-pq54
3.7
CVSS 3.1 · Vendor: https://github.com/drakkan/sftpgo

Severity by source

Vendor (https://github.com/drakkan/sftpgo) PRIMARY
3.7 LOW
AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:N
vuln.today AI
3.7 LOW

AC:H reflects combined social engineering and crafted-URL dependency; PR:L requires share file-upload access; HttpOnly cookies cap confidentiality to low; no availability impact.

3.1 AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:N
4.0 AV:N/AC:H/AT:P/PR:L/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (https://github.com/drakkan/sftpgo).

CVSS VectorVendor: https://github.com/drakkan/sftpgo

Attack Vector
Network
Attack Complexity
High
Privileges Required
Low
User Interaction
Required
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

1
Analysis Generated
Jul 02, 2026 - 19:32 vuln.today

DescriptionCVE.org

Summary

The inline query parameter on the browsable-share file download and on the authenticated user file download suppressed Content-Disposition: attachment, so an HTML file stored in a share or home directory could be served as text/html and execute in SFTPGo's web origin (stored XSS).

Impact

Low. Exploitation requires the attacker to place the file and a victim to open the crafted link - a URL the WebClient never generates, so it requires social engineering - and the practical conditions are narrow:

  • Session cookies are HttpOnly, so the cookie cannot be read by the injected script.
  • Authenticated shares set their own session cookie, which overwrites the victim's WebClient cookie, no account pivot. The realistic case is a public share, or a folder shared between distinct users combined with targeted social engineering.

It is a genuine trust-boundary violation (SFTPGo emits attacker-controlled content as active HTML in its own origin), hence an advisory, but the constrained preconditions and the HttpOnly mitigation keep it Low.

Patches

Upgrade to v2.7.3. These endpoints now always respond with Content-Disposition: attachment; the inline parameter has been removed. See the fix commit for the full technical rationale.

AnalysisAI

Stored XSS in SFTPGo's WebClient allows an attacker who can place files in a share or home directory to serve an HTML payload as live text/html within SFTPGo's own web origin by exploiting the inline query parameter on file download endpoints, which suppressed the Content-Disposition: attachment header. Affected versions prior to v2.7.3 expose both the browsable-share and authenticated-user file download paths. No public exploit is identified at time of analysis; exploitation requires file placement access plus social engineering to deliver a crafted URL the WebClient never generates natively.

Technical ContextAI

SFTPGo (pkg:go/github.com_drakkan_sftpgo_v2) is a Go-based multi-protocol file server with a built-in WebClient. The vulnerability is rooted in HTTP response header handling: the inline query parameter on file download endpoints instructed the server to omit Content-Disposition: attachment, causing browsers to render returned files using the inferred or declared MIME type rather than forcing a download. For HTML files, this means the browser treats the response as text/html and fully executes embedded JavaScript within SFTPGo's web origin. This is a textbook CWE-79 (Improper Neutralization of Input During Web Page Generation - Stored XSS) violation: attacker-controlled file content is emitted as active HTML under the application's own origin, crossing a trust boundary between file storage and the web UI layer. The payload persists on the server filesystem, but delivery depends on a crafted URL rather than any organic WebClient navigation.

RemediationAI

Vendor-released patch: v2.7.3. Upgrading to v2.7.3 is the definitive fix; the inline parameter has been removed from both affected endpoints and Content-Disposition: attachment is now enforced unconditionally on all file download responses. Advisory and fix rationale are at https://github.com/drakkan/sftpgo/security/advisories/GHSA-3vcg-pv95-pq54. As a compensating control prior to patching, operators using a reverse proxy (e.g., nginx, Caddy) can reject or strip requests containing the inline query parameter on file download paths - this blocks the attack delivery vector without disabling downloads, but must be validated against any legitimate inline-parameter usage in third-party integrations. Disabling public share creation entirely eliminates the widest-exposure path (unauthenticated victim scenarios) but removes intended functionality and does not protect authenticated cross-user share scenarios.

Share

CVE-2026-49245 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy