CVE-2026-28807

Source
https://cve.org/CVERecord?id=CVE-2026-28807
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-28807.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2026-28807
Aliases
Published
2026-03-10T22:16:18.640Z
Modified
2026-03-13T13:47:35.574052Z
Severity
  • 8.7 (High) CVSS_V4 - 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 CVSS Calculator
Summary
[none]
Details

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.servestatic function is vulnerable to path traversal because sanitization runs before percent-decoding. The encoded sequence %2e%2e passes through string.replace unchanged, then uri.percentdecode 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.

References

Affected packages

Git / github.com/gleam-wisp/wisp

Affected ranges

Type
GIT
Repo
https://github.com/gleam-wisp/wisp
Events
Database specific
{
    "versions": [
        {
            "introduced": "2.1.1"
        },
        {
            "fixed": "2.2.1"
        }
    ]
}

Affected versions

v2.*
v2.1.1
v2.2.0

Database specific

unresolved_ranges
[
    {
        "events": [
            {
                "introduced": "0"
            },
            {
                "last_affected": "string.replace"
            }
        ]
    }
]
source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-28807.json"