Skip to main content

@fastify/static EUVDEUVD-2026-23243

| CVE-2026-6410 MEDIUM
Path Traversal (CWE-22)
2026-04-16 openjs GHSA-pr96-94w5-mx2h
5.3
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Access
    Identify Fastify app with list option enabled
  2. Delivery
    Craft path traversal URL (e.g., /static/../../etc/)
  3. Exploit
    Send unauthenticated HTTP GET request
  4. Execution
    dirList.path() resolves outside static root via path.join()
  5. Persist
    Server returns directory listing of arbitrary path
  6. Impact
    Enumerate sensitive filenames and directory structure

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

Exploitation requires that the Fastify application has explicitly configured the list option in the @fastify/static plugin - directory listing is disabled by default and must be intentionally enabled by the application developer. Without this option, the dirList.path() function is never invoked and the vulnerability is not reachable. Once that condition is met, no authentication is required (CVSS PR:N) and no user interaction is needed, making the attack fully automated. Key limiting factors: only directory and file names are disclosed - file contents cannot be read via this vulnerability; the Node.js process must have OS-level read permission on the target directory for a listing to be returned; and the affected version range is bounded to 8.0.0-9.1.0, so deployments on older or already-patched versions are not affected.

Impact

The CVSS 3.1 score of 5.3 Medium reflects a network-reachable, unauthenticated, zero-complexity attack (AV:N/AC:L/PR:N/UI:N) with limited confidentiality impact (C:L) and no integrity or availability impact. This scoring is consistent with the actual impact - directory and filename enumeration only. EPSS at 0.02% (4th percentile) is very low, and the SSVC framework corroborates this with Exploitation: none and Technical Impact: partial, indicating no observed exploitation and bounded blast radius. The SSVC Automatable: yes flag is the main escalation risk - once a POC exists, mass scanning is trivial. The non-default prerequisite (list option must be explicitly enabled) meaningfully shrinks the exposed population; deployments using default @fastify/static configurations are not affected. Real-world priority is moderate for organisations that have enabled directory listing and cannot immediately upgrade; low for all others. No data conflicts exist between sources - all signals align on a contained, patchable, currently unexploited issue.

Exploit ScenarioDerived

An attacker identifies a Fastify application that has enabled directory listing via the list option in @fastify/static. They send an unauthenticated HTTP GET request with a path traversal sequence such as GET /assets/../../etc/ HTTP/1.1, causing dirList.path() to resolve to /etc/ on the server. The response returns a directory listing containing filenames and subdirectory names from /etc/, revealing configuration file names, user directories, or other sensitive path structure without requiring any credentials or prior knowledge of the server layout.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.0% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Jul 24, 2026

Path traversal in @fastify/static 8.0.0-9.1.0 allows unauthenticated remote attackers to obtain directory listings for arbitrary filesystem paths accessible to the Node.js process when the directory listing feature is explicitly enabled. The flaw resides in dirList.path(), which uses Node.js path.join() without verifying the resolved path remains within the configured static root, making URL sequences like /public/../etc/ sufficient to escape the intended boundary. No active exploitation has been identified (SSVC Exploitation: none; EPSS: 0.02%), though the attack is automatable against susceptible configurations; disclosure is limited to directory and file names only - file contents are not readable via this path.

RemediationAI

Upgrade @fastify/static to version 9.1.1 or later, which introduces a containment check in dirList.path() to prevent resolution outside the configured static root. This is a drop-in upgrade with no reported breaking changes. The authoritative advisory is at https://github.com/fastify/fastify-static/security/advisories/GHSA-pr96-94w5-mx2h. For deployments that cannot immediately upgrade, the effective workaround is to remove the list option from the @fastify/static plugin configuration, which disables directory listing entirely and prevents the vulnerable code path from being reached; the trade-off is loss of browser-accessible directory browsing, with no impact on static file serving itself.

Affected VersionsENISA

@fastify/static 8.0.0 <9.1.1

Affected Packages

npm @fastify/static fix: 9.1.1
euvd fastify_static fix: 9.1.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected package is @fastify/static, an npm plugin for the Fastify web framework responsible for serving static assets and, optionally, directory listings (CPE: cpe:2.3:a:@fastify/static:@fastify/static). The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory): the dirList.path() function constructs filesystem paths using Node.js's path.join(), which normalises traversal sequences such as '../' into a valid absolute path, but the function then uses the result without checking that it falls within the configured static root. This is a classic path traversal omission - the API resolves the path correctly but the caller never validates containment. The vulnerability is conditioned on the administrator having opted in to directory listing via the list plugin option, which is not active in default configurations.

Know when Node.js 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

NVD PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 5.3 MEDIUM

Network-reachable with no auth once list is enabled; impact is directory enumeration only, so C:L, I:N, A:N.

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

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Lifecycle Timeline

3
Patch released
Apr 23, 2026 - 19:31 nvd
Patch available
Patch available
Apr 16, 2026 - 15:01 EUVD
CVE Published
Apr 16, 2026 - 13:29 nvd
MEDIUM 5.3

DescriptionCVE.org

@fastify/static versions 8.0.0 through 9.1.0 allow path traversal when directory listing is enabled via the list option. The dirList.path() function resolves directories outside the configured static root using path.join() without a containment check. A remote unauthenticated attacker can obtain directory listings for arbitrary directories accessible to the Node.js process, disclosing directory and file names. File contents are not disclosed. Upgrade to @fastify/static 9.1.1 to fix this issue. As a workaround, disable directory listing by removing the list option from the plugin configuration.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 2 npm packages depend on @fastify/static (2 direct, 0 indirect)

Ecosystem-wide dependent count for version 8.0.0.

Threat Intelligence Overview

EPSS Score
0.0%
Top 96% exploitable
Prevalence
Medium
popular npm plugin within the Fastify Node.js ecosystem
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor CIRCL GitHub

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
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.

CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

Vendor StatusVendor

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