{"api_version":"1","generated_at":"2026-10-27T15:25:49+00:00","cve":"CVE-2025-54065","urls":{"html":"https://cve.report/CVE-2025-54065","api":"https://cve.report/api/cve/CVE-2025-54065.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2025-54065","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2025-54065"},"summary":{"title":"GZDoom engine allows arbitrary code execution via ZScript actor states","description":"GZDoom is a feature centric port for all Doom engine games. GZDoom is an open source Doom engine. In versions 4.14.2 and earlier, ZScript actor state handling allows scripts to read arbitrary addresses, write constants into the JIT-compiled code section, and redirect control flow through crafted FState and VMFunction structures. A script can copy FState structures into a writable buffer, modify function pointers and state transitions, and cause execution of attacker-controlled bytecode, leading to arbitrary code execution.","state":"PUBLISHED","assigner":"GitHub_M","published_at":"2025-12-03 17:15:52","updated_at":"2026-10-18 17:10:00"},"problem_types":["CWE-913","CWE-913 CWE-913: Improper Control of Dynamically-Managed Code Resources"],"metrics":[{"version":"3.1","source":"security-advisories@github.com","type":"Secondary","score":"7.9","severity":"HIGH","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N","baseScore":7.9,"baseSeverity":"HIGH","attackVector":"LOCAL","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"REQUIRED","scope":"CHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"NONE"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"7.8","severity":"HIGH","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N","data":{"attackComplexity":"LOW","attackVector":"LOCAL","availabilityImpact":"NONE","baseScore":7.8,"baseSeverity":"HIGH","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"LOW","scope":"CHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N","version":"3.1"}}],"references":[{"url":"https://github.com/ZDoom/gzdoom/security/advisories/GHSA-prhc-chfw-32jg","name":"https://github.com/ZDoom/gzdoom/security/advisories/GHSA-prhc-chfw-32jg","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2025-54065","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-54065","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"ZDoom","product":"gzdoom","version":"affected <= 4.14.2","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2025","cve_id":"54065","cve":"CVE-2025-54065","epss":"0.001370000","percentile":"0.028090000","score_date":"2026-10-18","updated_at":"2026-10-19 00:13:08"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"metrics":[{"other":{"content":{"id":"CVE-2025-54065","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","timestamp":"2025-12-03T21:39:32.116409Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2025-12-03T21:39:49.369Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"product":"gzdoom","vendor":"ZDoom","versions":[{"status":"affected","version":"<= 4.14.2"}]}],"descriptions":[{"lang":"en","value":"GZDoom is a feature centric port for all Doom engine games. GZDoom is an open source Doom engine. In versions 4.14.2 and earlier, ZScript actor state handling allows scripts to read arbitrary addresses, write constants into the JIT-compiled code section, and redirect control flow through crafted FState and VMFunction structures. A script can copy FState structures into a writable buffer, modify function pointers and state transitions, and cause execution of attacker-controlled bytecode, leading to arbitrary code execution."}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"LOCAL","availabilityImpact":"NONE","baseScore":7.8,"baseSeverity":"HIGH","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"LOW","scope":"CHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-913","description":"CWE-913: Improper Control of Dynamically-Managed Code Resources","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2025-12-03T17:02:56.603Z","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","shortName":"GitHub_M"},"references":[{"name":"https://github.com/ZDoom/gzdoom/security/advisories/GHSA-prhc-chfw-32jg","tags":["x_refsource_CONFIRM"],"url":"https://github.com/ZDoom/gzdoom/security/advisories/GHSA-prhc-chfw-32jg"}],"source":{"advisory":"GHSA-prhc-chfw-32jg","discovery":"UNKNOWN"},"title":"GZDoom engine allows arbitrary code execution via ZScript actor states"}},"cveMetadata":{"assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","assignerShortName":"GitHub_M","cveId":"CVE-2025-54065","datePublished":"2025-12-03T17:02:56.603Z","dateReserved":"2025-07-16T13:22:18.204Z","dateUpdated":"2025-12-03T21:39:49.369Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2025-12-03 17:15:52","lastModifiedDate":"2026-10-18 17:10:00","problem_types":["CWE-913","CWE-913 CWE-913: Improper Control of Dynamically-Managed Code Resources"],"metrics":{"cvssMetricV31":[{"source":"security-advisories@github.com","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N","baseScore":7.9,"baseSeverity":"HIGH","attackVector":"LOCAL","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"REQUIRED","scope":"CHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"NONE"},"exploitabilityScore":1.5,"impactScore":5.8}],"ssvcV203":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","ssvcData":{"timestamp":"2025-12-03T21:39:32.116409Z","id":"CVE-2025-54065","options":[{"exploitation":"none"},{"automatable":"no"},{"technicalImpact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2025","CveId":"54065","Ordinal":"1","Title":"GZDoom engine allows arbitrary code execution via ZScript actor ","CVE":"CVE-2025-54065","Year":"2025"},"notes":[{"CveYear":"2025","CveId":"54065","Ordinal":"1","NoteData":"GZDoom is a feature centric port for all Doom engine games. GZDoom is an open source Doom engine. In versions 4.14.2 and earlier, ZScript actor state handling allows scripts to read arbitrary addresses, write constants into the JIT-compiled code section, and redirect control flow through crafted FState and VMFunction structures. A script can copy FState structures into a writable buffer, modify function pointers and state transitions, and cause execution of attacker-controlled bytecode, leading to arbitrary code execution.","Type":"Description","Title":"GZDoom engine allows arbitrary code execution via ZScript actor "}]}}}