{"id":"CVE-2026-54614","aliases":["EUVD-2026-66597","GHSA-p46m-g734-vpc4"],"status":"published","title":"DebugKit: MailPreview contains unsafe reflection","description":"DebugKit provides a debugging toolbar for CakePHP applications. Prior to 4.10.3 and 5.2.4, the DebugKit MailPreview feature in src/Controller/MailPreviewController.php accepts a route-controlled previewName value in findPreview and passes the resolved class from App::className() to constructor execution without rejecting namespace separators or verifying that the class extends DebugKit\\Mailer\\MailPreview. An attacker able to access DebugKit while debug mode is enabled and the request hostname is local or allowlisted can select an unintended application class through the mail-preview preview route, resulting in arbitrary constructor execution and limited disclosure of application information. This issue is fixed in versions 4.10.3 and 5.2.4.","severity":{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00536,"percentile":0.45672,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-470"],"published":"2026-08-26T15:30:23Z","modified":"2026-10-28T02:31:03Z","fixes":[{"ecosystem":"Packagist","package":"cakephp/debug_kit","fixed_in":["4.10.3","5.2.4"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"Packagist","package":"cakephp/debug_kit","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"4.10.3"}]}]},{"source":"ghsa","ecosystem":"Packagist","package":"cakephp/debug_kit","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.0.0"},{"fixed":"5.2.4"}]}]},{"source":"osv","ecosystem":"Packagist","package":"cakephp/debug_kit","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"4.10.3"}]}],"versions":["2.2.1","2.2.2","2.2.3","2.2.4","2.2.5","2.2.6","2.2.7","2.2.8","2.2.9","3.0.0","3.0.0-beta","3.0.0-beta2","3.0.1","3.0.2","3.1.0","3.1.1","3.1.10","3.1.2","3.1.3","3.1.4","3.1.5","3.1.6","3.1.7","3.1.8","3.1.9","3.10.0","3.10.1","3.10.2","3.10.3","3.10.4","3.11.0","3.11.1","3.11.2","3.11.3","3.11.4","3.11.5","3.11.6","3.12.0","3.13.0","3.14.0","3.14.1","3.14.2","3.15.0","3.15.1","3.15.2","3.15.3","3.16.0","3.16.1","3.16.2","3.16.3","3.16.4","3.16.5","3.16.6","3.16.7","3.17.0","3.17.1","3.18.0","3.19.0","3.2.0","3.2.1","3.2.2","3.2.3","3.2.4","3.2.5","3.2.6","3.2.7","3.2.8","3.2.9","3.20.0","3.20.1","3.20.2","3.20.3","3.20.4","3.20.5","3.21.0","3.21.1","3.22.1","3.22.2","3.22.3","3.22.4","3.23.0","3.3.0","3.3.1","3.3.2","3.3.3","3.3.4","3.3.5","3.3.6","3.3.7","3.4.0","3.4.1","3.4.2","3.4.3","3.5.0","3.5.1","3.6.0","3.7.0","3.8.0","3.9.0","3.9.1","3.9.2","3.9.3","3.9.4","3.9.5","4.0.0","4.0.1","4.0.2","4.0.3","4.0.4","4.0.5","4.0.6","4.1.0","4.1.1","4.1.2","4.1.3","4.10.0","4.10.1","4.10.2","4.2.0","4.3.0","4.3.1","4.3.2","4.3.3","4.3.4","4.3.5","4.3.6","4.3.7","4.3.8","4.3.9","4.4.0","4.4.1","4.4.2","4.4.3","4.4.4","4.5.0","4.6.0","4.7.0","4.7.1","4.8.0","4.8.1","4.9.0","4.9.1","4.9.2","4.9.3","4.9.4","4.9.5","4.9.6"]},{"source":"osv","ecosystem":"Packagist","package":"cakephp/debug_kit","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.0.0"},{"fixed":"5.2.4"}]}],"versions":["5.0.0","5.0.1","5.0.2","5.0.3","5.0.4","5.0.5","5.0.6","5.1.0","5.1.1","5.1.2","5.1.3","5.1.4","5.1.5","5.2.0","5.2.1","5.2.2","5.2.3"]}],"products":[{"vendor":"cakephp","product":"debug_kit"}],"references":[{"url":"https://github.com/cakephp/debug_kit/security/advisories/GHSA-p46m-g734-vpc4","tags":["x_refsource_CONFIRM","advisory","web"]},{"url":"https://github.com/cakephp/debug_kit/pull/1078","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/cakephp/debug_kit/commit/7c4d85e984c2334b0f50cd02578a927ff9649e13","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/cakephp/debug_kit/commit/c8a2a9e07d56a5e212d95f6947f370f3b5e6eed6","tags":["x_refsource_MISC","fix","web"]},{"url":"https://github.com/cakephp/debug_kit/releases/tag/4.10.3","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/cakephp/debug_kit/releases/tag/5.2.4","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/advisories/GHSA-p46m-g734-vpc4"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54614.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-54614","tags":["advisory"]},{"url":"https://github.com/cakephp/debug_kit","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2026-54614","title":"DebugKit: MailPreview contains unsafe reflection","description":"DebugKit provides a debugging toolbar for CakePHP applications. Prior to 4.10.3 and 5.2.4, the DebugKit MailPreview feature in src/Controller/MailPreviewController.php accepts a route-controlled previewName value in findPreview and passes the resolved class from App::className() to constructor execution without rejecting namespace separators or verifying that the class extends DebugKit\\Mailer\\MailPreview. An attacker able to access DebugKit while debug mode is enabled and the request hostname is local or allowlisted can select an unintended application class through the mail-preview preview route, resulting in arbitrary constructor execution and limited disclosure of application information. This issue is fixed in versions 4.10.3 and 5.2.4.","status":"published","published":"2026-08-26T15:30:23.966Z","modified":"2026-08-29T02:40:09.901Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-470"],"updated_at":"2026-11-02T13:38:09.774038Z"}],"euvd":[{"id":"EUVD-2026-66597","description":"DebugKit provides a debugging toolbar for CakePHP applications. Prior to 4.10.3 and 5.2.4, the DebugKit MailPreview feature in src/Controller/MailPreviewController.php accepts a route-controlled previewName value in findPreview and passes the resolved class from App::className() to constructor execution without rejecting namespace separators or verifying that the class extends DebugKit\\Mailer\\MailPreview. An attacker able to access DebugKit while debug mode is enabled and the request hostname is local or allowlisted can select an unintended application class through the mail-preview preview route, resulting in arbitrary constructor execution and limited disclosure of application information. This issue is fixed in versions 4.10.3 and 5.2.4.","status":"published","published":"2026-08-26T15:30:23Z","modified":"2026-08-29T02:40:09Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T18:01:21.947009Z"}],"ghsa":[{"id":"GHSA-p46m-g734-vpc4","title":"cakephp/debug_kit: MailPreview contains unsafe reflection","description":"### Impact\n\nThe `MailPreview` feature of debugkit is vulnerable to arbitrary constructor execution. For an application to be vulnerable the following conditions must be true:\n\n1. `debug` mode must be enabled.\n2. The hostname must match a 'local' domain or be in an allowlist.\n\n### Patches\n5.2.4 and 4.10.3 contain patches for this issue.\n\n### Workarounds\nEnsure that debugkit is only part of your development dependencies, and that debug mode is disabled in production environments.","status":"published","published":"2026-08-26T15:31:01Z","modified":"2026-08-26T15:31:02Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"cwes":["CWE-470"],"updated_at":"2026-11-02T14:41:07.031507Z"}],"nvd":[{"id":"CVE-2026-54614","description":"DebugKit provides a debugging toolbar for CakePHP applications. Prior to 4.10.3 and 5.2.4, the DebugKit MailPreview feature in src/Controller/MailPreviewController.php accepts a route-controlled previewName value in findPreview and passes the resolved class from App::className() to constructor execution without rejecting namespace separators or verifying that the class extends DebugKit\\Mailer\\MailPreview. An attacker able to access DebugKit while debug mode is enabled and the request hostname is local or allowlisted can select an unintended application class through the mail-preview preview route, resulting in arbitrary constructor execution and limited disclosure of application information. This issue is fixed in versions 4.10.3 and 5.2.4.","status":"published","published":"2026-08-26T16:16:28.04Z","modified":"2026-09-09T21:09:13.08Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-470"],"updated_at":"2026-11-02T14:12:41.66469Z"}],"osv":[{"id":"CVE-2026-54614","title":"DebugKit: MailPreview contains unsafe reflection","description":"DebugKit provides a debugging toolbar for CakePHP applications. Prior to 4.10.3 and 5.2.4, the DebugKit MailPreview feature in src/Controller/MailPreviewController.php accepts a route-controlled previewName value in findPreview and passes the resolved class from App::className() to constructor execution without rejecting namespace separators or verifying that the class extends DebugKit\\Mailer\\MailPreview. An attacker able to access DebugKit while debug mode is enabled and the request hostname is local or allowlisted can select an unintended application class through the mail-preview preview route, resulting in arbitrary constructor execution and limited disclosure of application information. This issue is fixed in versions 4.10.3 and 5.2.4.","status":"published","published":"2026-08-26T15:30:23.966Z","modified":"2026-10-28T02:31:03.215505754Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"cwes":["CWE-470"],"updated_at":"2026-11-02T15:45:10.818486Z"},{"id":"GHSA-p46m-g734-vpc4","title":"cakephp/debug_kit: MailPreview contains unsafe reflection","description":"### Impact\n\nThe `MailPreview` feature of debugkit is vulnerable to arbitrary constructor execution. For an application to be vulnerable the following conditions must be true:\n\n1. `debug` mode must be enabled.\n2. The hostname must match a 'local' domain or be in an allowlist.\n\n### Patches\n5.2.4 and 4.10.3 contain patches for this issue.\n\n### Workarounds\nEnsure that debugkit is only part of your development dependencies, and that debug mode is disabled in production environments.","status":"published","published":"2026-08-26T15:31:01Z","modified":"2026-08-26T15:56:18.384574Z","cvss":[{"version":"3.1","score":4.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","level":"medium"}],"cwes":["CWE-470"],"updated_at":"2026-11-02T15:46:52.534897Z"}]}}
