Skip to main content

Marmite EUVDEUVD-2026-89110

| CVE-2026-102810 HIGH
Path Traversal (CWE-22)
2026-09-29 VulnCheck GHSA-wxwc-rm4m-p2q7
8.7
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach exposed --serve dev server
  2. Delivery
    Send percent-encoded ../ path
  3. Exploit
    Bypass missing traversal check
  4. Execution
    Read arbitrary local files
  5. Impact
    Exfiltrate 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 --serve flag AND that server to be reachable by the attacker - which pre-0.4.3 was the default because --bind defaulted to 0.0.0.0:8000 (all interfaces) rather than loopback. Exploitation is unauthenticated (PR:N) with no user interaction, using percent-encoded .. sequences in the request path. Limiting factors: the affected component is explicitly a development-only preview server not intended for production, impact is read-only to files accessible by the marmite process, and the 0.4.3 patch narrows the default bind to 127.0.0.1, so only hosts running the dev server on a network-facing interface are exposed.

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 marmite --serve (or with --bind 0.0.0.0:8000) exposing the preview server on a reachable network interface. An unauthenticated attacker sends an HTTP request with percent-encoded .. traversal sequences (e.g. %2e%2e%2f) that handle_request decodes and joins to the output folder without rejecting parent-directory segments, returning arbitrary files readable by the marmite process such as SSH keys or config files. No public exploit code was provided, but the technique is trivial given AC:L and PR:N.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

marmite 0 ≤0.4.2

Affected Packages

euvd marmite no fix

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

Vendor (VulnCheck) PRIMARY 8.7 HIGH
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
vuln.today AI 7.5 HIGH

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 69% exploitable
Prevalence
Low
niche open-source Rust static-site generator, small deployment footprint
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy