Skip to main content

PostCSS EUVDEUVD-2026-60239

| CVE-2026-73646 HIGH
Path Traversal (CWE-22)
2026-08-17 security-advisories@github.com GHSA-r28c-9q8g-f849
7.5
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Submit CSS with crafted sourceMappingURL comment
  2. Delivery
    PostCSS auto-loads annotation as file path
  3. Exploit
    path.join() resolves traversal sequences without sandboxing
  4. Execution
    Arbitrary .map file read from filesystem
  5. Persist
    sourcesContent merged into result.map
  6. Impact
    Attacker retrieves disclosed source content from API response or served artifact

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 all of the following: (1) the target application accepts CSS input from an untrusted source (e.g., user-submitted stylesheets, API endpoints accepting CSS, online CSS tools); (2) the application processes that CSS using PostCSS via postcss.parse() or postcss().process() without passing map: false in the options - the default behavior is to auto-load source maps; (3) the application exposes result.map output to the attacker, either by returning it in an API response, writing it to a publicly accessible location, or including it in build artifacts served to the submitting user. Exploitation is limited by: the file disclosure is restricted to files with a .map extension (a prior patch in 8.5.12 removed the ability to read arbitrary extensions); the PostCSS process must have filesystem read permissions on the target .map file; and if opts.from is set (standard practice), the attacker must use relative ../ traversal sequences rather than absolute paths. Applications that set map: false, strip sourceMappingURL comments from input, or never expose result.map to callers are not exploitable.

Impact

The official CVSS 3.1 score of 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N) accurately reflects the network-reachable, unauthenticated nature of exploitation against a service that accepts user CSS, but the real-world risk is contingent on the application architecture. Exploitation requires three conditions to be simultaneously true: the service must accept attacker-supplied CSS, process it with PostCSS without setting map: false, and expose result.map output to the attacker. Services that internally validate, discard, or never expose result.map are not vulnerable in practice. No EPSS score was provided in the input data and KEV status is not confirmed, indicating this has not been observed in widespread active exploitation campaigns. The absence of a KEV listing and POC means this is best treated as a high-priority library update rather than an emergency incident response trigger, though any build pipeline, CSS-as-a-service endpoint, or design tool that processes user-provided stylesheets should treat patching as urgent given the low exploitation complexity once the conditions are met.

Exploit ScenarioDerived

An attacker submits a CSS payload containing `/*

sourceMappingURL=../../../../var/app/dist/server-bundle.js.map */ to a web service that uses PostCSS to lint or transform user-provided stylesheets, where the service calls postcss().process(userCss, { from: '/uploads/user/input.css' }) without setting map: false. PostCSS reads the traversed .map file, merges its sourcesContent field - which may contain transpiled server-side JavaScript source code - into result.map`, and the service writes or returns that output, inadvertently disclosing internal application source to the attacker. No publicly available exploit code has been confirmed at time of analysis, but the GHSA advisory provides sufficient implementation detail for a competent attacker to reproduce the technique.

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 – Aug 17, 2026

Path traversal in PostCSS's automatic source map loading allows arbitrary .map file disclosure when untrusted CSS is processed without explicitly opting out. Specifically, lib/previous-map.js constructs file paths from attacker-controlled sourceMappingURL comment values without sandboxing directory traversal sequences, enabling an attacker who can supply CSS to a PostCSS-processing service to exfiltrate sourcesContent from any .map file reachable by the process. The flaw affects all PostCSS versions from 8.0.0 through 8.5.17; no public exploit or CISA KEV listing has been confirmed at time of analysis, though the GHSA advisory provides a detailed attack scenario.

RemediationAI

Upgrade PostCSS to version 8.5.18 or later, which introduces sandboxing in loadFile() using path.relative() to ensure resolved .map paths remain within the directory of opts.from, and rejects absolute or directory-traversing paths by returning undefined. The fix commit is confirmed at https://github.com/postcss/postcss/commit/95663d3eb7ba26f4854dd19d3b4f4425760cf56c and the release is tagged at https://github.com/postcss/postcss/releases/tag/8.5.18. As an immediate compensating control prior to patching, callers should explicitly pass map: false in the ProcessOptions object (e.g., postcss().process(css, { from: '...', map: false })), which disables source map auto-loading entirely - note this also suppresses legitimate source map output generation, which may affect downstream debugging workflows. Alternatively, if CSS input sources can be allowlisted or sanitized before processing, stripping sourceMappingURL comments from untrusted CSS prevents the vulnerable code path from being triggered. Services that process CSS internally without ever exposing result.map to external callers have reduced exposure but should still patch.

Affected VersionsENISA

postcss < 8.5.18

Affected Packages

npm postcss fix: 8.5.18

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

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

Technical ContextAI · show details

PostCSS is a widely-used Node.js CSS transformation framework (npm package postcss) that parses CSS into an Abstract Syntax Tree. When PostCSS parses a stylesheet, lib/previous-map.js automatically attempts to load any previous source map referenced by an inline `/*

sourceMappingURL=... */ comment - this behavior is opt-out (disabled only when the caller explicitly passes map: false). The vulnerable code path in loadMap() constructs the candidate file path via Node.js path.join(dirname(opts.from), annotation), where annotation is the raw, unvalidated string from the CSS comment. CWE-22 (Path Traversal) applies directly: path.join() normalizes but does not sandbox .. segments, so a crafted annotation like ../../../../etc/app/dist/bundle.js.map walks the resolved path outside the intended directory. When opts.from is absent, absolute paths from the comment are used verbatim. A prior partial fix in 8.5.12 restricted readable files to those ending in .map, but left the traversal logic intact. Once a traversed map is loaded, MapGenerator.isMap() treats its presence as an implicit request to populate result.map, merging sourcesContent` from the loaded file into the output returned to the caller.

Know when the next one hits your stack

  • 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 (github) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 7.5 HIGH

Network vector and no authentication apply only when a service exposes CSS processing externally; confidentiality-only impact reflects read-only .map file disclosure.

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
SUSE HIGH
Red Hat 7.5 HIGH

Primary rating from Vendor (github).

CVSS VectorVendor: github

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

Lifecycle Timeline

2
Patch available
Aug 17, 2026 - 17:02 EUVD
CVE Published
Aug 17, 2026 - 16:17 cve.org
HIGH 7.5

DescriptionCVE.org

PostCSS takes a CSS file and provides an API to analyze and modify its rules by transforming the rules into an Abstract Syntax Tree. Prior to 8.5.18, lib/previous-map.js loadMap() passes attacker-controlled sourceMappingURL values to join(dirname(opts.from), annotation), and loadFile() permits traversed or absolute .map paths, allowing untrusted CSS processed without map: false to disclose sourcesContent from arbitrary reachable .map files through result.map. This issue is fixed in version 8.5.18.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 25 npm packages depend on postcss (13 direct, 12 indirect)

Ecosystem-wide dependent count for version 8.5.18.

Executive ViewAI

Why It Matters

PostCSS, a critical component in web development and build pipelines, contains a path traversal vulnerability affecting versions 8.0.0-8.5.17 that allows attackers with CSS input access to exfiltrate source code and sensitive data from source map files. Organizations processing untrusted CSS or accepting external stylesheets face direct risk of intellectual property disclosure and potential credential exposure embedded in development artifacts. No patch is currently available, requiring immediate compensating controls.

Business Impact: High
Compensating Controls

Disable automatic source map loading in PostCSS configuration settings; restrict all CSS processing pipelines to accept input exclusively from verified internal sources; implement input validation and content-type enforcement on external CSS acceptance paths; deploy file system access controls at the OS or container level to limit disclosure scope; implement real-time monitoring and alerting for unauthorized access to source map files.

Threat Intelligence Overview

EPSS Score
0.4%
Top 69% exploitable
Prevalence
High
core CSS build tool in most Node.js/webpack/Vite ecosystems
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment 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 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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

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

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Performance Computing 12 Not-Affected
SUSE Linux Enterprise High Performance Computing 15 SP7 Not-Affected
SUSE Linux Enterprise High Performance Computing 15 SP7 Not-Affected
SUSE Linux Enterprise High Performance Computing 15 SP7 Affected

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