GitHub Advisoryadvisory · Packagist
GHSA-4j38-f5cw-54h7 Twig: The `spaceless` filter implicitly marks its output as safe
LOW
Official page ↗
- Aliases
- CVE-2026-46628
- Ecosystem
- Packagist
- Packages
- twig/twig
- Severity
- Low
- CVSS vector
- CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:U
- Weaknesses
- CWE-116
- Reviewed
- 2026-05-21
Affected packages
• Packagist twig/twig: < 3.26.0 → fixed in 3.26.0
Description
Description
The `spaceless` filter is registered with `is_safe => ['html']`, which means Twig's autoescaper does not escape its output in an HTML context. As a result, applying `spaceless` to attacker-controlled input that contains markup emits the markup unescaped even when the developer never wrote `|raw` and autoescape is enabled.
Example:
```twig
{% set payload = 'alert()' %}
{{ payload }} {# escaped #}
{{ payload|spaceless }} {# not escaped #}
```
The filter is deprecated but still functional. With the deprecation, some downstream projects (e.g. Drupal modules) have duplicated the filter and inherited the same `is_safe` flag.
Resolution
The `spaceless` filter no longer marks its output as safe. Documentation has been updated to warn that `spaceless` should not be applied to unsanitised user input.
Credits
Twig would like to thank Pierre Rudloff for reporting the issue.
Related
Alias · CVE (1)
- CVE-2026-46628 Twig is a template language for PHP. vulnerability
Weakness · CWE (1)
- CWE-116 Improper Encoding or Escaping of Output weakness