{"api_version":"1","generated_at":"2026-08-27T01:20:05+00:00","cve":"CVE-2026-54614","urls":{"html":"https://cve.report/CVE-2026-54614","api":"https://cve.report/api/cve/CVE-2026-54614.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-54614","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-54614"},"summary":{"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.","state":"PUBLISHED","assigner":"GitHub_M","published_at":"2026-08-26 16:16:28","updated_at":"2026-08-26 16:16:28"},"problem_types":["CWE-470","CWE-470 CWE-470: Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')"],"metrics":[{"version":"3.1","source":"security-advisories@github.com","type":"Secondary","score":"4.3","severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","baseScore":4.3,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"LOW","integrityImpact":"NONE","availabilityImpact":"NONE"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"4.3","severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","data":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":4.3,"baseSeverity":"MEDIUM","confidentialityImpact":"LOW","integrityImpact":"NONE","privilegesRequired":"LOW","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","version":"3.1"}}],"references":[{"url":"https://github.com/cakephp/debug_kit/releases/tag/5.2.4","name":"https://github.com/cakephp/debug_kit/releases/tag/5.2.4","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/cakephp/debug_kit/security/advisories/GHSA-p46m-g734-vpc4","name":"https://github.com/cakephp/debug_kit/security/advisories/GHSA-p46m-g734-vpc4","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/cakephp/debug_kit/pull/1078","name":"https://github.com/cakephp/debug_kit/pull/1078","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/cakephp/debug_kit/commit/7c4d85e984c2334b0f50cd02578a927ff9649e13","name":"https://github.com/cakephp/debug_kit/commit/7c4d85e984c2334b0f50cd02578a927ff9649e13","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/cakephp/debug_kit/commit/c8a2a9e07d56a5e212d95f6947f370f3b5e6eed6","name":"https://github.com/cakephp/debug_kit/commit/c8a2a9e07d56a5e212d95f6947f370f3b5e6eed6","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/cakephp/debug_kit/releases/tag/4.10.3","name":"https://github.com/cakephp/debug_kit/releases/tag/4.10.3","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-54614","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-54614","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"cakephp","product":"debug_kit","version":"affected < 4.10.3","platforms":[]},{"source":"CNA","vendor":"cakephp","product":"debug_kit","version":"affected >= 5.0.0, < 5.2.4","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"product":"debug_kit","vendor":"cakephp","versions":[{"status":"affected","version":"< 4.10.3"},{"status":"affected","version":">= 5.0.0, < 5.2.4"}]}],"descriptions":[{"lang":"en","value":"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."}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":4.3,"baseSeverity":"MEDIUM","confidentialityImpact":"LOW","integrityImpact":"NONE","privilegesRequired":"LOW","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-470","description":"CWE-470: Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-08-26T15:30:23.966Z","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","shortName":"GitHub_M"},"references":[{"name":"https://github.com/cakephp/debug_kit/security/advisories/GHSA-p46m-g734-vpc4","tags":["x_refsource_CONFIRM"],"url":"https://github.com/cakephp/debug_kit/security/advisories/GHSA-p46m-g734-vpc4"},{"name":"https://github.com/cakephp/debug_kit/pull/1078","tags":["x_refsource_MISC"],"url":"https://github.com/cakephp/debug_kit/pull/1078"},{"name":"https://github.com/cakephp/debug_kit/commit/7c4d85e984c2334b0f50cd02578a927ff9649e13","tags":["x_refsource_MISC"],"url":"https://github.com/cakephp/debug_kit/commit/7c4d85e984c2334b0f50cd02578a927ff9649e13"},{"name":"https://github.com/cakephp/debug_kit/commit/c8a2a9e07d56a5e212d95f6947f370f3b5e6eed6","tags":["x_refsource_MISC"],"url":"https://github.com/cakephp/debug_kit/commit/c8a2a9e07d56a5e212d95f6947f370f3b5e6eed6"},{"name":"https://github.com/cakephp/debug_kit/releases/tag/4.10.3","tags":["x_refsource_MISC"],"url":"https://github.com/cakephp/debug_kit/releases/tag/4.10.3"},{"name":"https://github.com/cakephp/debug_kit/releases/tag/5.2.4","tags":["x_refsource_MISC"],"url":"https://github.com/cakephp/debug_kit/releases/tag/5.2.4"}],"source":{"advisory":"GHSA-p46m-g734-vpc4","discovery":"UNKNOWN"},"title":"DebugKit: MailPreview contains unsafe reflection"}},"cveMetadata":{"assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","assignerShortName":"GitHub_M","cveId":"CVE-2026-54614","datePublished":"2026-08-26T15:30:23.966Z","dateReserved":"2026-06-15T19:45:23.541Z","dateUpdated":"2026-08-26T15:30:23.966Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-26 16:16:28","lastModifiedDate":"2026-08-26 16:16:28","problem_types":["CWE-470","CWE-470 CWE-470: Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')"],"metrics":{"cvssMetricV31":[{"source":"security-advisories@github.com","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N","baseScore":4.3,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"LOW","integrityImpact":"NONE","availabilityImpact":"NONE"},"exploitabilityScore":2.8,"impactScore":1.4}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"54614","Ordinal":"1","Title":"DebugKit: MailPreview contains unsafe reflection","CVE":"CVE-2026-54614","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"54614","Ordinal":"1","NoteData":"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.","Type":"Description","Title":"DebugKit: MailPreview contains unsafe reflection"}]}}}