{"id":"CVE-2026-48157","aliases":["EUVD-2026-37008","GHSA-53h4-8rc4-f539"],"status":"published","title":"Slim has Reflected XSS in the HtmlErrorRenderer","description":"Slim is a PHP micro framework that enables users to write simple web applications and APIs. In versions 4.4.0 through 4.15, if an application uses HttpException::setTitle() and/or setDescription() to include untrusted/request-derived data in the error title or description (e.g. \"No products found matching '{$query}'.\"), an attacker could inject arbitrary HTML/JavaScript that executes in the victim's browser when they encounter an HTML error page generated by Slim. The vulnerability is present even with displayErrorDetails = false as the unescaped title and description are rendered on this error path. Built-in exceptions (HttpNotFoundException, HttpBadRequestException, etc.) ship plain-text defaults, so a vanilla Slim app with no user code is not exploitable. Only applications that feed untrusted data into setTitle() and/or setDescription() are affected. The issue has been fixed in 4.15.2. If developers are unable to immediately update their applications, they can work around this issue by avoiding passing untrusted/request-derived data into HttpException::setTitle() and setDescription() and using static, plain-text error copy instead.\nThey should also register a custom error renderer (an ErrorRendererInterface implementation, or a subclass of HtmlErrorRenderer that escapes the title and description) for the HTML media type.","severity":{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00167,"percentile":0.06018,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-79"],"published":"2026-06-15T20:59:23Z","modified":"2026-10-28T02:30:24Z","fixes":[{"ecosystem":"Packagist","package":"slim/slim","fixed_in":["4.15.2"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"Packagist","package":"slim/slim","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"4.4.0"},{"last_affected":"4.15.1"},{"fixed":"4.15.2"}]}]},{"source":"osv","ecosystem":"Packagist","package":"slim/slim","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"4.4.0"},{"fixed":"4.15.2"}]}],"versions":["4.10.0","4.11.0","4.12.0","4.13.0","4.14.0","4.15.0","4.15.1","4.4.0","4.5.0","4.6.0","4.7.0","4.7.1","4.8.0","4.8.1","4.9.0"]}],"products":[{"vendor":"slim","product":"slim"},{"vendor":"slimphp","product":"slim"}],"references":[{"url":"https://github.com/slimphp/Slim/security/advisories/GHSA-53h4-8rc4-f539","tags":["x_refsource_CONFIRM","advisory","web"]},{"url":"https://github.com/slimphp/Slim/releases/tag/4.15.2","tags":["x_refsource_MISC","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-48157","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-53h4-8rc4-f539"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48157.json","tags":["advisory"]},{"url":"https://github.com/slimphp/Slim","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-48157","title":"Slim has Reflected XSS in the HtmlErrorRenderer","description":"Slim is a PHP micro framework that enables users to write simple web applications and APIs. In versions 4.4.0 through 4.15, if an application uses HttpException::setTitle() and/or setDescription() to include untrusted/request-derived data in the error title or description (e.g. \"No products found matching '{$query}'.\"), an attacker could inject arbitrary HTML/JavaScript that executes in the victim's browser when they encounter an HTML error page generated by Slim. The vulnerability is present even with displayErrorDetails = false as the unescaped title and description are rendered on this error path. Built-in exceptions (HttpNotFoundException, HttpBadRequestException, etc.) ship plain-text defaults, so a vanilla Slim app with no user code is not exploitable. Only applications that feed untrusted data into setTitle() and/or setDescription() are affected. The issue has been fixed in 4.15.2. If developers are unable to immediately update their applications, they can work around this issue by avoiding passing untrusted/request-derived data into HttpException::setTitle() and setDescription() and using static, plain-text error copy instead.\nThey should also register a custom error renderer (an ErrorRendererInterface implementation, or a subclass of HtmlErrorRenderer that escapes the title and description) for the HTML media type.","status":"published","published":"2026-06-15T20:59:23.876Z","modified":"2026-06-16T12:21:36.311Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T13:50:49.872037Z"}],"euvd":[{"id":"EUVD-2026-37008","description":"Slim is a PHP micro framework that enables users to write simple web applications and APIs. In versions 4.4.0 through 4.15, if an application uses HttpException::setTitle() and/or setDescription() to include untrusted/request-derived data in the error title or description (e.g. \"No products found matching '{$query}'.\"), an attacker could inject arbitrary HTML/JavaScript that executes in the victim's browser when they encounter an HTML error page generated by Slim. The vulnerability is present even with displayErrorDetails = false as the unescaped title and description are rendered on this error path. Built-in exceptions (HttpNotFoundException, HttpBadRequestException, etc.) ship plain-text defaults, so a vanilla Slim app with no user code is not exploitable. Only applications that feed untrusted data into setTitle() and/or setDescription() are affected. The issue has been fixed in 4.15.2. If developers are unable to immediately update their applications, they can work around this issue by avoiding passing untrusted/request-derived data into HttpException::setTitle() and setDescription() and using static, plain-text error copy instead.\nThey should also register a custom error renderer (an ErrorRendererInterface implementation, or a subclass of HtmlErrorRenderer that escapes the title and description) for the HTML media type.","status":"published","published":"2026-06-15T20:59:23Z","modified":"2026-06-16T12:21:36Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"updated_at":"2026-11-02T18:20:40.975704Z"}],"ghsa":[{"id":"GHSA-53h4-8rc4-f539","title":"Slim has Reflected XSS in the HtmlErrorRenderer","description":"### Impact\n\nIf an application uses `HttpException::setTitle()` and/or `setDescription()` to include untrusted/request-derived data in the error title or description (e.g. `\"No products found matching '{$query}'.\"`), an attacker could inject arbitrary HTML/JavaScript that executes in the victim's browser when they encounter an HTML error page generated by Slim.\n\nThe vulnerability is present even with `displayErrorDetails = false` as the unescaped title and description are rendered on this error path.\n\nBuilt-in exceptions (`HttpNotFoundException`, `HttpBadRequestException`, etc.) ship plain-text defaults, so a vanilla Slim app with no user code is not exploitable. Only applications that feed untrusted data into `setTitle()` and/or `setDescription()` are affected.\n\n### Patches\n\nThe issue is fixed in 4.15.2.\n\n### Workarounds\n\nWithout upgrading, applications can:\n\n- Avoid passing untrusted/request-derived data into `HttpException::setTitle()` and `setDescription()`. Use static, plain-text error copy instead.\n- Register a custom error renderer (an `ErrorRendererInterface` implementation, or a subclass of `HtmlErrorRenderer` that escapes the title and description) for the HTML media type.\n\n### Acknowledgments\n\nSlim is grateful to and thanks GitHub user [0xEr3n](https://github.com/0xEr3n) for reporting this issue.\n\n### Resources\n\n- CWE-79: https://cwe.mitre.org/data/definitions/79.html","status":"published","published":"2026-06-23T21:54:06Z","modified":"2026-06-23T21:54:08Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:40:32.744157Z"}],"nvd":[{"id":"CVE-2026-48157","description":"Slim is a PHP micro framework that enables users to write simple web applications and APIs. In versions 4.4.0 through 4.15, if an application uses HttpException::setTitle() and/or setDescription() to include untrusted/request-derived data in the error title or description (e.g. \"No products found matching '{$query}'.\"), an attacker could inject arbitrary HTML/JavaScript that executes in the victim's browser when they encounter an HTML error page generated by Slim. The vulnerability is present even with displayErrorDetails = false as the unescaped title and description are rendered on this error path. Built-in exceptions (HttpNotFoundException, HttpBadRequestException, etc.) ship plain-text defaults, so a vanilla Slim app with no user code is not exploitable. Only applications that feed untrusted data into setTitle() and/or setDescription() are affected. The issue has been fixed in 4.15.2. If developers are unable to immediately update their applications, they can work around this issue by avoiding passing untrusted/request-derived data into HttpException::setTitle() and setDescription() and using static, plain-text error copy instead.\nThey should also register a custom error renderer (an ErrorRendererInterface implementation, or a subclass of HtmlErrorRenderer that escapes the title and description) for the HTML media type.","status":"published","published":"2026-06-15T22:16:17.09Z","modified":"2026-10-25T23:10:00.167Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T14:12:24.19758Z"}],"osv":[{"id":"CVE-2026-48157","title":"Slim has Reflected XSS in the HtmlErrorRenderer","description":"Slim is a PHP micro framework that enables users to write simple web applications and APIs. In versions 4.4.0 through 4.15, if an application uses HttpException::setTitle() and/or setDescription() to include untrusted/request-derived data in the error title or description (e.g. \"No products found matching '{$query}'.\"), an attacker could inject arbitrary HTML/JavaScript that executes in the victim's browser when they encounter an HTML error page generated by Slim. The vulnerability is present even with displayErrorDetails = false as the unescaped title and description are rendered on this error path. Built-in exceptions (HttpNotFoundException, HttpBadRequestException, etc.) ship plain-text defaults, so a vanilla Slim app with no user code is not exploitable. Only applications that feed untrusted data into setTitle() and/or setDescription() are affected. The issue has been fixed in 4.15.2. If developers are unable to immediately update their applications, they can work around this issue by avoiding passing untrusted/request-derived data into HttpException::setTitle() and setDescription() and using static, plain-text error copy instead.\nThey should also register a custom error renderer (an ErrorRendererInterface implementation, or a subclass of HtmlErrorRenderer that escapes the title and description) for the HTML media type.","status":"published","published":"2026-06-15T20:59:23.876Z","modified":"2026-10-28T02:30:24.633155336Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:45:06.701612Z"},{"id":"GHSA-53h4-8rc4-f539","title":"Slim has Reflected XSS in the HtmlErrorRenderer","description":"### Impact\n\nIf an application uses `HttpException::setTitle()` and/or `setDescription()` to include untrusted/request-derived data in the error title or description (e.g. `\"No products found matching '{$query}'.\"`), an attacker could inject arbitrary HTML/JavaScript that executes in the victim's browser when they encounter an HTML error page generated by Slim.\n\nThe vulnerability is present even with `displayErrorDetails = false` as the unescaped title and description are rendered on this error path.\n\nBuilt-in exceptions (`HttpNotFoundException`, `HttpBadRequestException`, etc.) ship plain-text defaults, so a vanilla Slim app with no user code is not exploitable. Only applications that feed untrusted data into `setTitle()` and/or `setDescription()` are affected.\n\n### Patches\n\nThe issue is fixed in 4.15.2.\n\n### Workarounds\n\nWithout upgrading, applications can:\n\n- Avoid passing untrusted/request-derived data into `HttpException::setTitle()` and `setDescription()`. Use static, plain-text error copy instead.\n- Register a custom error renderer (an `ErrorRendererInterface` implementation, or a subclass of `HtmlErrorRenderer` that escapes the title and description) for the HTML media type.\n\n### Acknowledgments\n\nSlim is grateful to and thanks GitHub user [0xEr3n](https://github.com/0xEr3n) for reporting this issue.\n\n### Resources\n\n- CWE-79: https://cwe.mitre.org/data/definitions/79.html","status":"published","published":"2026-06-23T21:54:06Z","modified":"2026-09-10T03:50:48.274978408Z","cvss":[{"version":"3.1","score":6.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-79"],"updated_at":"2026-11-02T15:46:37.864461Z"}]}}
