
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-69153 is a path traversal and information disclosure vulnerability in PostCSS, a widely used Node.js CSS transformation library. It represents an incomplete fix of a prior advisory (GHSA-6g55-p6wh-862q): the security guard added in PreviousMap.loadFile() to reject directory-traversal and absolute-path sourceMappingURL values only activates when the from option is set, leaving applications that omit from fully exposed. All PostCSS versions up to and including 8.5.22 are affected; the issue is fixed in version 8.5.23. The vulnerability was published on August 3, 2026, with a CVSS v3.1 score of 5.3 (Medium) and a CVSS v4.0 score of 6.3 (Medium) (Github Advisory, Red Hat Bugzilla).
The root cause is classified as CWE-22 (Path Traversal) and CWE-200 (Exposure of Sensitive Information). In lib/previous-map.js, the loadFile() method checks for .. traversal and absolute paths only inside an if (cssFile) { ... } block, which is only entered when the from option is provided to PostCSS. When from is omitted, cssFile is undefined (falsy), the guard is skipped, and an attacker-controlled /*# sourceMappingURL=/abs/path/x.map */ comment in CSS causes readFileSync to read an arbitrary .map file from the filesystem. The loaded file's sources (filesystem paths) and sourcesContent (file contents) are then embedded in the generated source map and exposed to the application. Exploitation requires that the attacker can supply CSS input to a PostCSS instance invoked without the from option — a common pattern in online CSS playgrounds, minification services, and string-input build steps. A proof-of-concept JavaScript script is publicly available in the GitHub Security Advisory (Github Advisory, Patch Commit).
Successful exploitation allows an unauthenticated network attacker to read arbitrary .map files accessible to the PostCSS process, disclosing their sources (local filesystem paths) and sourcesContent (actual source code or other file contents) through the generated source map. This is a confidentiality-only impact — integrity and availability are not affected. The most at-risk deployments are services that process attacker-supplied CSS strings without the from option and expose result.map to users, such as online CSS tools, linting APIs, and CI/CD pipelines that handle untrusted input (Github Advisory).
A proof-of-concept JavaScript exploit is publicly available in the GitHub Security Advisory, verified against PostCSS 8.5.22. The PoC demonstrates reading an out-of-tree .map file via an absolute sourceMappingURL when from is unset. The EPSS score is approximately 0.31–0.36%, indicating a low but non-negligible probability of exploitation in the wild. There is no evidence of active in-the-wild exploitation or threat actor attribution at this time, and the vulnerability is not listed in the CISA KEV catalog. NVD's SSVC assessment classifies exploitation as "poc" and automation as "no" (Github Advisory).
from option and returns or exposes result.map output (e.g., an online CSS minifier, playground, or linting API).sourceMappingURL comment pointing to a target .map file via an absolute path or directory traversal, e.g.:a{color:red}
/*# sourceMappingURL=/etc/app/secrets.map */or using traversal:a{color:red}
/*# sourceMappingURL=../../sensitive/data.map */from is unset, cssFile is undefined, and the path traversal guard in PreviousMap.loadFile() is bypassed.result.map object. If the target file exists and is valid JSON, its sources (filesystem paths) and sourcesContent (file contents) will appear in the generated source map, disclosing sensitive data to the attacker (Github Advisory).sourceMappingURL comments with absolute paths (e.g., /etc/, /var/, /home/) or ../ sequences in the CSS body./*# sourceMappingURL= followed by absolute or traversal paths; responses containing unexpected sources or sourcesContent fields in JSON output..map files outside the expected project directory, detectable via file access auditing (e.g., auditd on Linux) for readFileSync calls on unexpected paths..map files in sensitive directories (e.g., /etc/, /tmp/, parent directories of the working directory) without a corresponding from CSS file path.Upgrade PostCSS to version 8.5.23 or later, which applies the traversal/absolute-path rejection unconditionally in loadFile(), regardless of whether cssFile is set (Github Advisory, Patch Commit). As an immediate workaround prior to patching, always pass the from option when invoking PostCSS (e.g., postcss([]).process(css, { from: '/path/to/input.css' })), which activates the existing path traversal guard. Additionally, consider disabling source map processing entirely for untrusted CSS input by passing { map: false } in the options.
Red Hat has tracked this vulnerability in their Bugzilla system (Bug 2510719) with high priority and severity, and has issued multiple errata (RHSA-2026:50079, RHSA-2026:50826, RHSA-2026:54435) addressing the issue in their products (Red Hat Bugzilla). The vulnerability was reported by security researcher anir0y and published via the GitHub Security Advisory program. The issue is notable as an incomplete fix scenario — the prior advisory GHSA-6g55-p6wh-862q introduced a guard that was bypassed under a common invocation pattern, highlighting the risk of conditional security controls (Github Advisory).
Fix availability across major Linux distributions and their releases.
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."