{"id":"EUVD-2025-12478","revision":null,"records":[{"revision":"2abec7230d584e9e806c3aced73d363f","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2025-46653","aliases":[],"title":"Formidable (aka node-formidable) 2.1.0 through 3.x before 3.5.3 relies on hexoid to prevent guessing of filenames for untrusted executable content; however, hexoid is documented as not \"cryptographically secure.\" (Also, there is a scenario …","description":"Formidable (aka node-formidable) 2.1.0 through 3.x before 3.5.3 relies on hexoid to prevent guessing of filenames for untrusted executable content; however, hexoid is documented as not \"cryptographically secure.\" (Also, there is a scenario in which only the last two characters of a hexoid string need to be guessed, but this is not often relevant.) NOTE: this does not imply that, in a typical use case, attackers will be able to exploit any hexoid behavior to upload and execute their own content.","state":0,"publishedAt":"2025-04-26T00:00:00+00:00","modifiedAt":"2025-04-29T15:22:37.44+00:00","affected":[{"ecosystem":"Vendor product","name":"Formidable","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"defaultStatus\": \"unaffected\",\n                    \"product\": \"Formidable\",\n                    \"vendor\": \"node-formidable\",\n                    \"versions\": [\n                        {\n                            \"lessThan\": \"3.5.3\",\n                            \"status\": \"affected\",\n                            \"version\": \"2.1.0\",\n                            \"versionType\": \"semver\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N","score":3.1,"severity":"LOW"}],"references":["https://github.com/zast-ai/vulnerability-reports/blob/main/formidable/file_upload/report.md","https://github.com/node-formidable/formidable/blob/d0fbec13edc8add54a1afb9ce1a8d3db803f8d47/CHANGELOG.md?plain=1#L10","https://github.com/node-formidable/formidable/commit/022c2c5577dfe14d2947f10909d81b03b6070bf5"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2025-46653","license":"CVE Program Terms of Use","key":"cve-program:CVE-2025-46653","identifiers":["CVE-2025-46653"]},"retained":false,"historicalAffected":[]},{"revision":"611878507c784e4ba0b3e5672a7ba94f","observedAt":"2026-11-15T04:32:13.793+00:00","statement":{"source":"euvd","id":"EUVD-2025-12478","aliases":["CVE-2025-46653","GHSA-75v8-2h7p-7m2m"],"title":"Formidable (aka node-formidable) 2.1.0 through 3.x before 3.5.3 relies on hexoid to prevent guessing of filenames for untrusted executable content; however, hexoid is documented as not \"cryptographically secure.\" (Also, there is a scenario …","description":"Formidable (aka node-formidable) 2.1.0 through 3.x before 3.5.3 relies on hexoid to prevent guessing of filenames for untrusted executable content; however, hexoid is documented as not \"cryptographically secure.\" (Also, there is a scenario in which only the last two characters of a hexoid string need to be guessed, but this is not often relevant.) NOTE: this does not imply that, in a typical use case, attackers will be able to exploit any hexoid behavior to upload and execute their own content.","state":0,"publishedAt":null,"modifiedAt":null,"affected":[],"metrics":[{"system":"EUVD CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N","score":3.1,"severity":null}],"references":["https://github.com/zast-ai/vulnerability-reports/blob/main/formidable/file_upload/report.md","https://github.com/node-formidable/formidable/blob/d0fbec13edc8add54a1afb9ce1a8d3db803f8d47/CHANGELOG.md?plain=1#L10","https://github.com/node-formidable/formidable/commit/022c2c5577dfe14d2947f10909d81b03b6070bf5"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2025-12478","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Apr 26, 2025, 12:00:00 AM","dateUpdated":"Apr 29, 2025, 3:22:37 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-12478","identifiers":["EUVD-2025-12478","CVE-2025-46653","GHSA-75v8-2h7p-7m2m"]},"retained":false,"historicalAffected":[]},{"revision":"06b208d5a58144f7826e5f17974d56a4","observedAt":"2026-10-25T02:24:54.05+00:00","statement":{"source":"nvd","id":"CVE-2025-46653","aliases":[],"title":"Formidable (aka node-formidable) 2.1.0 through 3.x before 3.5.3 relies on hexoid to prevent guessing of filenames for untrusted executable content; however, hexoid is documented as not \"cryptographically secure.\" (Also, there is a scenario …","description":"Formidable (aka node-formidable) 2.1.0 through 3.x before 3.5.3 relies on hexoid to prevent guessing of filenames for untrusted executable content; however, hexoid is documented as not \"cryptographically secure.\" (Also, there is a scenario in which only the last two characters of a hexoid string need to be guessed, but this is not often relevant.) NOTE: this does not imply that, in a typical use case, attackers will be able to exploit any hexoid behavior to upload and execute their own content.","state":0,"publishedAt":"2025-04-26T21:15:14.403+00:00","modifiedAt":"2026-06-17T09:26:46.733+00:00","affected":[],"metrics":[{"system":"CVSS 3.1 · cve@mitre.org · Secondary","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N","score":3.1,"severity":"LOW"},{"system":"CVSS 3.1 · nvd@nist.gov · Primary","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N","score":3.1,"severity":"LOW"}],"references":["https://github.com/node-formidable/formidable/blob/d0fbec13edc8add54a1afb9ce1a8d3db803f8d47/CHANGELOG.md?plain=1#L10","https://github.com/node-formidable/formidable/commit/022c2c5577dfe14d2947f10909d81b03b6070bf5","https://github.com/zast-ai/vulnerability-reports/blob/main/formidable/file_upload/report.md"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2025-46653","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Analyzed","weaknesses":["CWE-338"],"productCriteria":["cpe:2.3:a:node-formidable:formidable:*:*:*:*:*:node.js:*:*"],"sourceDates":{"published":"2025-04-26T21:15:14.403","lastModified":"2026-06-17T09:26:46.733"},"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-46653","identifiers":["CVE-2025-46653"]},"retained":false,"historicalAffected":[]},{"revision":"36004d3ca5704b989d42ec968ef81235","observedAt":"2026-10-24T13:17:17.793+00:00","statement":{"source":"osv","id":"GHSA-75v8-2h7p-7m2m","aliases":["CVE-2025-46653"],"title":"Formidable relies on hexoid to prevent guessing of filenames for untrusted executable content","description":"Formidable (aka node-formidable) 2.x before 2.1.3 and 3.x before 3.5.3 relies on hexoid to prevent guessing of filenames for untrusted executable content; however, hexoid is documented as not \"cryptographically secure.\" (Also, there is a scenario in which only the last two characters of a hexoid string need to be guessed, but this is not often relevant.) NOTE: this does not imply that, in a typical use case, attackers will be able to exploit any hexoid behavior to upload and execute their own content.","state":0,"publishedAt":"2025-04-26T21:31:26+00:00","modifiedAt":"2026-09-10T03:50:57.1552241+00:00","affected":[{"ecosystem":"npm","name":"formidable","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"3.1.1-canary.20211030"},{"kind":"fixed","version":"3.5.3"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"npm","name":"formidable","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"2.1.0"},{"kind":"fixed","version":"2.1.3"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"LOW"}],"references":["https://nvd.nist.gov/vuln/detail/CVE-2025-46653","https://github.com/node-formidable/formidable/commit/022c2c5577dfe14d2947f10909d81b03b6070bf5","https://github.com/node-formidable/formidable/commit/37a3e89fca1ed68ec674a539f13aafd62221ddaa","https://github.com/node-formidable/formidable","https://github.com/node-formidable/formidable/blob/d0fbec13edc8add54a1afb9ce1a8d3db803f8d47/CHANGELOG.md?plain=1#L10","https://github.com/zast-ai/vulnerability-reports/blob/main/formidable/file_upload/report.md","https://www.npmjs.com/package/formidable/v/2.1.3","https://www.npmjs.com/package/formidable/v/3.5.3"],"sourceUrl":"https://github.com/advisories/GHSA-75v8-2h7p-7m2m","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-75v8-2h7p-7m2m","identifiers":["GHSA-75v8-2h7p-7m2m","CVE-2025-46653"]},"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-15T23:06:17.8993558+00:00","complete":true,"records":1781,"lastAttemptAt":"2026-11-15T23:06:17.8993558+00:00","lastSuccessAt":"2026-11-15T23:06:18.1032742+00:00","error":null,"lastVerifiedAt":"2026-11-15T23:06:18.1032749+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-7de4d7559a5263003f03d9f70577ab06f92ba4178309f26fce53e22a4a959294-39ebbce2db83696403d232c43a03ba55a47d1e19101fb621bbb1e57f01bae099","complete":true,"records":425869,"lastAttemptAt":"2026-11-15T23:06:17.3240958+00:00","lastSuccessAt":"2026-11-15T23:06:17.2976675+00:00","error":null,"lastVerifiedAt":"2026-11-15T23:06:17.3240958+00:00","snapshotPublishedAt":"2026-11-15T22:27:42+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-1f00a6164e4d4eb5b570181d2d48c31d","complete":false,"records":13821,"lastAttemptAt":"2026-11-15T23:16:09.5280366+00:00","lastSuccessAt":"2026-11-15T23:16:09.517+00:00","error":"50 identifier lookups failed; latest failures include AccessDenied (HTTP 403). Other identifiers were checked independently.","lastVerifiedAt":"2026-11-15T23:16:09.517+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13688,"expectedIdentifiers":13874,"failedIdentifiers":50},{"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-15T23:06:17.8993558+00:00","complete":true,"records":1125,"lastAttemptAt":"2026-11-15T23:06:17.8993558+00:00","lastSuccessAt":"2026-11-15T23:06:18.1046693+00:00","error":null,"lastVerifiedAt":"2026-11-15T23:06:18.1046697+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-41e8388e19074c0d9ced98f4bd388802","complete":true,"records":13833,"lastAttemptAt":"2026-11-15T23:07:00.0091971+00:00","lastSuccessAt":"2026-11-15T23:07:00.006+00:00","error":null,"lastVerifiedAt":"2026-11-15T23:07:00.006+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13874,"expectedIdentifiers":13874,"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-64eea06dbd27de8464d5dbce1b78cc794cc59e2d901516ae0d3ea76e624cdae0","complete":true,"records":9955,"lastAttemptAt":"2026-11-15T23:06:17.7078343+00:00","lastSuccessAt":"2026-11-14T13:57:23.1208135+00:00","error":null,"lastVerifiedAt":"2026-11-15T23:06:17.7078343+00:00","snapshotPublishedAt":"2026-11-14T13:17:57+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-f4424d7d4861b1af1404bd15abcb83f295dcd003412a9340ca99dc8200aa148a","complete":true,"records":2014,"lastAttemptAt":"2026-11-15T23:06:17.4961704+00:00","lastSuccessAt":"2026-11-13T19:57:08.2864435+00:00","error":null,"lastVerifiedAt":"2026-11-15T23:06:17.4961704+00:00","snapshotPublishedAt":"2026-11-13T19:33:10+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-6086d649bcb454cdf302d7d9275177bda73550e1b6e446b3520e9b6266d3582c","complete":true,"records":3148,"lastAttemptAt":"2026-11-15T23:06:17.8235923+00:00","lastSuccessAt":"2026-11-15T11:05:17.1034234+00:00","error":null,"lastVerifiedAt":"2026-11-15T23:06:17.8235923+00:00","snapshotPublishedAt":"2026-11-15T10:03:04+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-ff18f36f13fcca3a20a3fb9274b59b8872d18869a99071730e1e79b625c8f612","complete":true,"records":232475,"lastAttemptAt":"2026-11-15T23:06:17.6038079+00:00","lastSuccessAt":"2026-11-15T11:05:10.4195883+00:00","error":null,"lastVerifiedAt":"2026-11-15T23:06:17.6038079+00:00","snapshotPublishedAt":"2026-11-15T10:33:06+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}