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,9 @@
# Safe: jinja2.Template receives a constant template source. Variables
# passed at render time are not template source and do not activate SSTI.
from jinja2 import Template
from flask import request
def handler():
t = Template("Hello, {{ name }}")
return t.render(name=request.args.get("name"))

View file

@ -0,0 +1,9 @@
# Safe: Mako TemplateLookup.get_template receives a literal template name.
# No tainted flow into the loader-path argument, no SSTI.
from mako.lookup import TemplateLookup
def handler():
lookup = TemplateLookup(directories=["/srv/templates"])
template = lookup.get_template("home.mako")
return template.render(user="anon")

View file

@ -0,0 +1,8 @@
# Safe-template-var: Flask `render_template("file.html", **vars)`. The
# first arg is a *file path* (constant), variables carry user input but
# never become template source. Must NOT fire SSTI.
from flask import render_template, request
def handler():
return render_template("greeting.html", name=request.args.get("name"))

View file

@ -0,0 +1,11 @@
# Unsafe: jinja2 Environment.compile_expression accepts an arbitrary
# expression source; tainted input compiles into an executable callable.
from jinja2 import Environment
from flask import request
def handler():
env = Environment()
expr_src = request.form["expr"]
expr = env.compile_expression(expr_src)
return str(expr({}))

View file

@ -0,0 +1,13 @@
# Unsafe: Jinja2 Environment.get_template receives an attacker-controlled
# template name. Tainted name lets the attacker swap the resolved template,
# yielding arbitrary template execution. Modeled as SSTI on the loader-path
# argument.
from jinja2 import Environment, FileSystemLoader
from flask import request
def handler():
name = request.args.get("page")
env = Environment(loader=FileSystemLoader("/srv/templates"))
template = env.get_template(name)
return template.render(user="anon")

View file

@ -0,0 +1,10 @@
# Unsafe: jinja2.Template receives a template *source* string built from
# request data. SSTI fires on the source argument.
from jinja2 import Template
from flask import request
def handler():
src = request.form["template"]
t = Template(src)
return t.render(user="anon")

View file

@ -0,0 +1,13 @@
# Unsafe: Mako TemplateLookup.get_template receives an attacker-controlled
# template name. A tainted name lets the attacker pick which file under the
# loader directory becomes the rendered template — arbitrary template
# execution, modeled as SSTI.
from mako.lookup import TemplateLookup
from flask import request
def handler():
name = request.args.get("name")
lookup = TemplateLookup(directories=["/srv/templates"])
template = lookup.get_template(name)
return template.render(user="anon")