{"id":"CVE-2025-64747","revision":null,"records":[{"revision":"0d31d561d45f47d99309f6336cd1d64b","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2025-64747","aliases":[],"title":"Directus Vulnerable to Stored Cross-site Scripting","description":"Directus is a real-time API and App dashboard for managing SQL database content. A stored cross-site scripting (XSS) vulnerability exists in versions prior to 11.13.0 that allows users with `upload files` and `edit item` permissions to inject malicious JavaScript through the Block Editor interface. Attackers can bypass Content Security Policy (CSP) restrictions by combining file uploads with iframe srcdoc attributes, resulting in persistent XSS execution. Version 11.13.0 fixes the issue.","state":0,"publishedAt":"2025-11-13T21:13:42.627+00:00","modifiedAt":"2025-11-13T21:33:55.297+00:00","affected":[{"ecosystem":"Vendor product","name":"directus","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"directus\",\n                    \"product\": \"directus\",\n                    \"versions\": [\n                        {\n                            \"version\": \"< 11.13.0\",\n                            \"status\": \"affected\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:L","score":5.5,"severity":"MEDIUM"}],"references":["https://github.com/directus/directus/security/advisories/GHSA-vv2v-pw69-8crf","https://github.com/directus/directus/commit/d23525317f0780f04aa1fe7a99171a358e43cb2e"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2025-64747","license":"CVE Program Terms of Use","key":"cve-program:CVE-2025-64747","identifiers":["CVE-2025-64747"]},"retained":false,"historicalAffected":[]},{"revision":"27bf4b65875e476abb95445e3e344054","observedAt":"2026-11-07T03:29:44.837+00:00","statement":{"source":"euvd","id":"EUVD-2025-177203","aliases":["CVE-2025-64747","GHSA-vv2v-pw69-8crf"],"title":"Directus is a real-time API and App dashboard for managing SQL database content. A stored cross-site scripting (XSS) vulnerability exists in versions prior to 11.13.0 that allows users with `upload files` and `edit item` permissions to inje…","description":"Directus is a real-time API and App dashboard for managing SQL database content. A stored cross-site scripting (XSS) vulnerability exists in versions prior to 11.13.0 that allows users with `upload files` and `edit item` permissions to inject malicious JavaScript through the Block Editor interface. Attackers can bypass Content Security Policy (CSP) restrictions by combining file uploads with iframe srcdoc attributes, resulting in persistent XSS execution. Version 11.13.0 fixes the issue.","state":0,"publishedAt":null,"modifiedAt":null,"affected":[],"metrics":[{"system":"EUVD CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:L","score":5.5,"severity":null}],"references":["https://github.com/directus/directus/security/advisories/GHSA-vv2v-pw69-8crf","https://github.com/directus/directus/commit/d23525317f0780f04aa1fe7a99171a358e43cb2e"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2025-177203","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Nov 13, 2025, 9:13:42 PM","dateUpdated":"Nov 13, 2025, 9:33:55 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-177203","identifiers":["EUVD-2025-177203","CVE-2025-64747","GHSA-vv2v-pw69-8crf"]},"retained":false,"historicalAffected":[]},{"revision":"d3142a799c7843d5b7b43163aaee51e7","observedAt":"2026-10-25T03:17:36.152+00:00","statement":{"source":"nvd","id":"CVE-2025-64747","aliases":[],"title":"Directus is a real-time API and App dashboard for managing SQL database content. A stored cross-site scripting (XSS) vulnerability exists in versions prior to 11.13.0 that allows users with `upload files` and `edit item` permissions to inje…","description":"Directus is a real-time API and App dashboard for managing SQL database content. A stored cross-site scripting (XSS) vulnerability exists in versions prior to 11.13.0 that allows users with `upload files` and `edit item` permissions to inject malicious JavaScript through the Block Editor interface. Attackers can bypass Content Security Policy (CSP) restrictions by combining file uploads with iframe srcdoc attributes, resulting in persistent XSS execution. Version 11.13.0 fixes the issue.","state":0,"publishedAt":"2025-11-13T22:15:52+00:00","modifiedAt":"2026-10-19T13:10:00.11+00:00","affected":[],"metrics":[{"system":"CVSS 3.1 · security-advisories@github.com · Secondary","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:L","score":5.5,"severity":"MEDIUM"}],"references":["https://github.com/directus/directus/commit/d23525317f0780f04aa1fe7a99171a358e43cb2e","https://github.com/directus/directus/security/advisories/GHSA-vv2v-pw69-8crf"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2025-64747","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Analyzed","weaknesses":["CWE-20","CWE-79"],"productCriteria":["cpe:2.3:a:monospace:directus:*:*:*:*:*:node.js:*:*"],"sourceDates":{"published":"2025-11-13T22:15:52.000","lastModified":"2026-10-19T13:10:00.110"},"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-64747","identifiers":["CVE-2025-64747"]},"retained":false,"historicalAffected":[]},{"revision":"5b78c5c273164d3b8796592d68951835","observedAt":"2026-10-24T13:17:17.793+00:00","statement":{"source":"osv","id":"GHSA-vv2v-pw69-8crf","aliases":["CVE-2025-64747"],"title":"Directus is Vulnerable to Stored Cross-site Scripting","description":"### Summary\n\nA stored cross-site scripting (XSS) vulnerability exists that allows users with `upload files` and `edit item` permissions to inject malicious JavaScript through the Block Editor interface. Attackers can bypass Content Security Policy (CSP) restrictions by combining file uploads with iframe srcdoc attributes, resulting in persistent XSS execution.\n\n### Details\n\nThe vulnerability arises from insufficient sanitization in the Block Editor interface when processing JSON content containing HTML elements. The attack requires two permissions:\n- `upload files` - To upload malicious JavaScript files\n- `edit item` - To create or modify content with the Block Editor\n\n**Attack Vector:**\n\n1. **JavaScript File Upload**: Attackers upload a malicious JavaScript file via the files endpoint, obtaining a file ID accessible through the assets directory\n\n2. **Block Editor Exploitation**: Using a JSON field with Block Editor interface, attackers inject raw HTML containing an iframe with srcdoc attribute that references the uploaded file\n\n3. **CSP Bypass**: The iframe srcdoc technique circumvents existing CSP protections by creating a new document context that loads the uploaded script\n\nThe payload is injected through direct API manipulation (PATCH request) to bypass client-side validation, targeting the Block Editor's paragraph data structure within the JSON content field.\n\n### Impact\n\nThis vulnerability enables:\n- **Persistent XSS** - Malicious scripts execute whenever affected content is viewed\n- **Session hijacking** - Access to authentication tokens and cookies of users viewing the content\n- **Administrative compromise** - If administrators view infected content, their elevated privileges can be exploited\n- **CSP bypass** - Demonstrates ineffective security controls, potentially affecting other protections\n- **Data exfiltration** - Ability to steal sensitive information displayed in the application\n- **Phishing attacks** - Injection of convincing fake login forms or malicious redirects","state":0,"publishedAt":"2025-11-14T21:45:36+00:00","modifiedAt":"2025-11-14T21:45:36+00:00","affected":[{"ecosystem":"npm","name":"directus","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"fixed","version":"11.13.0"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:L","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"MODERATE"}],"references":["https://github.com/directus/directus/security/advisories/GHSA-vv2v-pw69-8crf","https://nvd.nist.gov/vuln/detail/CVE-2025-64747","https://github.com/directus/directus/commit/d23525317f0780f04aa1fe7a99171a358e43cb2e","https://github.com/directus/directus"],"sourceUrl":"https://github.com/advisories/GHSA-vv2v-pw69-8crf","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-vv2v-pw69-8crf","identifiers":["GHSA-vv2v-pw69-8crf","CVE-2025-64747"]},"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-08T23:02:15.9754883+00:00","complete":true,"records":1769,"lastAttemptAt":"2026-11-08T23:02:15.9754883+00:00","lastSuccessAt":"2026-11-08T23:02:16.1185375+00:00","error":null,"lastVerifiedAt":"2026-11-08T23:02:16.1185396+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-eaa64dac63caa79c8d4905619258c41c51b39e461b996124e1a21b5e85e7e738-0ee53194438b774350db8ba2be9961094a7945659f4bca5c09ae0ef23c2c3f0c","complete":true,"records":421267,"lastAttemptAt":"2026-11-08T23:02:15.4905694+00:00","lastSuccessAt":"2026-11-08T23:02:15.4057062+00:00","error":null,"lastVerifiedAt":"2026-11-08T23:02:15.4905694+00:00","snapshotPublishedAt":"2026-11-08T22:18:37+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-64ec014845cf41e0b44c7812575dade1","complete":false,"records":13654,"lastAttemptAt":"2026-11-08T23:11:05.5177476+00:00","lastSuccessAt":"2026-11-08T23:11:05.509+00:00","error":null,"lastVerifiedAt":"2026-11-08T23:11:05.509+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13457,"expectedIdentifiers":13706,"failedIdentifiers":0},{"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-08T23:02:15.9754883+00:00","complete":true,"records":1096,"lastAttemptAt":"2026-11-08T23:02:15.9754883+00:00","lastSuccessAt":"2026-11-08T23:02:16.1192591+00:00","error":null,"lastVerifiedAt":"2026-11-08T23:02:16.1192597+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-bbd1082fa13b4aff99c01e332b64e44f","complete":true,"records":13666,"lastAttemptAt":"2026-11-08T23:02:17.0620293+00:00","lastSuccessAt":"2026-11-08T23:02:17.059+00:00","error":null,"lastVerifiedAt":"2026-11-08T23:02:17.059+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13706,"expectedIdentifiers":13706,"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-980593e6977a6d1b4fb1eed5a1ffe88a468736f89f0a06f710924ad59132c023","complete":true,"records":9914,"lastAttemptAt":"2026-11-08T23:02:15.8370588+00:00","lastSuccessAt":"2026-11-08T11:07:07.068788+00:00","error":null,"lastVerifiedAt":"2026-11-08T23:02:15.8370588+00:00","snapshotPublishedAt":"2026-11-08T11:02:46+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-fde804134ecdda0ddd5ff5c26ee1fff5a6fa659311f7ef2e51c6ad54964db0e2","complete":true,"records":1971,"lastAttemptAt":"2026-11-08T23:02:15.64043+00:00","lastSuccessAt":"2026-11-06T19:03:17.0399903+00:00","error":null,"lastVerifiedAt":"2026-11-08T23:02:15.64043+00:00","snapshotPublishedAt":"2026-11-06T18:17:57+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-964c14035e6f0f6478b2870fad6a7ef9f6045876d4a12af2c2e514521e54b6af","complete":true,"records":3055,"lastAttemptAt":"2026-11-08T23:02:15.942926+00:00","lastSuccessAt":"2026-11-08T11:07:12.1927025+00:00","error":null,"lastVerifiedAt":"2026-11-08T23:02:15.942926+00:00","snapshotPublishedAt":"2026-11-08T11:02:46+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-f8647d7ba64b1ba0dfdc7130944766d5b36d5b77d18fff0c79e651a4cff3c2b9","complete":true,"records":231293,"lastAttemptAt":"2026-11-08T23:02:15.7372001+00:00","lastSuccessAt":"2026-11-08T11:06:56.2918717+00:00","error":null,"lastVerifiedAt":"2026-11-08T23:02:15.7372001+00:00","snapshotPublishedAt":"2026-11-08T11:02:50+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}