Skip to content

Update dependency postcss to v8.5.10 [SECURITY]#107

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-postcss-vulnerability
Open

Update dependency postcss to v8.5.10 [SECURITY]#107
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/npm-postcss-vulnerability

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Jan 10, 2026

This PR contains the following updates:

Package Change Age Confidence
postcss (source) 8.4.248.5.10 age confidence

PostCSS line return parsing error

CVE-2023-44270 / GHSA-7fh5-64p2-3v2j

More information

Details

An issue was discovered in PostCSS before 8.4.31. It affects linters using PostCSS to parse external Cascading Style Sheets (CSS). There may be \r discrepancies, as demonstrated by @font-face{ font:(\r/*);} in a rule.

This vulnerability affects linters using PostCSS to parse external untrusted CSS. An attacker can prepare CSS in such a way that it will contains parts parsed by PostCSS as a CSS comment. After processing by PostCSS, it will be included in the PostCSS output in CSS nodes (rules, properties) despite being originally included in a comment.

Severity

  • CVSS Score: 5.3 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


PostCSS has XSS via Unescaped </style> in its CSS Stringify Output

CVE-2026-41305 / GHSA-qx2v-qp2m-jg93

More information

Details

PostCSS: XSS via Unescaped </style> in CSS Stringify Output
Summary

PostCSS v8.5.5 (latest) does not escape </style> sequences when stringifying CSS ASTs. When user-submitted CSS is parsed and re-stringified for embedding in HTML <style> tags, </style> in CSS values breaks out of the style context, enabling XSS.

Proof of Concept
const postcss = require('postcss');

// Parse user CSS and re-stringify for page embedding
const userCSS = 'body { content: "</style><script>alert(1)</script><style>"; }';
const ast = postcss.parse(userCSS);
const output = ast.toResult().css;
const html = `<style>${output}</style>`;

console.log(html);
// <style>body { content: "</style><script>alert(1)</script><style>"; }</style>
//
// Browser: </style> closes the style tag, <script> executes

Tested output (Node.js v22, postcss v8.5.5):

Input: body { content: "</style><script>alert(1)</script><style>"; }
Output: body { content: "</style><script>alert(1)</script><style>"; }
Contains </style>: true
Impact

Impact non-bundler use cases since bundlers for XSS on their own. Requires some PostCSS plugin to have malware code, which can inject XSS to website.

Suggested Fix

Escape </style in all stringified output values:

output = output.replace(/<\/(style)/gi, '<\\/$1');
Credits

Discovered and reported by Sunil Kumar (@​TharVid)

Severity

  • CVSS Score: 6.1 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

postcss/postcss (postcss)

v8.5.10

Compare Source

  • Fixed XSS via unescaped </style> in non-bundler cases (by @​TharVid).

v8.5.9

Compare Source

  • Speed up source map encoding paring in case of the error.

v8.5.8

Compare Source

  • Fixed Processor#version.

v8.5.7

Compare Source

  • Improved source map annotation cleaning performance (by CodeAnt AI).

v8.5.6

Compare Source

  • Fixed ContainerWithChildren type discriminating (by @​Goodwine).

v8.5.5

Compare Source

  • Fixed package.jsonexports compatibility with some tools (by @​JounQin).

v8.5.4

Compare Source

v8.5.3

Compare Source

v8.5.2

Compare Source

v8.5.1

Compare Source

v8.5.0: 8.5 “Duke Alloces”

Compare Source

President Alloces seal

PostCSS 8.5 brought API to work better with non-CSS sources like HTML, Vue.js/Svelte sources or CSS-in-JS.

@​romainmenke during his work on Stylelint added Input#document in additional to Input#css.

root.source.input.document //=> "<p>Hello</p>
                           //    <style>
                           //    p {
                           //      color: green;
                           //    }
                           //    </style>"
root.source.input.css      //=> "p {
                           //      color: green;
                           //    }"

Thanks to Sponsors

This release was possible thanks to our community.

If your company wants to support the sustainability of front-end infrastructure or wants to give some love to PostCSS, you can join our supporters by:

v8.4.49

Compare Source

v8.4.48

Compare Source

  • Fixed position calculation in error/warnings methods (by @​romainmenke).

v8.4.47

Compare Source

  • Removed debug code.

v8.4.46

Compare Source

  • Fixed Cannot read properties of undefined (reading 'before').

v8.4.45

Compare Source

  • Removed unnecessary fix which could lead to infinite loop.

v8.4.44

Compare Source

  • Another way to fix markClean is not a function error.

v8.4.43

Compare Source

  • Fixed markClean is not a function error.

v8.4.42

Compare Source

  • Fixed CSS syntax error on long minified files (by @​varpstar).

v8.4.41

Compare Source

v8.4.40

Compare Source

  • Moved to getter/setter in nodes types to help Sass team (by @​nex3).

v8.4.39

Compare Source

v8.4.38

Compare Source

v8.4.37

Compare Source

  • Fixed original.column are not numbers error in another case.

v8.4.36

Compare Source

  • Fixed original.column are not numbers error on broken previous source map.

v8.4.35

Compare Source

  • Avoid ! in node.parent.nodes type.
  • Allow to pass undefined to node adding method to simplify types.

v8.4.34

Compare Source

  • Fixed AtRule#nodes type (by Tim Weißenfels).
  • Cleaned up code (by Dmitry Kirillov).

v8.4.33

Compare Source

  • Fixed NoWorkResult behavior difference with normal mode (by Romain Menke).
  • Fixed NoWorkResult usage conditions (by @​ahmdammarr).

v8.4.32

Compare Source

  • Fixed postcss().process() types (by Andrew Ferreira).

v8.4.31

Compare Source

v8.4.30

Compare Source

  • Improved source map performance (by Romain Menke).

v8.4.29

Compare Source

  • Fixed Node#source.offset (by Ido Rosenthal).
  • Fixed docs (by Christian Oliff).

v8.4.28

Compare Source

  • Fixed Root.source.end for better source map (by Romain Menke).
  • Fixed Result.root types when process() has no parser.

v8.4.27

Compare Source

  • Fixed Container clone methods types.

v8.4.26

Compare Source

  • Fixed clone methods types.

v8.4.25

Compare Source


Configuration

📅 Schedule: (in timezone UTC)

  • Branch creation
    • ""
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
Copy link
Copy Markdown
Contributor Author

renovate Bot commented Jan 10, 2026

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: package-lock.json
npm warn Unknown env config "store". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
npm error code ERESOLVE
npm error ERESOLVE could not resolve
npm error
npm error While resolving: @rollup/plugin-babel@6.0.3
npm error Found: rollup@4.56.0
npm error node_modules/rollup
npm error   peerOptional rollup@"^2.68.0||^3.0.0||^4.0.0" from @rollup/plugin-commonjs@29.0.0
npm error   node_modules/@rollup/plugin-commonjs
npm error     dev @rollup/plugin-commonjs@"^29.0.0" from the root project
npm error   peerOptional rollup@"^2.78.0||^3.0.0||^4.0.0" from @rollup/plugin-node-resolve@16.0.3
npm error   node_modules/@rollup/plugin-node-resolve
npm error     dev @rollup/plugin-node-resolve@"^16.0.0" from the root project
npm error   2 more (@rollup/pluginutils, the root project)
npm error
npm error Could not resolve dependency:
npm error peerOptional rollup@"^1.20.0||^2.0.0||^3.0.0" from @rollup/plugin-babel@6.0.3
npm error node_modules/@rollup/plugin-babel
npm error   dev @rollup/plugin-babel@"^6.0.3" from the root project
npm error
npm error Conflicting peer dependency: rollup@3.30.0
npm error node_modules/rollup
npm error   peerOptional rollup@"^1.20.0||^2.0.0||^3.0.0" from @rollup/plugin-babel@6.0.3
npm error   node_modules/@rollup/plugin-babel
npm error     dev @rollup/plugin-babel@"^6.0.3" from the root project
npm error
npm error Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
npm error
npm error
npm error For a full report see:
npm error /runner/cache/others/npm/_logs/2026-05-12T13_43_02_461Z-eresolve-report.txt
npm error A complete log of this run can be found in: /runner/cache/others/npm/_logs/2026-05-12T13_43_02_461Z-debug-0.log

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jan 10, 2026

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • 🔍 Trigger a full review

Comment @coderabbitai help to get the list of available commands and usage tips.

@renovate renovate Bot force-pushed the renovate/npm-postcss-vulnerability branch 2 times, most recently from 220e06c to 2c8c0ef Compare January 23, 2026 11:49
@renovate renovate Bot force-pushed the renovate/npm-postcss-vulnerability branch from 2c8c0ef to 22e59e1 Compare February 2, 2026 17:13
@renovate renovate Bot force-pushed the renovate/npm-postcss-vulnerability branch from 22e59e1 to aefe97f Compare March 8, 2026 08:05
@renovate renovate Bot changed the title Update dependency postcss to v8.4.31 [SECURITY] Update dependency postcss to v8.4.31 [SECURITY] - autoclosed Mar 27, 2026
@renovate renovate Bot closed this Mar 27, 2026
@renovate renovate Bot deleted the renovate/npm-postcss-vulnerability branch March 27, 2026 02:45
@renovate renovate Bot changed the title Update dependency postcss to v8.4.31 [SECURITY] - autoclosed Update dependency postcss to v8.4.31 [SECURITY] Mar 30, 2026
@renovate renovate Bot reopened this Mar 30, 2026
@renovate renovate Bot force-pushed the renovate/npm-postcss-vulnerability branch from aefe97f to 3b0d5fc Compare March 30, 2026 19:05
@renovate renovate Bot force-pushed the renovate/npm-postcss-vulnerability branch from 3b0d5fc to ea7f9c3 Compare April 8, 2026 16:44
@renovate renovate Bot force-pushed the renovate/npm-postcss-vulnerability branch from ea7f9c3 to e19609f Compare April 29, 2026 18:00
@renovate renovate Bot force-pushed the renovate/npm-postcss-vulnerability branch from e19609f to 0186200 Compare May 9, 2026 18:22
@renovate renovate Bot changed the title Update dependency postcss to v8.4.31 [SECURITY] Update dependency postcss to v8.5.10 [SECURITY] May 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants