{"id":"GHSA-p493-635q-r6gr","summary":"Remote code execution via the `pretty` option.","details":"### Impact\n\nIf 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.\n\n### Patches\n\nUpgrade to `pug@3.0.1` or `pug-code-gen@3.0.2` or `pug-code-gen@2.0.3`, which correctly sanitise the parameter.\n\n### Workarounds\n\nIf 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.\n\n### References\n\n\nOriginal report: https://github.com/pugjs/pug/issues/3312\n\n### For more information\n\nIf you believe you have found other vulnerabilities, please **DO NOT** open an issue. Instead, you can follow the instructions in our [Security Policy](https://github.com/pugjs/pug/blob/master/SECURITY.md)","aliases":["CVE-2021-21353"],"modified":"2026-09-10T03:49:14.371503003Z","published":"2021-03-03T02:03:52Z","database_specific":{"nvd_published_at":"2021-03-03T02:15:00Z","cwe_ids":["CWE-74","CWE-94"],"severity":"MODERATE","github_reviewed":true,"github_reviewed_at":"2021-03-03T01:49:22Z"},"references":[{"type":"WEB","url":"https://github.com/pugjs/pug/security/advisories/GHSA-p493-635q-r6gr"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2021-21353"},{"type":"WEB","url":"https://github.com/pugjs/pug/issues/3312"},{"type":"WEB","url":"https://github.com/pugjs/pug/pull/3314"},{"type":"WEB","url":"https://github.com/pugjs/pug/commit/991e78f7c4220b2f8da042877c6f0ef5a4683be0"},{"type":"WEB","url":"https://github.com/pugjs/pug/releases/tag/pug%403.0.1"},{"type":"WEB","url":"https://www.npmjs.com/package/pug"},{"type":"WEB","url":"https://www.npmjs.com/package/pug-code-gen"}],"affected":[{"package":{"name":"pug","ecosystem":"npm","purl":"pkg:npm/pug"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"3.0.1"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/03/GHSA-p493-635q-r6gr/GHSA-p493-635q-r6gr.json"}},{"package":{"name":"pug-code-gen","ecosystem":"npm","purl":"pkg:npm/pug-code-gen"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.0.3"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/03/GHSA-p493-635q-r6gr/GHSA-p493-635q-r6gr.json"}},{"package":{"name":"pug-code-gen","ecosystem":"npm","purl":"pkg:npm/pug-code-gen"},"ranges":[{"type":"SEMVER","events":[{"introduced":"3.0.0"},{"fixed":"3.0.2"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/03/GHSA-p493-635q-r6gr/GHSA-p493-635q-r6gr.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:H/A:N"}]}