Symfony Vulnerable to stored XSS in WebProfiler CodeExtension::fileExcerpt() — Unescaped Non-PHP File Rendering
CVE-2026-45072 · GHSA-hmr5-2xcr-v8pp
- Affected
- Packagist symfony/twig-bridge >= 6.4.24, < 6.4.40
- Fixed in
- 6.4.40· Vendor fix available
- Issue
- Symfony's profiler, a development only debug UI, renders source-code excerpts on several pages using Twig's custom fileexcerpt filter. This filter renders PHP files via highlightstring() (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 fileexcerpt filter now properly escapes each line of non-PHP files using htmlspecialchars() before concatenating them. The patch for this issue is available here for branch 6.4. Credits Symfony would like to thank Claude Mythos Preview (via Project Glasswing) for reporting the issue and providing the fix.
Recommended action: Upgrade to 6.4.40 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.