new capacity bits (#67)

This commit is contained in:
Eli Peter 2026-05-07 01:29:31 -04:00 committed by GitHub
parent afaffc0df6
commit 7d0e7320e2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
261 changed files with 10591 additions and 231 deletions

View file

@ -0,0 +1,11 @@
// Safe: Handlebars.compile receives a constant template source string.
// Variables provided at render time are not template source and do not
// activate SSTI.
const Handlebars = require('handlebars');
function handler(req, res) {
const compiled = Handlebars.compile('Hello, {{name}}');
res.send(compiled({ name: req.query.name }));
}
module.exports = handler;

View file

@ -0,0 +1,13 @@
// Safe-template-var: nunjucks.renderString gets a *constant* template
// source; only the data context (arg 1) carries user input. Per the
// gated SSTI classifier (payload_args=[0]), this must NOT fire.
const nunjucks = require('nunjucks');
function handler(req, res) {
const html = nunjucks.renderString('Hello, {{ name }}', {
name: req.query.name,
});
res.send(html);
}
module.exports = handler;

View file

@ -0,0 +1,11 @@
// Unsafe: Handlebars.compile receives a template *source* string built from
// req.body. SSTI fires on the source argument.
const Handlebars = require('handlebars');
function handler(req, res) {
const tmpl = req.body.template;
const compiled = Handlebars.compile(tmpl);
res.send(compiled({}));
}
module.exports = handler;

View file

@ -0,0 +1,11 @@
// Unsafe: nunjucks.renderString receives a tainted template *source*
// string (arg 0) built from req.body; SSTI fires on the source argument.
const nunjucks = require('nunjucks');
function handler(req, res) {
const src = req.body.template;
const html = nunjucks.renderString(src, { user: 'anon' });
res.send(html);
}
module.exports = handler;