Jinja2 known bugs
pypi15 known bugs in Jinja2, with affected versions, fixes and workarounds. Sourced from upstream issue trackers.
15
bugs
Known bugs
| Severity | Affected | Fixed in | Title | Status | Source |
|---|---|---|---|---|---|
| high | any | 2.8.1 | Jinja2 sandbox escape vulnerability In Pallets Jinja before 2.8.1, str.format allows a sandbox escape. | fixed | osv:GHSA-hj2j-77xm-mc5v |
| high | any | 2.7.2 | Incorrect Privilege Assignment in Jinja2 The default configuration for `bccache.FileSystemBytecodeCache` in Jinja2 before 2.7.2 does not properly create temporary files, which allows local users to gain privileges via a crafted .cache file with a name starting with `__jinja2_` in `/tmp`. | fixed | osv:GHSA-8r7q-cvjq-x353 |
| high | any | 2.10.1 | Jinja2 sandbox escape via string formatting 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. | fixed | osv:GHSA-462w-v97r-4m45 |
| medium | any | 2.11.3 | PYSEC-2021-66: advisory This affects the package jinja2 from 0.0.0 and before 2.11.3. The ReDoS vulnerability is mainly due to the `_punctuation_re regex` operator and its use of multiple wildcards. The last wildcard is the most exploitable as it searches for trailing punctuation. This issue can be mitigated by Markdown to format user content instead of the urlize filter, or by implementing request timeouts and limiting process memory. | fixed | osv:PYSEC-2021-66 |
| medium | any | 9b53045c34e61013dc8f09b7e52a555fa16bed16 | PYSEC-2019-220: advisory In Pallets Jinja before 2.8.1, str.format allows a sandbox escape. | fixed | osv:PYSEC-2019-220 |
| medium | any | 2.10.1 | PYSEC-2019-217: advisory In Pallets Jinja before 2.10.1, str.format_map allows a sandbox escape. | fixed | osv:PYSEC-2019-217 |
| medium | any | acb672b6a179567632e032f547582f30fa2f4aa7 | PYSEC-2014-82: advisory FileSystemBytecodeCache in Jinja2 2.7.2 does not properly create temporary directories, which allows local users to gain privileges by pre-creating a temporary directory with a user's uid. NOTE: this vulnerability exists because of an incomplete fix for CVE-2014-1402. | fixed | osv:PYSEC-2014-82 |
| medium | any | 2.7.2 | PYSEC-2014-8: advisory The default configuration for bccache.FileSystemBytecodeCache in Jinja2 before 2.7.2 does not properly create temporary files, which allows local users to gain privileges via a crafted .cache file with a name starting with __jinja2_ in /tmp. | fixed | osv:PYSEC-2014-8 |
| medium | any | 3.1.5 | Jinja has a sandbox breakout through indirect reference to format method An oversight in how the Jinja sandboxed environment detects calls to `str.format` allows an attacker that controls the content of a template to execute arbitrary Python code.
To exploit the vulnerability, an attacker needs to control the content of a template. Whether that is the case depends on the type of application using Jinja. This vulnerability impacts users of applications which execute untrusted templates.
Jinja's sandbox does catch calls to `str.format` and ensures they don't escape the sandbox. However, it's possible to store a reference to a malicious string's `format` method, then pass that to a filter that calls it. No such filters are built-in to Jinja, but could be present through custom filters in an application. After the fix, such indirect calls are also handled by the sandbox. | fixed | osv:GHSA-q2x7-8rv6-6q7h |
| medium | any | 3.1.4 | Jinja vulnerable to HTML attribute injection when passing user input as keys to xmlattr filter The `xmlattr` filter in affected versions of Jinja accepts keys containing non-attribute characters. XML/HTML attributes cannot contain spaces, `/`, `>`, or `=`, as each would then be interpreted as starting a separate attribute. If an application accepts keys (as opposed to only values) as user input, and renders these in pages that other users see as well, an attacker could use this to inject other attributes and perform XSS. The fix for the previous GHSA-h5c8-rqwp-cp95 CVE-2024-22195 only addressed spaces but not other characters.
Accepting keys as user input is now explicitly considered an unintended use case of the `xmlattr` filter, and code that does so without otherwise validating the input should be flagged as insecure, regardless of Jinja version. Accepting _values_ as user input continues to be safe. | fixed | osv:GHSA-h75v-3vvj-5mfj |
| medium | any | 3.1.3 | Jinja vulnerable to HTML attribute injection when passing user input as keys to xmlattr filter The `xmlattr` filter in affected versions of Jinja accepts keys containing spaces. XML/HTML attributes cannot contain spaces, as each would then be interpreted as a separate attribute. If an application accepts keys (as opposed to only values) as user input, and renders these in pages that other users see as well, an attacker could use this to inject other attributes and perform XSS. Note that accepting keys as user input is not common or a particularly intended use case of the `xmlattr` filter, and an application doing so should already be verifying what keys are provided regardless of this fix. | fixed | osv:GHSA-h5c8-rqwp-cp95 |
| medium | 3.0.0 | 3.1.5 | Jinja has a sandbox breakout through malicious filenames A bug in the Jinja compiler allows an attacker that controls both the content and filename of a template to execute arbitrary Python code, regardless of if Jinja's sandbox is used.
To exploit the vulnerability, an attacker needs to control both the filename and the contents of a template. Whether that is the case depends on the type of application using Jinja. This vulnerability impacts users of applications which execute untrusted templates where the template author can also choose the template filename. | fixed | osv:GHSA-gmj6-6f8f-6699 |
| medium | any | 2.11.3 | Regular Expression Denial of Service (ReDoS) in Jinja2 This affects the package jinja2 from 0.0.0 and before 2.11.3. The ReDOS vulnerability of the regex is mainly due to the sub-pattern [a-zA-Z0-9._-]+.[a-zA-Z0-9._-]+ This issue can be mitigated by Markdown to format user content instead of the urlize filter, or by implementing request timeouts and limiting process memory. | fixed | osv:GHSA-g3rq-g295-4j3m |
| medium | any | 2.7.2 | Insecure Temporary File in Jinja2 FileSystemBytecodeCache in Jinja2 prior to version 2.7.2 does not properly create temporary directories, which allows local users to gain privileges by pre-creating a temporary directory with a user's uid. NOTE: this vulnerability exists because of an incomplete fix for CVE-2014-1402. | fixed | osv:GHSA-fqh9-2qgg-h84h |
| medium | any | 3.1.6 | Jinja2 vulnerable to sandbox breakout through attr filter selecting format method An oversight in how the Jinja sandboxed environment interacts with the `|attr` filter allows an attacker that controls the content of a template to execute arbitrary Python code.
To exploit the vulnerability, an attacker needs to control the content of a template. Whether that is the case depends on the type of application using Jinja. This vulnerability impacts users of applications which execute untrusted templates.
Jinja's sandbox does catch calls to `str.format` and ensures they don't escape the sandbox. However, it's possible to use the `|attr` filter to get a reference to a string's plain format method, bypassing the sandbox. After the fix, the `|attr` filter no longer bypasses the environment's attribute lookup. | fixed | osv:GHSA-cpwx-vrp4-4pq7 |
API access
Get this data programmatically \u2014 free, no authentication.
curl https://depscope.dev/api/bugs/pypi/Jinja2