High, CVSS 8.6npmAmendedPublished
wetty vulnerable to DOM XSS via file-download filename
CVE-2026-49864 · GHSA-p26j-h7wj-r568
- Affected
- npm wetty < 3.0.4
- Fixed in
- 3.0.4· Vendor fix available
- Issue
- The wetty client decodes a base64 filename from the file-download escape sequence and interpolates it raw into a Toastify HTML string (escapeMarkup: false). Any output the victim renders - a cat'd file, a tailed log, an SSH MOTD, a curl response - that contains \x1b5i...:...\x1b[4i runs script in the wetty origin and types attacker-chosen keystrokes into the victim's SSH session. Preconditions - Victim has wetty open with an active SSH session. - Attacker delivers the file-download escape sequence (\x1b[5i<b64-name:<b64-content\x1b[4i) into output the victim's terminal renders. - Default configuration; no non-default flags required. Details Every byte the server forwards from the PTY passes through FileDownloader.buffer. The buffer scans for the documented file-download markers \x1b[5i (begin) and \x1b[4i (end) - documented in docs/downloading-files.md - and, on a complete match, hands the inner payload to onCompleteFile. fileName is base64-decoded from the escape-sequence…
Recommended action: Upgrade to 3.0.4 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.