{"id":"GHSA-hmr5-2xcr-v8pp","aliases":["CVE-2026-45072"],"title":"Symfony Vulnerable to stored XSS in WebProfiler CodeExtension::fileExcerpt() — Unescaped Non-PHP File Rendering","description":"### Description\n\nSymfony'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. \n\nAn 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.\n\n### Resolution\n\nThe `file_excerpt` filter now properly escapes each line of non-PHP files using `htmlspecialchars()` before concatenating them.\n\nThe patch for this issue is available [here](https://github.com/symfony/symfony/commit/863aa81c61166f1aa74b7732df316f76113acbdb) for branch 6.4.\n\n### Credits\n\nSymfony would like to thank Claude Mythos Preview (via Project Glasswing) for reporting the issue and providing the fix.","severity":"low","score":1.2,"published":"2026-05-27T21:10:44.000Z","modified":"2026-09-10T03:51:06.007Z","withdrawn":false,"knownExploited":false,"affected":[{"ecosystem":"Packagist","name":"symfony/symfony","ranges":[{"events":[{"introduced":"6.4.24"},{"fixed":"6.4.40"}],"type":"ECOSYSTEM"}],"versions":["v6.4.24","v6.4.25","v6.4.26","v6.4.27","v6.4.28","v6.4.29","v6.4.30","v6.4.31","v6.4.32","v6.4.33","v6.4.34","v6.4.35","v6.4.36","v6.4.37","v6.4.38","v6.4.39"],"fixed":["6.4.40"]},{"ecosystem":"Packagist","name":"symfony/symfony","ranges":[{"events":[{"introduced":"7.2.9"},{"fixed":"7.4.12"}],"type":"ECOSYSTEM"}],"versions":["v7.2.9","v7.3.0","v7.3.0-BETA1","v7.3.0-BETA2","v7.3.0-RC1","v7.3.1","v7.3.10","v7.3.11","v7.3.2","v7.3.3","v7.3.4","v7.3.5","v7.3.6","v7.3.7","v7.3.8","v7.3.9","v7.4.0","v7.4.0-BETA1","v7.4.0-BETA2","v7.4.0-RC1","v7.4.0-RC2","v7.4.0-RC3","v7.4.1","v7.4.10","v7.4.11","v7.4.2","v7.4.3","v7.4.4","v7.4.5","v7.4.6","v7.4.7","v7.4.8","v7.4.9"],"fixed":["7.4.12"]},{"ecosystem":"Packagist","name":"symfony/symfony","ranges":[{"events":[{"introduced":"8.0.0"},{"fixed":"8.0.12"}],"type":"ECOSYSTEM"}],"versions":["v8.0.0","v8.0.1","v8.0.10","v8.0.11","v8.0.2","v8.0.3","v8.0.4","v8.0.5","v8.0.6","v8.0.7","v8.0.8","v8.0.9"],"fixed":["8.0.12"]},{"ecosystem":"Packagist","name":"symfony/twig-bridge","ranges":[{"events":[{"introduced":"6.4.24"},{"fixed":"6.4.40"}],"type":"ECOSYSTEM"}],"versions":["v6.4.24","v6.4.25","v6.4.30","v6.4.31","v6.4.32","v6.4.34","v6.4.35","v6.4.36"],"fixed":["6.4.40"]},{"ecosystem":"Packagist","name":"symfony/web-profiler-bundle","ranges":[{"events":[{"introduced":"7.2.9"},{"fixed":"7.4.12"}],"type":"ECOSYSTEM"}],"versions":["v7.2.9","v7.3.0","v7.3.0-BETA1","v7.3.0-RC1","v7.3.1","v7.3.10","v7.3.2","v7.3.3","v7.3.4","v7.3.5","v7.3.9","v7.4.0","v7.4.0-BETA1","v7.4.0-RC1","v7.4.0-RC3","v7.4.11","v7.4.3","v7.4.4","v7.4.6","v7.4.7","v7.4.8","v7.4.9"],"fixed":["7.4.12"]},{"ecosystem":"Packagist","name":"symfony/web-profiler-bundle","ranges":[{"events":[{"introduced":"8.0.0"},{"fixed":"8.0.12"}],"type":"ECOSYSTEM"}],"versions":["v8.0.0","v8.0.11","v8.0.3","v8.0.4","v8.0.6","v8.0.7","v8.0.8","v8.0.9"],"fixed":["8.0.12"]}],"references":["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"],"sources":[{"name":"OSV","id":"GHSA-hmr5-2xcr-v8pp","modified":"2026-09-10T03:51:06.007105097Z","url":"https://osv.dev/vulnerability/GHSA-hmr5-2xcr-v8pp"}],"assessments":[{"source":"OSV","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:U","score":1.2}]}