CVE-2026-28807 json
Path Traversal in wisp.serve_static allows arbitrary file read
published 2026-03-10 8 mo ago modified 2026-07-30 3 mo ago also EEF-CVE-2026-28807 , EUVD-2026-10906 , GHSA-h7cj-j2vv-qw8r
- cvss
- 7.5
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 1.2%
- EPSS 1.2% chance of exploitation in 30 days, percentile 67%
- public exploits
- 0
- none known
Summary
Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') vulnerability in gleam-wisp wisp allows arbitrary file read via percent-encoded path traversal.
The wisp.serve_static function is vulnerable to path traversal because sanitization runs before percent-decoding. The encoded sequence %2e%2e passes through string.replace unchanged, then uri.percent_decode converts it to .., which the OS resolves as directory traversal when the file is read.
An unauthenticated attacker can read any file readable by the application process in a single HTTP request, including application source code, configuration files, secrets, and system files.
This issue affects wisp: from 2.1.1 before 2.2.1.
Patch / fix
- hex wisp 2.2.1
- gleam-wisp wisp 2.2.1
CISA SSVC
- Exploitation
- none
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 7 mo ago
Exploit prediction
1.17% chance of exploitation in the next 30 days, higher than 67% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/gleam-wisp/wisp/security/advisories/GHSA-h7cj-j2vv-qw8r referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 8.7 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N |
| GitHub | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
| CNA | 4.0 | 8.7 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| NVD | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| hex | wisp | >=2.1.1, <2.2.1 |
2.2.1 |
Affected products
- gleam-wisp wisp
Classification
- Weakness
-
- CWE-22 Improper Limitation of a Pathname to a Restricted Directory
References
-
github.com
/gleam-wisp/wisp/commit/161118c431047f7ef1ff7cabfcc38981877fdd93
patch, web
-
github.com
/gleam-wisp/wisp/security/advisories/GHSA-h7cj-j2vv-qw8r
vendor-advisory, related, web, exploit, patch, advisory
-
github.com
/gleam-wisp/wisp/commit/129dcb1fe10ab1e676145d91477535e1c90ab550
web
-
cna.erlef.org
/cves/CVE-2026-28807.html
related, web, third-party-advisory
-
osv.dev
/vulnerability/EEF-CVE-2026-28807
related, web, third-party-advisory
-
nvd.nist.gov
/vuln/detail/CVE-2026-28807
advisory
-
github.com
/gleam-wisp/wisp
package
-
hex.pm
/packages/wisp
package
Sources
- CVE List CVE-2026-28807
- GitHub Advisory GHSA-h7cj-j2vv-qw8r
- NVD CVE-2026-28807
- OSV EEF-CVE-2026-28807
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.