Jinja2 sandbox escape via string formatting
High severity
GitHub Reviewed
Published
Apr 10, 2019
to the GitHub Advisory Database
•
Updated Sep 24, 2024
Description
Published by the National Vulnerability Database
Apr 7, 2019
Published to the GitHub Advisory Database
Apr 10, 2019
Reviewed
Jun 16, 2020
Last updated
Sep 24, 2024
In Pallets Jinja before 2.10.1,
str.format_map
allows a sandbox escape.The sandbox is used to restrict what code can be evaluated when rendering untrusted, user-provided templates. Due to the way string formatting works in Python, the
str.format_map
method could be used to escape the sandbox.This issue was previously addressed for the
str.format
method in Jinja 2.8.1, which discusses the issue in detail. However, the less-commonstr.format_map
method was overlooked. This release applies the same sandboxing to both methods.If you cannot upgrade Jinja, you can override the
is_safe_attribute
method on the sandbox and explicitly disallow theformat_map
method on string objects.References