Skip to content

Conversation

@renovate
Copy link

@renovate renovate bot commented May 28, 2023

This PR contains the following updates:

Package Change Age Confidence
pug (source) 2.0.3 -> 3.0.1 age confidence

GitHub Vulnerability Alerts

CVE-2021-21353

Impact

If a remote attacker was able to control the pretty option of the pug compiler, e.g. if you spread a user provided object such as the query parameters of a request into the pug template inputs, it was possible for them to achieve remote code execution on the node.js backend.

Patches

Upgrade to pug@3.0.1 or pug-code-gen@3.0.2 or pug-code-gen@2.0.3, which correctly sanitise the parameter.

Workarounds

If there is no way for un-trusted input to be passed to pug as the pretty option, e.g. if you compile templates in advance before applying user input to them, you do not need to upgrade.

References

Original report: https://github.com/pugjs/pug/issues/3312

For more information

If you believe you have found other vulnerabilities, please DO NOT open an issue. Instead, you can follow the instructions in our Security Policy


Release Notes

pugjs/pug (pug)

v3.0.1

Compare Source

Bug Fixes

  • Sanitise the pretty option (#​3314)

    If a malicious attacker could control the pretty option, it was possible for them to achieve remote code execution on the server rendering the template. All pug users should upgrade as soon as possible, see #​3312 for more details.

v3.0.0

Compare Source

Breaking Changes

  • read plugins must now return Buffer if you want to support filters that use renderBuffer (#​3213)

    If you don't wish to support this advanced use case, you can continue returning string. If you did not provide a read plugin, you do not need to do anything.

  • The minify option on filters now requires you to install the relevant jstransformer (#​3084)

    Currently we support:

    • jstransformer-uglify-js for JavaScript
    • jstransformer-clean-css for CSS
  • Drop support for node 6 and 8 (#​3243)

New Features

  • Support filters that apply to Buffers (#​3213)

    e.g.

    // options.js
    exports.filters = {
      png: {
        // instead of a function, specify an object with a "renderBuffer" property
        // whose value is a function that takes a Buffer instead of a string
        renderBuffer: function(buffer, options) {
          var data = Buffer.from(buffer).toString('base64');
          return '<img src="data:image/png;base64, ' + data + '"/>';
        }
      }
    };

    You can then use the filter like:

    // foo.pug
    include:png my-small-image.png
  • Add support for replacing code gen via a plugin with generateCode (#​3230)

  • Support each ... of ... loops (#​3179)

    each value of iterable
      li= value

    This requires an environment that supports the for (const val of iterable) syntax in JS. You can iterate over Maps, Sets etc. as well as arrays. There is also some destructuring of map keys:

    - const map = new Map([['a', 'x'], ['b', 'y']]);
    each [key, value] of map
      li
        strong= key
        = value

v2.0.4: 2.0.4

Compare Source

  • fix: improve error message when requiring a filter that's not installed
  • fix: toJSON is now only called on object-like values
  • fix: preLex plugins were not called when compiling from a string
  • perf: add "files" property to exclude un-used files from package and reduce install size
  • feat: support ... spread attributes when compiling to JSX N.B. this will not work when rendering to HTML

Configuration

📅 Schedule: Branch creation - "" (UTC), 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 renovate bot force-pushed the renovate/npm-pug-vulnerability branch 2 times, most recently from 7992872 to 46a2f85 Compare August 13, 2025 16:24
@renovate renovate bot force-pushed the renovate/npm-pug-vulnerability branch from 46a2f85 to 792fd02 Compare August 19, 2025 18:58
@renovate renovate bot force-pushed the renovate/npm-pug-vulnerability branch from 792fd02 to 8712c95 Compare September 25, 2025 18:33
@renovate renovate bot force-pushed the renovate/npm-pug-vulnerability branch 2 times, most recently from 034325d to b816c5a Compare October 21, 2025 09:51
@renovate renovate bot force-pushed the renovate/npm-pug-vulnerability branch from b816c5a to b524716 Compare November 10, 2025 21:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant