CVE-2026-73646
PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure
CVE-2026-73646 is a high vulnerability (CVSS 7.5) in Postcss, published July 24, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.53%, the 45th percentile. Fixed in postcss 8.5.18.
- Severity
- 7.5 HighCVSS 3.1, CVE List
- Exploit chance
- 0.53%EPSS, 45th percentile
- Exploitation
- None knownNot on CISA’s or ENISA’s lists
- Fixed in
8.5.18postcss +39 more
Description
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- None
Exploit likelihood
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
postcssnpm | through 8.5.17 | 8.5.18 |
postcssTuxCare:npm | 8.5.6-tuxcare.0 up to 8.5.6-tuxcare.3, plus listed versions 8.5.68.5.6-tuxcare.18.5.6-tuxcare.2 | 8.5.6-tuxcare.3 |
postcssTuxCare:npm | 8.3.6-tuxcare.0 up to 8.3.6-tuxcare.5, plus listed versions 8.3.68.3.6-tuxcare.18.3.6-tuxcare.28.3.6-tuxcare.38.3.6-tuxcare.4 | 8.3.6-tuxcare.5 |
postcssTuxCare:npm | 7.0.32-tuxcare.0 up to 7.0.32-tuxcare.3, plus listed versions 7.0.327.0.32-tuxcare.17.0.32-tuxcare.2 | 7.0.32-tuxcare.3 |
postcssTuxCare:npm | 7.0.17-tuxcare.0 up to 7.0.17-tuxcare.3, plus listed versions 7.0.177.0.17-tuxcare.17.0.17-tuxcare.2 | 7.0.17-tuxcare.3 |
postcssTuxCare:npm | 5.2.18-tuxcare.0 up to 5.2.18-tuxcare.3, plus listed versions 5.2.185.2.18-tuxcare.15.2.18-tuxcare.2 | 5.2.18-tuxcare.3 |
postcssTuxCare:npm | 8.4.14-tuxcare.0 up to 8.4.14-tuxcare.5, plus listed versions 8.4.148.4.14-tuxcare.18.4.14-tuxcare.28.4.14-tuxcare.38.4.14-tuxcare.4 | 8.4.14-tuxcare.5 |
postcssTuxCare:npm | 8.4.5-tuxcare.0 up to 8.4.5-tuxcare.4, plus listed versions 8.4.58.4.5-tuxcare.18.4.5-tuxcare.28.4.5-tuxcare.3 | 8.4.5-tuxcare.4 |
postcssTuxCare:npm | 8.4.31-tuxcare.0 up to 8.4.31-tuxcare.4, plus listed versions 8.4.318.4.31-tuxcare.18.4.31-tuxcare.28.4.31-tuxcare.3 | 8.4.31-tuxcare.4 |
postcssTuxCare:npm | 8.4.41-tuxcare.0 up to 8.4.41-tuxcare.5, plus listed versions 8.4.418.4.41-tuxcare.18.4.41-tuxcare.28.4.41-tuxcare.38.4.41-tuxcare.4 | 8.4.41-tuxcare.5 |
Show 30 moreShow less
| Package | Affected | Fixed |
|---|---|---|
postcssTuxCare:npm | 8.2.15-tuxcare.0 up to 8.2.15-tuxcare.4, plus listed versions 8.2.158.2.15-tuxcare.18.2.15-tuxcare.28.2.15-tuxcare.3 | 8.2.15-tuxcare.4 |
postcssTuxCare:npm | 8.5.6-tuxcare.0 up to 8.5.6-tuxcare.5, plus listed versions 8.5.68.5.6-tuxcare.18.5.6-tuxcare.28.5.6-tuxcare.38.5.6-tuxcare.4 | 8.5.6-tuxcare.5 |
postcssTuxCare:npm | 8.2.13-tuxcare.0 up to 8.2.13-tuxcare.3, plus listed versions 8.2.138.2.13-tuxcare.18.2.13-tuxcare.2 | 8.2.13-tuxcare.3 |
postcssTuxCare:npm | 8.5.17-tuxcare.0 up to 8.5.17-tuxcare.1, plus listed versions 8.5.17 | 8.5.17-tuxcare.1 |
postcssTuxCare:npm From an advisory covering 6 CVEs | 6.0.1-tuxcare.0 up to 6.0.1-tuxcare.1, plus listed versions 6.0.1 | 6.0.1-tuxcare.1 |
postcssTuxCare:npm | 7.0.14-tuxcare.0 up to 7.0.14-tuxcare.4, plus listed versions 7.0.147.0.14-tuxcare.17.0.14-tuxcare.27.0.14-tuxcare.3 | 7.0.14-tuxcare.4 |
postcssTuxCare:npm | 7.0.21-tuxcare.0 up to 7.0.21-tuxcare.4, plus listed versions 7.0.217.0.21-tuxcare.17.0.21-tuxcare.27.0.21-tuxcare.3 | 7.0.21-tuxcare.4 |
postcssTuxCare:npm From an advisory covering 2 CVEs | 8.5.3-tuxcare.0 up to 8.5.3-tuxcare.2, plus listed versions 8.5.38.5.3-tuxcare.1 | 8.5.3-tuxcare.2 |
postcssTuxCare:npm From an advisory covering 2 CVEs | 8.5.2-tuxcare.0 up to 8.5.2-tuxcare.2, plus listed versions 8.5.28.5.2-tuxcare.1 | 8.5.2-tuxcare.2 |
postcssTuxCare:npm From an advisory covering 4 CVEs | 8.4.49-tuxcare.0 up to 8.4.49-tuxcare.1, plus listed versions 8.4.49 | 8.4.49-tuxcare.1 |
postcssTuxCare:npm From an advisory covering 2 CVEs | 8.5.12-tuxcare.0 up to 8.5.12-tuxcare.2, plus listed versions 8.5.128.5.12-tuxcare.1 | 8.5.12-tuxcare.2 |
postcssTuxCare:npm From an advisory covering 2 CVEs | 8.5.14-tuxcare.0 up to 8.5.14-tuxcare.1, plus listed versions 8.5.14 | 8.5.14-tuxcare.1 |
postcssTuxCare:npm From an advisory covering 3 CVEs | 8.4.35-tuxcare.0 up to 8.4.35-tuxcare.1, plus listed versions 8.4.35 | 8.4.35-tuxcare.1 |
postcssTuxCare:npm From an advisory covering 2 CVEs | 8.2.9-tuxcare.0 up to 8.2.9-tuxcare.2, plus listed versions 8.2.98.2.9-tuxcare.1 | 8.2.9-tuxcare.2 |
postcssTuxCare:npm | 8.4.17-tuxcare.0 up to 8.4.17-tuxcare.2, plus listed versions 8.4.178.4.17-tuxcare.1 | 8.4.17-tuxcare.2 |
postcssTuxCare:npm | 8.4.33-tuxcare.0 up to 8.4.33-tuxcare.2, plus listed versions 8.4.338.4.33-tuxcare.1 | 8.4.33-tuxcare.2 |
postcssTuxCare:npm From an advisory covering 2 CVEs | 8.5.5-tuxcare.0 up to 8.5.5-tuxcare.3, plus listed versions 8.5.58.5.5-tuxcare.18.5.5-tuxcare.2 | 8.5.5-tuxcare.3 |
node-postcssDebian:12 | All versions, plus listed versions 8.4.20+~cs8.0.23-18.4.20+~cs8.0.23-1+deb12u18.4.31+~cs8.0.26-18.4.39+~cs9.2.29-18.4.49+~cs9.2.32-1 Show 14 moreShow less8.5.12+~cs9.3.32-18.5.14+~cs9.3.34-18.5.15+~cs9.3.34-18.5.15+~cs9.3.38-18.5.15+~cs9.3.39-18.5.19+~cs10.2.23-18.5.21+~cs10.2.23-18.5.23+~cs10.2.23-18.5.25+~cs10.2.23-18.5.26+~cs10.2.24-18.5.28+~cs10.2.24-18.5.6+~cs9.3.28-18.5.8+~cs9.3.30-18.5.9+~cs9.3.30-1 | None known |
node-postcssDebian:13 | All versions, plus listed versions 8.4.49+~cs9.2.32-18.5.12+~cs9.3.32-18.5.14+~cs9.3.34-18.5.15+~cs9.3.34-18.5.15+~cs9.3.38-1 Show 10 moreShow less8.5.15+~cs9.3.39-18.5.19+~cs10.2.23-18.5.21+~cs10.2.23-18.5.23+~cs10.2.23-18.5.25+~cs10.2.23-18.5.26+~cs10.2.24-18.5.28+~cs10.2.24-18.5.6+~cs9.3.28-18.5.8+~cs9.3.30-18.5.9+~cs9.3.30-1 | None known |
node-postcssDebian:14 | before 8.5.19+~cs10.2.23-1, plus listed versions 8.4.49+~cs9.2.32-18.5.12+~cs9.3.32-18.5.14+~cs9.3.34-18.5.15+~cs9.3.34-18.5.15+~cs9.3.38-1 Show 4 moreShow less8.5.15+~cs9.3.39-18.5.6+~cs9.3.28-18.5.8+~cs9.3.30-18.5.9+~cs9.3.30-1 | 8.5.19+~cs10.2.23-1 |
postcssnpm | before 8.5.18 | 8.5.18 |
prometheus3.13Red Hat:hummingbird:1 From an advisory covering 4 CVEs | before 0:3.13.2-0.2.hum1 | 0:3.13.2-0.2.hum1 |
prometheus3.5Red Hat:hummingbird:1 From an advisory covering 2 CVEs | before 0:3.5.5-0.8.hum1 | 0:3.5.5-0.8.hum1 |
postcssRoot:npm | before 8.4.49-aikido.4 | 8.4.49-aikido.46.0.1-aikido.28.4.38-aikido.28.5.3-aikido.38.4.21-aikido.28.5.15-aikido.27.0.39-aikido.78.5.8-aikido.55.2.18-aikido.57.0.32-aikido.18.4.32-aikido.17.0.36-aikido.18.5.6-aikido.56.0.23-aikido.38.4.31-aikido.48.5.6-aikido.38.5.14-aikido.18.5.15-aikido.18.5.8-aikido.47.0.39-aikido.65.2.18-aikido.48.5.3-aikido.28.5.9-aikido.38.5.6-aikido.48.4.49-aikido.38.4.38-aikido.18.4.21-aikido.16.0.23-aikido.16.0.1-aikido.16.0.23-aikido.2 |
@rootio/postcssRoot:npm | before 8.4.49-root.io.4 | 8.4.49-root.io.46.0.1-root.io.28.4.38-root.io.28.5.3-root.io.38.4.21-root.io.28.5.15-root.io.27.0.39-root.io.78.5.8-root.io.55.2.18-root.io.57.0.32-root.io.18.4.32-root.io.17.0.36-root.io.18.5.6-root.io.56.0.23-root.io.38.4.31-root.io.48.5.6-root.io.38.5.14-root.io.18.5.15-root.io.18.5.8-root.io.47.0.39-root.io.65.2.18-root.io.48.5.3-root.io.28.5.9-root.io.38.5.6-root.io.48.4.49-root.io.38.4.38-root.io.18.4.21-root.io.16.0.23-root.io.16.0.1-root.io.16.0.23-root.io.2 |
node-postcssUbuntu:20.04:LTS | All versions, plus listed versions 6.0.23-16.0.23-3 | None known |
node-postcssUbuntu:22.04:LTS | All versions, plus listed versions 8.2.1+~cs5.3.23-88.4.5+~cs7.1.51-28.4.6+~cs7.3.21-1 | None known |
node-postcssUbuntu:24.04:LTS | All versions, plus listed versions 8.4.20+~cs8.0.23-18.4.31+~cs8.0.26-1 | None known |
node-postcssUbuntu:26.04:LTS | All versions, plus listed versions 8.5.6+~cs9.3.28-18.5.8+~cs9.3.30-1 | None known |
velociraptoropenSUSE:Tumbleweed From an advisory covering 40 CVEs | before 0.76.7.0.git145.b60ef1146-1.1 | 0.76.7.0.git145.b60ef1146-1.1 |
What each source reports
CVE List Score used 7.5
PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure
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.
- Record
CVE-2026-73646- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
EUVDEUVD-2026-60239 7.5
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.
- Record
EUVD-2026-60239- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-r28c-9q8g-f849 7.5
PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure
Vulnerability Details
File: lib/previous-map.js
Line: 87-98 (loadFile), 129-144 (loadMap)
Root Cause
PostCSS auto-detects a /*# sourceMappingURL=... */ comment inside the CSS text it is asked to parse and, unless the caller explicitly passes map: false, attempts to load that path from disk as a "previous source map." This happens on every postcss.parse() / postcss().process() call by default (opt-out, not opt-in).
loadMap() builds the candidate path via join(dirname(opts.from), annotation), where annotation is the raw, attacker-controlled string from the CSS comment. path.join() normalizes but does not sandbox .. segments, so a ../../../ prefix walks the resolved path outside the intended directory. If opts.from is not set at all, the annotation is used completely unmodified — an absolute path in the CSS comment is read verbatim.
8.5.12 already fixed a strictly worse variant of this (any file, any extension, could be read) by requiring the resolved path to end in .map (loadFile()). That fix did not address the traversal itself, only the target extension. Since the join(dirname(file), map) logic has existed unchanged since PostCSS 8.0.0 (Feb 2020), any file ending in .map remains readable through this path in the current release (8.5.16).
Once loaded, MapGenerator.isMap() treats the mere presence of a loaded "previous map" as an implicit request to generate result.map, even when the caller never set the map option. If the loaded map has a sourcesContent field (common for maps emitted by bundlers/transpilers), that content is merged into result.map and returned to the caller — disclosing the traversed-to file's content to whoever supplied the CSS.
Attack Scenario
- A service accepts user-submitted CSS and runs it through PostCSS to lint/format/transform it, e.g.
postcss().process(userCss, { from: '/app/uploads/user123/input.css', to: '/app/uploads/user123/output.css' })— idiomatic usage;mapoption untouched. - Attacker submits CSS containing
/*# sourceMappingURL=../../../../some/other/app/dist/bundle.js.map */(or an absolute path iffromis unset). - PostCSS reads that
.mapfile and folds itssourcesContentintoresult.map. - The service does what most build pipelines do with a truthy
result.map— writes it next to the CSS output or returns it via API (source maps are meant to be consumed by browser devtools, so this is commonly public/served). - Attacker retrieves the emitted map and reads out the traversed file's content.
Impact
Disclosure of the contents of arbitrary .map files reachable via path traversal (or absolute path when from is unset) from the process's filesystem. Affects any application processing CSS it does not fully trust without explicitly passing map: false. No authentication or user interaction beyond submitting CSS text is required.
Vulnerable Code
loadFile(path, cssFile, trusted) {
if (!trusted && !this.unsafeMap) {
if (!/\.map$/i.test(path)) {
return undefined
}
}
this.root = dirname(path)
if (existsSync(path)) {
this.mapFile = path
return readFileSync(path, 'utf-8').toString().trim()
}
}
loadMap(file, prev) {
...
} else if (this.annotation) {
let map = this.annotation
if (file) map = join(dirname(file), map)
let unknown = this.loadFile(map, file, false)
...
}
}
Recommended Fix
Constrain the resolved path to remain inside the CSS file's own directory instead of relying solely on a filename-extension check:
loadFile(path, cssFile, trusted) {
if (!trusted && !this.unsafeMap) {
if (!/\.map$/i.test(path)) {
return undefined
}
if (!cssFile) return undefined
let root = resolve(dirname(cssFile))
let resolvedPath = resolve(root, path)
if (resolvedPath !== root && !resolvedPath.startsWith(root + sep)) {
return undefined
}
}
this.root = dirname(path)
if (existsSync(path)) {
…
- Record
GHSA-r28c-9q8g-f849- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
NVD 7.5
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.
- Record
CVE-2026-73646- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
OSV 7.5
PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure
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.
- Record
CVE-2026-73646- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-73646 7.5
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.
- Record
DEBIAN-CVE-2026-73646- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
Show 33 moreShow less
OSVGHSA-r28c-9q8g-f849 7.5
PostCSS: Path Traversal in Previous Source Map Auto-Loading (sourceMappingURL) leads to Arbitrary .map File Disclosure
Vulnerability Details
File: lib/previous-map.js
Line: 87-98 (loadFile), 129-144 (loadMap)
Root Cause
PostCSS auto-detects a /*# sourceMappingURL=... */ comment inside the CSS text it is asked to parse and, unless the caller explicitly passes map: false, attempts to load that path from disk as a "previous source map." This happens on every postcss.parse() / postcss().process() call by default (opt-out, not opt-in).
loadMap() builds the candidate path via join(dirname(opts.from), annotation), where annotation is the raw, attacker-controlled string from the CSS comment. path.join() normalizes but does not sandbox .. segments, so a ../../../ prefix walks the resolved path outside the intended directory. If opts.from is not set at all, the annotation is used completely unmodified — an absolute path in the CSS comment is read verbatim.
8.5.12 already fixed a strictly worse variant of this (any file, any extension, could be read) by requiring the resolved path to end in .map (loadFile()). That fix did not address the traversal itself, only the target extension. Since the join(dirname(file), map) logic has existed unchanged since PostCSS 8.0.0 (Feb 2020), any file ending in .map remains readable through this path in the current release (8.5.16).
Once loaded, MapGenerator.isMap() treats the mere presence of a loaded "previous map" as an implicit request to generate result.map, even when the caller never set the map option. If the loaded map has a sourcesContent field (common for maps emitted by bundlers/transpilers), that content is merged into result.map and returned to the caller — disclosing the traversed-to file's content to whoever supplied the CSS.
Attack Scenario
- A service accepts user-submitted CSS and runs it through PostCSS to lint/format/transform it, e.g.
postcss().process(userCss, { from: '/app/uploads/user123/input.css', to: '/app/uploads/user123/output.css' })— idiomatic usage;mapoption untouched. - Attacker submits CSS containing
/*# sourceMappingURL=../../../../some/other/app/dist/bundle.js.map */(or an absolute path iffromis unset). - PostCSS reads that
.mapfile and folds itssourcesContentintoresult.map. - The service does what most build pipelines do with a truthy
result.map— writes it next to the CSS output or returns it via API (source maps are meant to be consumed by browser devtools, so this is commonly public/served). - Attacker retrieves the emitted map and reads out the traversed file's content.
Impact
Disclosure of the contents of arbitrary .map files reachable via path traversal (or absolute path when from is unset) from the process's filesystem. Affects any application processing CSS it does not fully trust without explicitly passing map: false. No authentication or user interaction beyond submitting CSS text is required.
Vulnerable Code
loadFile(path, cssFile, trusted) {
if (!trusted && !this.unsafeMap) {
if (!/\.map$/i.test(path)) {
return undefined
}
}
this.root = dirname(path)
if (existsSync(path)) {
this.mapFile = path
return readFileSync(path, 'utf-8').toString().trim()
}
}
loadMap(file, prev) {
...
} else if (this.annotation) {
let map = this.annotation
if (file) map = join(dirname(file), map)
let unknown = this.loadFile(map, file, false)
...
}
}
Recommended Fix
Constrain the resolved path to remain inside the CSS file's own directory instead of relying solely on a filename-extension check:
loadFile(path, cssFile, trusted) {
if (!trusted && !this.unsafeMap) {
if (!/\.map$/i.test(path)) {
return undefined
}
if (!cssFile) return undefined
let root = resolve(dirname(cssFile))
let resolvedPath = resolve(root, path)
if (resolvedPath !== root && !resolvedPath.startsWith(root + sep)) {
return undefined
}
}
this.root = dirname(path)
if (existsSync(path)) {
…
- Record
GHSA-r28c-9q8g-f849- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
OSVRHSA-2026:50287 7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:50287- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-13
OSVRHSA-2026:54520 7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:54520- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-13
OSVUBUNTU-CVE-2026-73646 7.5
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.
- Record
UBUNTU-CVE-2026-73646- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Updated
- 2026-11-02
OSVCLSA-2026-1784856450No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 8.5.6-tuxcare.3.
- Record
CLSA-2026-1784856450- Updated
- 2026-11-02
OSVCLSA-2026-1787592261No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 8.3.6-tuxcare.5.
- Record
CLSA-2026-1787592261- Updated
- 2026-11-02
OSVCLSA-2026-1790019520No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 7.0.32-tuxcare.3.
- Record
CLSA-2026-1790019520- Updated
- 2026-11-02
OSVCLSA-2026-1790023229No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 7.0.17-tuxcare.3.
- Record
CLSA-2026-1790023229- Updated
- 2026-11-02
OSVCLSA-2026-1790023231No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 5.2.18-tuxcare.3.
- Record
CLSA-2026-1790023231- Updated
- 2026-11-02
OSVCLSA-2026-1790089248No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 8.4.14-tuxcare.5.
- Record
CLSA-2026-1790089248- Updated
- 2026-11-02
OSVCLSA-2026-1790089252No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 8.4.5-tuxcare.4.
- Record
CLSA-2026-1790089252- Updated
- 2026-11-02
OSVCLSA-2026-1790089264No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 8.4.31-tuxcare.4.
- Record
CLSA-2026-1790089264- Updated
- 2026-11-02
OSVCLSA-2026-1790089280No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 8.4.41-tuxcare.5.
- Record
CLSA-2026-1790089280- Updated
- 2026-11-02
OSVCLSA-2026-1790089282No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 8.2.15-tuxcare.4.
- Record
CLSA-2026-1790089282- Updated
- 2026-11-02
OSVCLSA-2026-1790099843No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 8.5.6-tuxcare.5.
- Record
CLSA-2026-1790099843- Updated
- 2026-11-02
OSVCLSA-2026-1790102697No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 8.2.13-tuxcare.3.
- Record
CLSA-2026-1790102697- Updated
- 2026-11-02
OSVCLSA-2026-1790541900No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 8.5.17-tuxcare.1.
- Record
CLSA-2026-1790541900- Updated
- 2026-11-02
OSVCLSA-2026-1790604941No score
TuxCare security update for postcss (6 CVEs)
TuxCare rebuilt postcss to address 6 CVEs. Fixed in 6.0.1-tuxcare.1.
- Record
CLSA-2026-1790604941- Updated
- 2026-11-02
OSVCLSA-2026-1791377049No score
TuxCare security update for postcss (2 CVEs)
TuxCare rebuilt postcss to address 2 CVEs. Fixed in 7.0.14-tuxcare.4.
- Record
CLSA-2026-1791377049- Updated
- 2026-11-02
OSVCLSA-2026-1791377114No score
TuxCare security update for postcss (2 CVEs)
TuxCare rebuilt postcss to address 2 CVEs. Fixed in 7.0.21-tuxcare.4.
- Record
CLSA-2026-1791377114- Updated
- 2026-11-02
OSVCLSA-2026-1791629015No score
TuxCare security update for postcss (2 CVEs)
TuxCare rebuilt postcss to address 2 CVEs. Fixed in 8.5.3-tuxcare.2.
- Record
CLSA-2026-1791629015- Updated
- 2026-11-02
OSVCLSA-2026-1791629172No score
TuxCare security update for postcss (2 CVEs)
TuxCare rebuilt postcss to address 2 CVEs. Fixed in 8.5.2-tuxcare.2.
- Record
CLSA-2026-1791629172- Updated
- 2026-11-02
OSVCLSA-2026-1791633202No score
TuxCare security update for postcss (4 CVEs)
TuxCare rebuilt postcss to address 4 CVEs. Fixed in 8.4.49-tuxcare.1.
- Record
CLSA-2026-1791633202- Updated
- 2026-11-02
OSVCLSA-2026-1791832298No score
TuxCare security update for postcss (2 CVEs)
TuxCare rebuilt postcss to address 2 CVEs. Fixed in 8.5.12-tuxcare.2.
- Record
CLSA-2026-1791832298- Updated
- 2026-11-02
OSVCLSA-2026-1792765677No score
TuxCare security update for postcss (2 CVEs)
TuxCare rebuilt postcss to address 2 CVEs. Fixed in 8.5.14-tuxcare.1.
- Record
CLSA-2026-1792765677- Updated
- 2026-11-02
OSVCLSA-2026-1792765790No score
TuxCare security update for postcss (3 CVEs)
TuxCare rebuilt postcss to address 3 CVEs. Fixed in 8.4.35-tuxcare.1.
- Record
CLSA-2026-1792765790- Updated
- 2026-11-02
OSVCLSA-2026-1792791822No score
TuxCare security update for postcss (3 CVEs)
TuxCare rebuilt postcss to address 3 CVEs. Fixed in 8.2.9-tuxcare.2.
- Record
CLSA-2026-1792791822- Updated
- 2026-11-02
OSVCLSA-2026-1793097120No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 8.4.17-tuxcare.2.
- Record
CLSA-2026-1793097120- Updated
- 2026-11-02
OSVCLSA-2026-1793097204No score
TuxCare security update for postcss (1 CVE)
TuxCare rebuilt postcss to address 1 CVE. Fixed in 8.4.33-tuxcare.2.
- Record
CLSA-2026-1793097204- Updated
- 2026-11-02
OSVCLSA-2026-1793125669No score
TuxCare security update for postcss (2 CVEs)
TuxCare rebuilt postcss to address 2 CVEs. Fixed in 8.5.5-tuxcare.3.
- Record
CLSA-2026-1793125669- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:12070-1No score
velociraptor-0.76.7.0.git145.b60ef1146-1.1 on GA media
These are all security issues fixed in the velociraptor-0.76.7.0.git145.b60ef1146-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:12070-1- Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2026-73646No score
CVE-2026-73646 in postcss - Patched by Root
Root has patched CVE-2026-73646 in the postcss package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-73646- Updated
- 2026-11-02
OSVROOT-APP-NPM-GHSA-r28c-9q8g-f849No score
GHSA-r28c-9q8g-f849 in postcss - Patched by Root
Root has patched GHSA-r28c-9q8g-f849 in the postcss package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-GHSA-r28c-9q8g-f849- Updated
- 2026-11-02
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, aliases, published, references | OSV | |
| affected, facts | ||
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
References
github.com/postcss/postcss/security/advisories/GHSA-r28c-9q8g-f849
github.com/postcss/postcss/commit/95663d3eb7ba26f4854dd19d3b4f4425760cf56c
github.com/postcss/postcss/releases/tag/8.5.18
github.com/advisories/GHSA-r28c-9q8g-f849
github.com/CVEProject/cvelistV5/tree/main/cves/2026/73xxx/CVE-2026-73646.json
nvd.nist.gov/vuln/detail/CVE-2026-73646
Show 75 moreShow less
security-tracker.debian.org/tracker/CVE-2026-73646
github.com/postcss/postcss
access.redhat.com/errata/RHSA-2026:50287
access.redhat.com/security/cve/CVE-2026-69153
access.redhat.com/security/updates/classification
images.redhat.com
access.redhat.com/security/cve/CVE-2026-73086
access.redhat.com/security/cve/CVE-2026-72815
access.redhat.com/security/cve/CVE-2026-73646
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_50287.json
bugzilla.redhat.com/show_bug.cgi?id=2510719
cve.org/CVERecord?id=CVE-2026-69153
nvd.nist.gov/vuln/detail/CVE-2026-69153
github.com/postcss/postcss/commit/7beca139e70f9075c6b19700fcb00dd8033e5da8
github.com/postcss/postcss/releases/tag/8.5.19
github.com/postcss/postcss/security/advisories/GHSA-fxqj-rqcc-2cmp
bugzilla.redhat.com/show_bug.cgi?id=2515988
cve.org/CVERecord?id=CVE-2026-72815
nvd.nist.gov/vuln/detail/CVE-2026-72815
github.com/go-chi/chi/security/advisories/GHSA-3fxj-6jh8-hvhx
vulncheck.com/advisories/go-chi-chi-ip-spoofing-via-x-forwarded-for-header
bugzilla.redhat.com/show_bug.cgi?id=2514175
cve.org/CVERecord?id=CVE-2026-73086
nvd.nist.gov/vuln/detail/CVE-2026-73086
github.com/ai/nanoid/commit/7087969281cab8ba8ae3babf1894e819068b3bb4
github.com/ai/nanoid/commit/821dfed7b5db7f88e92f56c60eef32c8135077c3
github.com/ai/nanoid/commit/b0036ed60dc9facd7f1191a50dfb3076500202ac
github.com/ai/nanoid/releases/tag/3.3.12
github.com/ai/nanoid/releases/tag/5.1.11
github.com/ai/nanoid/security/advisories/GHSA-xwg4-73v4-xw9w
bugzilla.redhat.com/show_bug.cgi?id=2517456
cve.org/CVERecord?id=CVE-2026-73646
access.redhat.com/errata/RHSA-2026:54520
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_54520.json
ubuntu.com/security/CVE-2026-73646
suse.com/security/cve/CVE-2025-0914
suse.com/security/cve/CVE-2026-12143
suse.com/security/cve/CVE-2026-14257
suse.com/security/cve/CVE-2026-17535
suse.com/security/cve/CVE-2026-18348
suse.com/security/cve/CVE-2026-18636
suse.com/security/cve/CVE-2026-18638
suse.com/security/cve/CVE-2026-18639
suse.com/security/cve/CVE-2026-18860
suse.com/security/cve/CVE-2026-27601
suse.com/security/cve/CVE-2026-29074
suse.com/security/cve/CVE-2026-41650
suse.com/security/cve/CVE-2026-45623
suse.com/security/cve/CVE-2026-49356
suse.com/security/cve/CVE-2026-5329
suse.com/security/cve/CVE-2026-53550
suse.com/security/cve/CVE-2026-55602
suse.com/security/cve/CVE-2026-56852
suse.com/security/cve/CVE-2026-59869
suse.com/security/cve/CVE-2026-6290
suse.com/security/cve/CVE-2026-64951
suse.com/security/cve/CVE-2026-64952
suse.com/security/cve/CVE-2026-64954
suse.com/security/cve/CVE-2026-65903
suse.com/security/cve/CVE-2026-65912
suse.com/security/cve/CVE-2026-65913
suse.com/security/cve/CVE-2026-65914
suse.com/security/cve/CVE-2026-67314
suse.com/security/cve/CVE-2026-67320
suse.com/security/cve/CVE-2026-6863
suse.com/security/cve/CVE-2026-69152
suse.com/security/cve/CVE-2026-69153
suse.com/security/cve/CVE-2026-6948
suse.com/security/cve/CVE-2026-73086
suse.com/security/cve/CVE-2026-73646
suse.com/security/cve/CVE-2026-73650
suse.com/security/cve/CVE-2026-7572
suse.com/security/cve/CVE-2026-7573
suse.com/security/cve/CVE-2026-84369
suse.com/security/cve/CVE-2026-84370
Left out here: the rest of 2 source descriptions. The JSON record has them.