[Security] Bump jinja2 from 3.1.4 to 3.1.5
Bumps jinja2 from 3.1.4 to 3.1.5. This update includes security fixes.
Vulnerabilities fixed
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.
Patched versions: 3.1.5
Affected versions: <= 3.1.4
Jinja has a sandbox breakout through indirect reference to format method
An oversight in how the Jinja sandboxed environment detects calls tostr.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'sformat
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.Patched versions: 3.1.5
Affected versions: <= 3.1.4
Release notes
Sourced from jinja2's releases.
3.1.5
This is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.
PyPI: https://pypi.org/project/Jinja2/3.1.5/ Changes: https://jinja.palletsprojects.com/changes/#version-3-1-5 Milestone: https://github.com/pallets/jinja/milestone/16?closed=1
- The sandboxed environment handles indirect calls to
str.format
, such as by passing a stored reference to a filter that calls its argument. GHSA-q2x7-8rv6-6q7h- Escape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. #1792, GHSA-gmj6-6f8f-6699
- Sandbox does not allow
clear
andpop
on known mutable sequence types. #2032- Calling sync
render
for an async template usesasyncio.run
. #1952- Avoid unclosed
auto_aiter
warnings. #1960- Return an
aclose
-ableAsyncGenerator
fromTemplate.generate_async
. #1960- Avoid leaving
root_render_func()
unclosed inTemplate.generate_async
. #1960- Avoid leaving async generators unclosed in blocks, includes and extends. #1960
- The runtime uses the correct
concat
function for the current environment when calling block references. #1701- Make
|unique
async-aware, allowing it to be used after another async-aware filter. #1781|int
filter handlesOverflowError
from scientific notation. #1921- Make compiling deterministic for tuple unpacking in a
{% set ... %}
call. #2021- Fix dunder protocol (
copy
/pickle
/etc) interaction withUndefined
objects. #2025- Fix
copy
/pickle
support for the internalmissing
object. #2027Environment.overlay(enable_async)
is applied correctly. #2061- The error message from
FileSystemLoader
includes the paths that were searched. #1661PackageLoader
shows a clearer error message when the package does not contain the templates directory. #1705- Improve annotations for methods returning copies. #1880
urlize
does not addmailto:
to values like@a@b
. #1870- Tests decorated with
@pass_context
can be used with the|select
filter. #1624- Using
set
for multiple assignment (a, b = 1, 2
) does not fail when the target is a namespace attribute. #1413- Using
set
in all branches of{% if %}{% elif %}{% else %}
blocks does not cause the variable to be considered initially undefined. #1253
Changelog
Sourced from jinja2's changelog.
Version 3.1.5
Released 2024-12-21
- The sandboxed environment handles indirect calls to
str.format
, such as by passing a stored reference to a filter that calls its argument. :ghsa:q2x7-8rv6-6q7h
- Escape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. :issue:
1792
, :ghsa:gmj6-6f8f-6699
- Sandbox does not allow
clear
andpop
on known mutable sequence types. :issue:2032
- Calling sync
render
for an async template usesasyncio.run
.🇵🇷 1952
- Avoid unclosed
auto_aiter
warnings.🇵🇷 1960
- Return an
aclose
-ableAsyncGenerator
fromTemplate.generate_async
.🇵🇷 1960
- Avoid leaving
root_render_func()
unclosed inTemplate.generate_async
.🇵🇷 1960
- Avoid leaving async generators unclosed in blocks, includes and extends.
🇵🇷 1960
- The runtime uses the correct
concat
function for the current environment when calling block references. :issue:1701
- Make
|unique
async-aware, allowing it to be used after another async-aware filter. :issue:1781
|int
filter handlesOverflowError
from scientific notation. :issue:1921
- Make compiling deterministic for tuple unpacking in a
{% set ... %}
call. :issue:2021
- Fix dunder protocol (
copy
/pickle
/etc) interaction withUndefined
objects. :issue:2025
- Fix
copy
/pickle
support for the internalmissing
object. :issue:2027
Environment.overlay(enable_async)
is applied correctly.🇵🇷 2061
- The error message from
FileSystemLoader
includes the paths that were searched. :issue:1661
PackageLoader
shows a clearer error message when the package does not contain the templates directory. :issue:1705
- Improve annotations for methods returning copies.
🇵🇷 1880
urlize
does not addmailto:
to values like@a@b
.🇵🇷 1870
- Tests decorated with
@pass_context`` can be used with the ``|select`` filter. :issue:
1624`- Using
set
for multiple assignment (a, b = 1, 2
) does not fail when the target is a namespace attribute. :issue:1413
- Using
set
in all branches of{% if %}{% elif %}{% else %}
blocks does not cause the variable to be considered initially undefined. :issue:1253
Commits
-
877f6e5
release version 3.1.5 -
8d58859
remove test pypi -
eda8fe8
update dev dependencies -
c8fdce1
Fix bug involving calling set on a template parameter within all branches of ... -
66587ce
Fix bug where set would sometimes fail within if -
fbc3a69
Add support for namespaces in tuple parsing (#1664) -
b8f4831
more comments about nsref assignment -
ee83219
Add support for namespaces in tuple assignment -
1d55cdd
Triple quotes in docs (#2064) -
8a8eafc
edit block assignment section - Additional commits viewable in compare view