GHSA-hmr5-2xcr-v8pp
Symfony Vulnerable to stored XSS in WebProfiler CodeExtension::fileExcerpt() — Unescaped Non-PHP File Rendering
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| Packagist | symfony/symfony | >= 6.4.24, < 6.4.40 | 6.4.40 |
| Packagist | symfony/symfony | >= 7.2.9, < 7.4.12 | 7.4.12 |
| Packagist | symfony/symfony | >= 8.0.0, < 8.0.12 | 8.0.12 |
| Packagist | symfony/twig-bridge | >= 6.4.24, < 6.4.40 | 6.4.40 |
| Packagist | symfony/web-profiler-bundle | >= 7.2.9, < 7.4.12 | 7.4.12 |
| Packagist | symfony/web-profiler-bundle | >= 8.0.0, < 8.0.12 | 8.0.12 |
Details
As written in the advisory (Markdown source, shown as plain text).
### Description
Symfony's profiler, a development only debug UI, renders source-code excerpts on several pages using Twig's custom `file_excerpt` filter. This filter renders PHP files via `highlight_string()` (which escapes HTML), but renders **non-PHP files** by splitting on `\n` and interpolating each line directly into `<code>{$line}</code>` with no escaping.
An attacker who can write arbitrary bytes into any file under the project root (including e.g. `var/log/dev.log`), achieves **stored XSS** against any developer who later opens that file in the profiler.
### Resolution
The `file_excerpt` filter now properly escapes each line of non-PHP files using `htmlspecialchars()` before concatenating them.
The patch for this issue is available [here](https://github.com/symfony/symfony/commit/863aa81c61166f1aa74b7732df316f76113acbdb) for branch 6.4.
### Credits
Symfony would like to thank Claude Mythos Preview (via Project Glasswing) for reporting the issue and providing the fix.
References
External links from the advisory. They lead to third-party sites.
- https://github.com/symfony/symfony/security/advisories/GHSA-hmr5-2xcr-v8pp
- https://github.com/symfony/symfony/commit/863aa81c61166f1aa74b7732df316f76113acbdb
- https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/symfony/CVE-2026-45072.yaml
- https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/twig-bridge/CVE-2026-45072.yaml
- https://github.com/FriendsOfPHP/security-advisories/blob/master/symfony/web-profiler-bundle/CVE-2026-45072.yaml
- https://github.com/symfony/symfony
- https://symfony.com/cve-2026-45072