Skip to content

Jinja2 sandbox escape via string formatting

High severity GitHub Reviewed Published Apr 10, 2019 to the GitHub Advisory Database • Updated Aug 30, 2023

Package

pip Jinja2 (pip)

Affected versions

< 2.10.1

Patched versions

2.10.1

Description

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-common str.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 the format_map method on string objects.

References

Published by the National Vulnerability Database Apr 7, 2019
Published to the GitHub Advisory Database Apr 10, 2019
Reviewed Jun 16, 2020
Last updated Aug 30, 2023

Severity

High
8.6
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Changed
Confidentiality
High
Integrity
None
Availability
None
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N

Weaknesses

CVE ID

CVE-2019-10906

GHSA ID

GHSA-462w-v97r-4m45

Source code

No known source code
Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.