Commit Graph

7499 Commits

Author SHA1 Message Date
Fabien Potencier afbaa2a9da Mark new SourcePolicyInterface column filter tests as @group legacy
These tests pass a SourcePolicyInterface instance to SandboxExtension, which
triggers the 3.27 deprecation. Mark them legacy and assert the deprecation
to silence the PHPUnit "unhandled deprecation" report.
2026-05-27 14:49:53 +02:00
Fabien Potencier 09c6706407 Fix sandbox bypass in the "column" filter under SourcePolicyInterface 2026-05-27 14:49:52 +02:00
Fabien Potencier 3feda8a850 feature #4817 Add a strict mode to SecurityPolicy to opt-in to the 4.0 sandbox behavior for the extends/use tags and the parent/block/attribute functions (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Add a strict mode to SecurityPolicy to opt-in to the 4.0 sandbox behavior for the extends/use tags and the parent/block/attribute functions

#4813 follow-up

As `@stof` mentioned on Slack, there is currently no way to avoid the deprecation if you want to forbid those tags.

Commits
-------

af7bf5e181 Add a strict mode to SecurityPolicy to opt-in to the 4.0 sandbox behavior for the extends/use tags and the parent/block/attribute functions
2026-05-25 14:07:18 +02:00
Fabien Potencier af7bf5e181 Add a strict mode to SecurityPolicy to opt-in to the 4.0 sandbox behavior for the extends/use tags and the parent/block/attribute functions 2026-05-25 13:40:27 +02:00
Fabien Potencier 4dde307c32 minor #4815 Document transitive behavior of allowed sandbox operations (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Document transitive behavior of allowed sandbox operations

Commits
-------

461143d700 Document transitive behavior of allowed sandbox operations
2026-05-25 08:37:54 +02:00
Fabien Potencier 461143d700 Document transitive behavior of allowed sandbox operations 2026-05-25 08:36:20 +02:00
Fabien Potencier 3b0808f455 minor #4814 Remove obsolete PHP 8.0 workaround for Closure::__invoke attribute access (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Remove obsolete PHP 8.0 workaround for Closure::__invoke attribute access

The removed code was needed for `isset($closure->__invoke)` to work with PHP pre-8.0 (to avoid a fatal error):

 * 7.4: Fatal error: Uncaught Error: Closure object cannot have properties
 * 8.0: Fatal error: Uncaught Error: Closure object cannot have properties
 * 8.1+: bool(false) clean, no error

Commits
-------

42ccc472a2 Remove obsolete PHP 8.0 workaround for Closure::__invoke attribute access
2026-05-25 08:28:24 +02:00
Fabien Potencier 42ccc472a2 Remove obsolete PHP 8.0 workaround for Closure::__invoke attribute access 2026-05-25 08:28:10 +02:00
Fabien Potencier 89e79c28f1 feature #4813 Deprecate the fact that the parent, block, and attribute functions are always allowed in a sandboxed template (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Deprecate the fact that the `parent`, `block`, and `attribute` functions are always allowed in a sandboxed template

Commits
-------

cfaa2fd030 Deprecate the fact that the `parent`, `block`, and `attribute` functions are always allowed in a sandboxed template
2026-05-24 21:22:25 +02:00
Fabien Potencier cfaa2fd030 Deprecate the fact that the parent, block, and attribute functions are always allowed in a sandboxed template 2026-05-24 21:19:56 +02:00
Fabien Potencier d0a5017fd5 bug #4812 Fix PHP 8.1+ implicit float-to-int deprecation in sandboxed array access (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Fix PHP 8.1+ implicit float-to-int deprecation in sandboxed array access

Commits
-------

33690a4a28 Fix PHP 8.1+ implicit float-to-int deprecation in sandboxed array access
2026-05-24 19:40:38 +02:00
Fabien Potencier 33690a4a28 Fix PHP 8.1+ implicit float-to-int deprecation in sandboxed array access 2026-05-24 17:39:37 +02:00
Fabien Potencier 12f0dc2a1e minor #4811 Set LANG=en_US.UTF-8 for the extra packages tests (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Set LANG=en_US.UTF-8 for the extra packages tests

Commits
-------

d016d2439f Set LANG=en_US.UTF-8 for the extra packages tests
2026-05-24 11:06:21 +02:00
Fabien Potencier d016d2439f Set LANG=en_US.UTF-8 for the extra packages tests 2026-05-24 11:00:21 +02:00
Fabien Potencier ee8e1b8651 minor #4810 Use modern PHPUnit for extra packages (fabpot)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Use modern PHPUnit for extra packages

Commits
-------

25d7eb60d7 Use per-extension PHPUnit bridge and force PHPUnit 11 on PHP 8.2+
54420847f0 Install a custom exception handler before bootstrapping KernelTestCase
2026-05-24 10:52:50 +02:00
Fabien Potencier 25d7eb60d7 Use per-extension PHPUnit bridge and force PHPUnit 11 on PHP 8.2+ 2026-05-24 10:42:56 +02:00
Fabien Potencier 54420847f0 Install a custom exception handler before bootstrapping KernelTestCase 2026-05-24 10:42:35 +02:00
Fabien Potencier 85013f01b3 minor #4809 Simplify code (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Simplify code

Commits
-------

49e59e4612 Simplify code
2026-05-24 10:00:35 +02:00
Fabien Potencier 49e59e4612 Simplify code 2026-05-24 09:57:49 +02:00
Fabien Potencier fe6cbf9fcb bug #4807 Escape root profile name in HtmlDumper (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Escape root profile name in HtmlDumper

Commits
-------

f6aca309d8 Escape root profile name in HtmlDumper
2026-05-23 09:39:33 +02:00
Fabien Potencier f6aca309d8 Escape root profile name in HtmlDumper 2026-05-23 09:39:26 +02:00
Fabien Potencier ead63cc824 bug #4808 Restrict allowed classes in Profile::unserialize() (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Restrict allowed classes in Profile::unserialize()

Commits
-------

4c1dae5e71 Restrict allowed classes in Profile::unserialize()
2026-05-23 09:38:46 +02:00
Fabien Potencier 4c1dae5e71 Restrict allowed classes in Profile::unserialize() 2026-05-23 09:09:19 +02:00
Fabien Potencier c6bbae295b Fix typo 2026-05-23 09:03:34 +02:00
Fabien Potencier 4fc0210084 Bump version 2026-05-23 08:32:22 +02:00
Fabien Potencier 3ef56b7284 feature #4803 Deprecate the "Twig\Sandbox\SourcePolicyInterface" interface (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Deprecate the "Twig\Sandbox\SourcePolicyInterface" interface

I'm deprecating this feature for the following main reasons:

* AFAICS, no open-source projects is using this feature and the only repository using it has 0 stars and 0 downloads on Packagist - if nobody find value in this feature, it's better to remove it
* As much as possible, a better strategy is to render templates written by untrusted users via a specific loader that restrict what the sandbox environment can "see".

Commits
-------

bd924d5d33 Deprecate the "Twig\Sandbox\SourcePolicyInterface" interface
2026-05-23 08:30:15 +02:00
Fabien Potencier bd924d5d33 Deprecate the "Twig\Sandbox\SourcePolicyInterface" interface 2026-05-23 08:30:05 +02:00
Fabien Potencier af86a386bf minor #4806 Remove Drupal integration tests (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Remove Drupal integration tests

Commits
-------

0a80d1a9aa Remove Drupal integration tests
2026-05-22 12:42:33 +02:00
Fabien Potencier 0a80d1a9aa Remove Drupal integration tests 2026-05-22 12:38:21 +02:00
Fabien Potencier fb3ca5e089 minor #4805 Replace FQCN with use statements in SandboxTest (fabpot)
This PR was squashed before being merged into the 3.x branch.

Discussion
----------

Replace FQCN with use statements in SandboxTest

Commits
-------

d8781e473c Do not add : void for test methods
ed6df6b4b4 Fix deprecated PHP CS Fixer rules
2026-05-22 12:31:26 +02:00
Fabien Potencier d8781e473c Do not add : void for test methods 2026-05-22 12:29:27 +02:00
Fabien Potencier ed6df6b4b4 Fix deprecated PHP CS Fixer rules 2026-05-22 12:25:06 +02:00
Fabien Potencier c006ad2f67 minor #4805 Replace FQCN with use statements in SandboxTest (fabpot)
This PR was merged into the 3.x branch.

Discussion
----------

Replace FQCN with use statements in SandboxTest

Commits
-------

a0a1f1d17d Replace FQCN with use statements in SandboxTest
2026-05-22 12:11:50 +02:00
Fabien Potencier a0a1f1d17d Replace FQCN with use statements in SandboxTest 2026-05-22 12:08:11 +02:00
Fabien Potencier 4a64b5b486 Fix CS 2026-05-21 16:34:23 +02:00
Fabien Potencier 91b3d5182d Bump version 2026-05-20 09:32:26 +02:00
Fabien Potencier 1fcae487b1 Prepare the 3.26.0 release v3.26.0 2026-05-20 09:31:59 +02:00
Fabien Potencier 40d4f8a4ab Update CHANGELOG 2026-05-20 09:23:11 +02:00
Fabien Potencier 116dae25bc security #cve-2026-46627 Document that the sandbox doesn't protect against resource exhaustion (fabpot)
This PR was merged into the twig-3.x branch.
2026-05-20 09:16:35 +02:00
Fabien Potencier 6bfa285e2f Document that the sandbox doesn't protect against resource exhaustion 2026-05-20 09:12:32 +02:00
Fabien Potencier 7923de168b security #cve-2026-46628 Pre-escape HTML input on the spaceless filter (fabpot)
This PR was merged into the twig-3.x branch.
2026-05-20 08:53:45 +02:00
Fabien Potencier 47ca88d78b security #cve-2026-46634 Document template_from_string caveats when used in a sandboxed env (fabpot)
This PR was merged into the twig-3.x branch.
2026-05-20 08:51:01 +02:00
Fabien Potencier 1cde8f2b62 Document template_from_string caveats when used in a sandboxed env 2026-05-20 08:43:49 +02:00
Fabien Potencier 3190b9ae12 Pre-escape HTML input on the spaceless filter 2026-05-20 08:29:48 +02:00
Fabien Potencier b9e6e654af Add docs on Markup about the goal of this class in the context of a sandbox 2026-05-20 08:14:13 +02:00
Fabien Potencier 673f02cb6d security #cve-2026-46635 Fix sandbox bypass in the "column" filter (alexandre-daubois)
This PR was merged into the twig-3.x branch.
2026-05-20 07:35:59 +02:00
Alexandre Daubois f05c5011c2 Fix sandbox bypass in the "column" filter 2026-05-20 07:33:52 +02:00
Fabien Potencier 2e4b6d286e security #cve-2026-47732 [Sandbox] Fix __toString() support (fabpot)
This PR was merged into the twig-3.x branch.
2026-05-20 07:31:34 +02:00
Fabien Potencier 3464990a51 security #cve-2026-47730 [Profiler] Escape template and profile names in HtmlDumper (nicolas-grekas)
This PR was merged into the twig-3.x branch.
2026-05-20 07:31:01 +02:00
Fabien Potencier 447d0b2331 Fix sandbox __toString bypasses 2026-05-20 00:18:59 +02:00