Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed --serve dev server
-
DeliverySend percent-encoded ../ path
-
ExploitBypass missing traversal check
-
ExecutionRead arbitrary local files
-
ImpactExfiltrate sensitive data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the target to be running Marmite's built-in development server via the |
| Impact | The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H) rates this 8.7, reflecting an unauthenticated, low-complexity network read of arbitrary files (confidentiality-only; VI:N/VA:N). However, the raw score materially overstates real-world urgency because the flaw lives ONLY in the built-in --serve development server, which the vendor's own patch reclassifies as 'development-only, not for production' and re-binds from 0.0.0.0:8000 to loopback 127.0.0.1:8000 - the pre-patch default of binding to all interfaces is precisely what made VC:H network-reachable. No EPSS score, no CISA KEV listing, and no public exploit code were provided, so this is 'no public exploit identified at time of analysis.' The technical impact is limited to reading files the marmite process can access (no write/RCE), and the deployment surface is a niche Rust static-site generator running an explicitly non-production preview server. Net: a legitimate, patch-worthy confidentiality bug but a LOW-to-MEDIUM real-world priority rather than a true 8.7 emergency, driven down by narrow deployment context and absence of exploitation signals. |
| Exploit ScenarioDerived | A developer runs |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 29, 2026
Unauthenticated path traversal in Marmite's built-in development server (--serve) lets remote attackers read arbitrary files that the marmite process can access, by submitting percent-encoded '..' sequences that the handle_request function in src/server.rs fails to reject after decoding and path-joining. All versions through 0.4.2 are affected, and exposure is significant because the server previously defaulted to binding 0.0.0.0:8000 (all interfaces) rather than loopback, so any host running --serve on a network-facing address was reachable; the 0.4.3 fix commit narrows the default bind to 127.0.0.1 and labels the server development-only. No public exploit identified at time of analysis and the component is a development-only preview server, but the CVSS 4.0 vector (AV:N/AC:L/PR:N/UI:N/VC:H, 8.7) reflects a low-complexity, unauthenticated high-confidentiality read with no integrity or availability impact.
RemediationAI
Upgrade past the affected range: upstream fix available via commit 303a0bf2fff4302f4164c0c39932fdffc6683ad4 (https://github.com/rochacbruno/marmite/commit/303a0bf2fff4302f4164c0c39932fdffc6683ad4), and the released patched version is not independently confirmed beyond the 0.4.3 release notes bundled in that commit. Until the upgrade can be applied, run the development server bound to loopback only - start it with --bind 127.0.0.1:8000 instead of the legacy 0.0.0.0:8000 default - which eliminates remote reachability at the cost of losing LAN access to the preview (a direct trade-off for anyone who relied on the old default for sharing the site with colleagues). If remote access to the preview is genuinely required, block inbound TCP 8000 (or the chosen port) at the host firewall or cloud security group and tunnel access over SSH instead, accepting the added operational friction; note that firewall rules must cover IPv6 as well as IPv4. Do not expose --serve to untrusted networks or the internet under any circumstances, since it is explicitly a development-only component and the patch also documents it as not for production. Organizations that front the preview server with a reverse proxy can add request-path normalization that rejects any URI containing encoded or literal dot-dot segments before it reaches Marmite, but this is a compensating control with real bypass risk (proxies and backends may decode differently), so treat it as a stopgap only. Deploying the generated static output behind a hardened nginx/Apache instance removes the vulnerable handler entirely and is the most robust mitigation for production sites. See the upstream issue (https://github.com/rochacbruno/marmite/issues/554) and the VulnCheck advisory (https://www.vulncheck.com/advisories/marmite-through-0.4.2-path-traversal-via-development-server) for coordination details.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Marmite is a Rust static-site/blog generator whose CLI offers an optional HTTP preview server started with --serve (implemented in src/server.rs, with the vulnerable request handling at approximately lines 180-315). The server is built on a Rust HTTP server library (Server::http / bind_server in the patch) and maps incoming request paths onto the generated output folder: the request path is percent-decoded and joined to the output directory, but the code does not reject '..' segments after decoding, so encoded traversal sequences escape the intended document root. This is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory / Path Traversal) - a canonical decode-then-join flaw in which normalization and containment checks are omitted. The CPE cpe:2.3:a:rochacbruno:marmite:*:*:*:*:*:*:*:* indicates the vulnerability applies across all released versions up to and including 0.4.2; the platform-agnostic reading holds because the flaw is in Rust request-handling logic, not an OS-specific path behavior. The accompanying 0.4.3 patch also changes the default --bind value from 0.0.0.0:8000 to 127.0.0.1:8000 in src/cli.rs and reworks the fallback binding so an unavailable port no longer causes a rebind to all interfaces, materially reducing the attack surface even before the traversal check itself is considered.
Know when Marmite gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
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
Unauthenticated network request against the network-bound dev server (AV:N/PR:N/AC:L) reads arbitrary files, so C:H with no integrity or availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Marmite through 0.4.2 contains a path traversal vulnerability in the development server started by --serve that allows unauthenticated attackers to read arbitrary files. The handle_request function in src/server.rs fails to reject .. segments after percent-decoding and joining the request path to the output folder, enabling attackers to request encoded traversal sequences to access files readable by the marmite process.
Executive ViewAI
Marmite's built-in development server (--serve) in versions through 0.4.2 contains an unauthenticated path traversal flaw that lets any network-reachable party read arbitrary files accessible to the Marmite process, including configuration, source, and credential material. Because that server previously defaulted to binding all network interfaces on port 8000, engineering, documentation, and content teams who ran --serve on shared or internet-facing hosts may have exposed sensitive data without realizing it. Leadership should treat this as a data-confidentiality exposure affecting development and internal-preview workflows, not a production service-availability risk.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
EUVD-2026-89110
GHSA-wxwc-rm4m-p2q7
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB