{"id":"CVE-2025-66456","revision":null,"records":[{"revision":"486e35692fc743889e0d98da11a2b9a8","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2025-66456","aliases":[],"title":"Elysia vulnerable to prototype pollution with multiple standalone schema validation","description":"Elysia is a Typescript framework for request validation, type inference, OpenAPI documentation and client-server communication. Versions 1.4.0 through 1.4.16 contain a prototype pollution vulnerability in `mergeDeep` after merging results of two standard schema validations with the same key. Due to the ordering of merging, there must be an any type that is set as a standalone guard, to allow for the `__proto__ prop` to be merged. When combined with GHSA-8vch-m3f4-q8jf this allows for a full RCE by an attacker. This issue is fixed in version 1.4.17. To workaround, remove the `__proto__ key` from body.","state":0,"publishedAt":"2025-12-09T19:43:10.252+00:00","modifiedAt":"2025-12-09T20:35:44.683+00:00","affected":[{"ecosystem":"Vendor product","name":"elysia","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"elysiajs\",\n                    \"product\": \"elysia\",\n                    \"versions\": [\n                        {\n                            \"version\": \">= 1.4.0, < 1.4.17\",\n                            \"status\": \"affected\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","score":9.1,"severity":"CRITICAL"}],"references":["https://github.com/elysiajs/elysia/security/advisories/GHSA-hxj9-33pp-j2cc","https://github.com/elysiajs/elysia/security/advisories/GHSA-8vch-m3f4-q8jf","https://github.com/elysiajs/elysia/pull/1564","https://github.com/elysiajs/elysia/commit/26935bf76ebc43b4a43d48b173fc853de43bb51e","https://github.com/elysiajs/elysia/commit/3af978663e437dccc6c1a2a3aff4b74e1574849e"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2025-66456","license":"CVE Program Terms of Use","key":"cve-program:CVE-2025-66456","identifiers":["CVE-2025-66456"]},"retained":false,"historicalAffected":[]},{"revision":"8cf4c229d77040f187118df9958c2d78","observedAt":"2026-11-09T06:02:49.158+00:00","statement":{"source":"euvd","id":"EUVD-2025-202180","aliases":["CVE-2025-66456","GHSA-hxj9-33pp-j2cc"],"title":"Elysia is a Typescript framework for request validation, type inference, OpenAPI documentation and client-server communication. Versions 1.4.0 through 1.4.16 contain a prototype pollution vulnerability in `mergeDeep` after merging results o…","description":"Elysia is a Typescript framework for request validation, type inference, OpenAPI documentation and client-server communication. Versions 1.4.0 through 1.4.16 contain a prototype pollution vulnerability in `mergeDeep` after merging results of two standard schema validations with the same key. Due to the ordering of merging, there must be an any type that is set as a standalone guard, to allow for the `__proto__ prop` to be merged. When combined with GHSA-8vch-m3f4-q8jf this allows for a full RCE by an attacker. This issue is fixed in version 1.4.17. To workaround, remove the `__proto__ key` from body.","state":0,"publishedAt":null,"modifiedAt":null,"affected":[],"metrics":[{"system":"EUVD CVSS 4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","score":9.1,"severity":null}],"references":["https://github.com/elysiajs/elysia/security/advisories/GHSA-hxj9-33pp-j2cc","https://github.com/elysiajs/elysia/security/advisories/GHSA-8vch-m3f4-q8jf","https://github.com/elysiajs/elysia/pull/1564","https://github.com/elysiajs/elysia/commit/26935bf76ebc43b4a43d48b173fc853de43bb51e","https://github.com/elysiajs/elysia/commit/3af978663e437dccc6c1a2a3aff4b74e1574849e"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2025-202180","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Dec 9, 2025, 7:43:10 PM","dateUpdated":"Dec 9, 2025, 8:35:44 PM"},"relatedAdvisories":[],"note":"EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON."},"key":"euvd:EUVD-2025-202180","identifiers":["EUVD-2025-202180","CVE-2025-66456","GHSA-hxj9-33pp-j2cc"]},"retained":false,"historicalAffected":[]},{"revision":"1ec711c8af6c4e21a374ab95f3b7c622","observedAt":"2026-10-25T03:17:36.152+00:00","statement":{"source":"nvd","id":"CVE-2025-66456","aliases":[],"title":"Elysia is a Typescript framework for request validation, type inference, OpenAPI documentation and client-server communication. Versions 1.4.0 through 1.4.16 contain a prototype pollution vulnerability in `mergeDeep` after merging results o…","description":"Elysia is a Typescript framework for request validation, type inference, OpenAPI documentation and client-server communication. Versions 1.4.0 through 1.4.16 contain a prototype pollution vulnerability in `mergeDeep` after merging results of two standard schema validations with the same key. Due to the ordering of merging, there must be an any type that is set as a standalone guard, to allow for the `__proto__ prop` to be merged. When combined with GHSA-8vch-m3f4-q8jf this allows for a full RCE by an attacker. This issue is fixed in version 1.4.17. To workaround, remove the `__proto__ key` from body.","state":0,"publishedAt":"2025-12-09T20:15:54.76+00:00","modifiedAt":"2026-10-14T21:10:00.183+00:00","affected":[],"metrics":[{"system":"CVSS 4.0 · security-advisories@github.com · Secondary","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","score":9.1,"severity":"CRITICAL"},{"system":"CVSS 3.1 · nvd@nist.gov · Primary","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","score":9.8,"severity":"CRITICAL"}],"references":["https://github.com/elysiajs/elysia/commit/26935bf76ebc43b4a43d48b173fc853de43bb51e","https://github.com/elysiajs/elysia/commit/3af978663e437dccc6c1a2a3aff4b74e1574849e","https://github.com/elysiajs/elysia/pull/1564","https://github.com/elysiajs/elysia/security/advisories/GHSA-8vch-m3f4-q8jf","https://github.com/elysiajs/elysia/security/advisories/GHSA-hxj9-33pp-j2cc"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2025-66456","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Analyzed","weaknesses":["CWE-1321"],"productCriteria":["cpe:2.3:a:elysiajs:elysia:*:*:*:*:*:node.js:*:*"],"sourceDates":{"published":"2025-12-09T20:15:54.760","lastModified":"2026-10-14T21:10:00.183"},"relatedAdvisories":[],"note":"NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON."},"key":"nvd:CVE-2025-66456","identifiers":["CVE-2025-66456"]},"retained":false,"historicalAffected":[]},{"revision":"36e99b81bfbd4dd8a584ed54d80abc64","observedAt":"2026-10-24T13:17:17.793+00:00","statement":{"source":"osv","id":"GHSA-hxj9-33pp-j2cc","aliases":["CVE-2025-66456"],"title":"Elysia vulnerable to prototype pollution with multiple standalone schema validation","description":"Prototype pollution vulnerability in `mergeDeep` after merging results of two standard schema validations with the same key. Due to the ordering of merging, there must be an `any` type that is set as a `standalone` guard, to allow for the `__proto__` prop to be merged.\n\nWhen combined with GHSA-8vch-m3f4-q8jf this allows for a full RCE by an attacker.\n\n### Impact\nRoutes with more than 2 standalone schema validation, eg. zod\n\nExample vulnerable code:\n```typescript\nimport { Elysia } from \"elysia\"\nimport * as z from \"zod\"\n\nconst app = new Elysia()\n\t.guard({\n\t\tschema: \"standalone\",\n\t\tbody: z.object({\n\t\t\tdata: z.any()\n\t\t})\n\t})\n\t.post(\"/\", ({ body }) => ({ body, win: {}.foo }), {\n\t\tbody: z.object({\n\t\t\tdata: z.object({\n\t\t\t\tmessageId: z.string(\"pollute-me\"),\n\t\t\t})\n\t\t})\n\t})\n```\n\n### Patches\nPatched by 1.4.17 (https://github.com/elysiajs/elysia/pull/1564)\n\nReference commit:\n- https://github.com/elysiajs/elysia/pull/1564/commits/26935bf76ebc43b4a43d48b173fc853de43bb51e\n- https://github.com/elysiajs/elysia/pull/1564/commits/3af978663e437dccc6c1a2a3aff4b74e1574849e\n\n### Workarounds\nRemove `__proto__` key from body\n\nExample plugin for removing `__proto__` from body\n\n```typescript\nnew Elysia()\n\t.onTransform(({ body, headers }) => {\n\t\tif (headers['content-type'] === 'application/json')\n\t\t\treturn JSON.parse(JSON.stringify(body), (k, v) => {\n\t\t\t\tif (k === '__proto__') return\n\n\t\t\t\treturn v\n\t\t\t})\n\t})\n```","state":0,"publishedAt":"2025-12-09T17:11:53+00:00","modifiedAt":"2026-02-04T03:31:17.532002+00:00","affected":[{"ecosystem":"npm","name":"elysia","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"1.4.0"},{"kind":"fixed","version":"1.4.17"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V4","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"CRITICAL"}],"references":["https://github.com/elysiajs/elysia/security/advisories/GHSA-8vch-m3f4-q8jf","https://github.com/elysiajs/elysia/security/advisories/GHSA-hxj9-33pp-j2cc","https://nvd.nist.gov/vuln/detail/CVE-2025-66456","https://github.com/elysiajs/elysia/pull/1564","https://github.com/elysiajs/elysia/commit/26935bf76ebc43b4a43d48b173fc853de43bb51e","https://github.com/elysiajs/elysia/commit/3af978663e437dccc6c1a2a3aff4b74e1574849e","https://github.com/elysiajs/elysia","https://github.com/sportshead/elysia-poc"],"sourceUrl":"https://github.com/advisories/GHSA-hxj9-33pp-j2cc","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-hxj9-33pp-j2cc","identifiers":["GHSA-hxj9-33pp-j2cc","CVE-2025-66456"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-09T23:04:35.5115198+00:00","complete":true,"records":1773,"lastAttemptAt":"2026-11-09T23:04:35.5115198+00:00","lastSuccessAt":"2026-11-09T23:04:35.7199619+00:00","error":null,"lastVerifiedAt":"2026-11-09T23:04:35.7199622+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-24e6fde7b744113daefb8f6135035fb8a5c69c9617c9c0d40574a0376532ffd3-dd2a77f649768340b3da193d98d597fa46c17d01cc081b31103212155ce6cd5d","complete":true,"records":421715,"lastAttemptAt":"2026-11-09T23:02:22.2942221+00:00","lastSuccessAt":"2026-11-09T23:02:22.1588494+00:00","error":null,"lastVerifiedAt":"2026-11-09T23:02:22.2942221+00:00","snapshotPublishedAt":"2026-11-09T22:27:08+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-81e8168fb5d5471089f83c1a91518cc8","complete":false,"records":13686,"lastAttemptAt":"2026-11-09T23:08:49.8595231+00:00","lastSuccessAt":"2026-11-09T23:08:49.9562604+00:00","error":null,"lastVerifiedAt":"2026-11-09T23:08:49.9562604+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-09T23:04:35.5115198+00:00","complete":true,"records":1096,"lastAttemptAt":"2026-11-09T23:04:35.5115198+00:00","lastSuccessAt":"2026-11-09T23:04:35.7206951+00:00","error":null,"lastVerifiedAt":"2026-11-09T23:04:35.7206952+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-adb512372f6d42c7b17c6efd528c7d57","complete":false,"records":13692,"lastAttemptAt":"2026-11-09T23:05:02.0476605+00:00","lastSuccessAt":"2026-11-09T23:05:02.041+00:00","error":null,"lastVerifiedAt":"2026-11-09T23:05:02.041+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13704,"expectedIdentifiers":13739,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-f16b02cc2b44d5413157015d03b8f1bf0217fdb477438e8f5866bcf35b179abd","complete":true,"records":9930,"lastAttemptAt":"2026-11-09T23:04:35.3476978+00:00","lastSuccessAt":"2026-11-09T23:04:34.9543246+00:00","error":null,"lastVerifiedAt":"2026-11-09T23:04:35.3476978+00:00","snapshotPublishedAt":"2026-11-09T23:03:07+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-26503967ae4379db8f374089589d6e03fb15bd31f820c9e992aaf93840c2236c","complete":true,"records":1971,"lastAttemptAt":"2026-11-09T23:02:22.4504307+00:00","lastSuccessAt":"2026-11-09T21:02:20.472473+00:00","error":null,"lastVerifiedAt":"2026-11-09T23:02:22.4504307+00:00","snapshotPublishedAt":"2026-11-09T20:18:18+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-761ecc9061239b0da572dc9254c6f384c1d19339eb08408c436647a2f26129e9","complete":true,"records":3064,"lastAttemptAt":"2026-11-09T23:04:35.4661135+00:00","lastSuccessAt":"2026-11-09T17:05:03.4044794+00:00","error":null,"lastVerifiedAt":"2026-11-09T23:04:35.4661135+00:00","snapshotPublishedAt":"2026-11-09T16:33:20+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-fe5caa127af053959ad6ee208ca92e895a6f5d3c14202fe035925df5f35ffed2","complete":true,"records":231329,"lastAttemptAt":"2026-11-09T23:04:24.8967882+00:00","lastSuccessAt":"2026-11-09T23:04:23.4601156+00:00","error":null,"lastVerifiedAt":"2026-11-09T23:04:24.8967882+00:00","snapshotPublishedAt":"2026-11-09T22:48:12+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}