{"api_version":"1","generated_at":"2026-08-06T00:01:51+00:00","cve":"CVE-2026-70609","urls":{"html":"https://cve.report/CVE-2026-70609","api":"https://cve.report/api/cve/CVE-2026-70609.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-70609","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-70609"},"summary":{"title":"Electron: DevTools JavaScript Injection via Unsanitized Dock State Parameter","description":"Electron is a framework for writing cross-platform desktop applications using JavaScript, HTML and CSS. Prior to 39.8.7, 40.9.0, 41.2.0, and 42.0.0-beta.1, the mode option of webContents.openDevTools() was not sanitized before use by the DevTools frontend. If an attacker can influence this value, script under their control may run in the DevTools context, which in unsandboxed configurations has access to Node.js, including when untrusted input reaches the mode argument of openDevTools() or untrusted content calls openDevTools() on a webview it embeds. This issue is fixed in 39.8.7, 40.9.0, 41.2.0, and 42.0.0-beta.1.","state":"PUBLISHED","assigner":"GitHub_M","published_at":"2026-08-05 18:17:15","updated_at":"2026-08-05 20:17:17"},"problem_types":["CWE-94","CWE-116","CWE-94 CWE-94: Improper Control of Generation of Code ('Code Injection')","CWE-116 CWE-116: Improper Encoding or Escaping of Output"],"metrics":[{"version":"3.1","source":"security-advisories@github.com","type":"Secondary","score":"5.7","severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:H/I:H/A:N","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:H/I:H/A:N","baseScore":5.7,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"HIGH","privilegesRequired":"HIGH","userInteraction":"REQUIRED","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"NONE"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"5.7","severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:H/I:H/A:N","data":{"attackComplexity":"HIGH","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":5.7,"baseSeverity":"MEDIUM","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"HIGH","scope":"UNCHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:H/I:H/A:N","version":"3.1"}}],"references":[{"url":"https://github.com/electron/electron/releases/tag/v41.2.0","name":"https://github.com/electron/electron/releases/tag/v41.2.0","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/electron/electron/commit/969741f9f847c5c583f6bbc63ca22549dbd954ce","name":"https://github.com/electron/electron/commit/969741f9f847c5c583f6bbc63ca22549dbd954ce","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/electron/electron/pull/50665","name":"https://github.com/electron/electron/pull/50665","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/electron/electron/commit/04614eed17986bddc43eb509ec870424ee6a47d1","name":"https://github.com/electron/electron/commit/04614eed17986bddc43eb509ec870424ee6a47d1","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/electron/electron/pull/50667","name":"https://github.com/electron/electron/pull/50667","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/electron/electron/commit/2046ae87731d80a7b535512ae19acb529e10e33b","name":"https://github.com/electron/electron/commit/2046ae87731d80a7b535512ae19acb529e10e33b","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/electron/electron/pull/50668","name":"https://github.com/electron/electron/pull/50668","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/electron/electron/releases/tag/v39.8.7","name":"https://github.com/electron/electron/releases/tag/v39.8.7","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/electron/electron/commit/efc4d3c6b6f1c04f658ca0d9d2512dcfe78eb7ba","name":"https://github.com/electron/electron/commit/efc4d3c6b6f1c04f658ca0d9d2512dcfe78eb7ba","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/electron/electron/security/advisories/GHSA-4f78-qhmw-8j8m","name":"https://github.com/electron/electron/security/advisories/GHSA-4f78-qhmw-8j8m","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/electron/electron/pull/50666","name":"https://github.com/electron/electron/pull/50666","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/electron/electron/releases/tag/v42.0.0-beta.1","name":"https://github.com/electron/electron/releases/tag/v42.0.0-beta.1","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/electron/electron/releases/tag/v40.9.0","name":"https://github.com/electron/electron/releases/tag/v40.9.0","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-70609","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-70609","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"electron","product":"electron","version":"affected < 39.8.7","platforms":[]},{"source":"CNA","vendor":"electron","product":"electron","version":"affected >= 40.0.0-alpha.1, < 40.9.0","platforms":[]},{"source":"CNA","vendor":"electron","product":"electron","version":"affected >= 41.0.0-alpha.1, < 41.2.0","platforms":[]},{"source":"CNA","vendor":"electron","product":"electron","version":"affected >= 42.0.0-alpha.1, < 42.0.0-beta.1","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"metrics":[{"other":{"content":{"id":"CVE-2026-70609","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"role":"CISA Coordinator","timestamp":"2026-08-05T19:34:53.906480Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2026-08-05T19:47:53.992Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"product":"electron","vendor":"electron","versions":[{"status":"affected","version":"< 39.8.7"},{"status":"affected","version":">= 40.0.0-alpha.1, < 40.9.0"},{"status":"affected","version":">= 41.0.0-alpha.1, < 41.2.0"},{"status":"affected","version":">= 42.0.0-alpha.1, < 42.0.0-beta.1"}]}],"descriptions":[{"lang":"en","value":"Electron is a framework for writing cross-platform desktop applications using JavaScript, HTML and CSS. Prior to 39.8.7, 40.9.0, 41.2.0, and 42.0.0-beta.1, the mode option of webContents.openDevTools() was not sanitized before use by the DevTools frontend. If an attacker can influence this value, script under their control may run in the DevTools context, which in unsandboxed configurations has access to Node.js, including when untrusted input reaches the mode argument of openDevTools() or untrusted content calls openDevTools() on a webview it embeds. This issue is fixed in 39.8.7, 40.9.0, 41.2.0, and 42.0.0-beta.1."}],"metrics":[{"cvssV3_1":{"attackComplexity":"HIGH","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":5.7,"baseSeverity":"MEDIUM","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"HIGH","scope":"UNCHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:H/I:H/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-94","description":"CWE-94: Improper Control of Generation of Code ('Code Injection')","lang":"en","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-116","description":"CWE-116: Improper Encoding or Escaping of Output","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-08-05T17:32:21.067Z","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","shortName":"GitHub_M"},"references":[{"name":"https://github.com/electron/electron/security/advisories/GHSA-4f78-qhmw-8j8m","tags":["x_refsource_CONFIRM"],"url":"https://github.com/electron/electron/security/advisories/GHSA-4f78-qhmw-8j8m"},{"name":"https://github.com/electron/electron/pull/50665","tags":["x_refsource_MISC"],"url":"https://github.com/electron/electron/pull/50665"},{"name":"https://github.com/electron/electron/pull/50666","tags":["x_refsource_MISC"],"url":"https://github.com/electron/electron/pull/50666"},{"name":"https://github.com/electron/electron/pull/50667","tags":["x_refsource_MISC"],"url":"https://github.com/electron/electron/pull/50667"},{"name":"https://github.com/electron/electron/pull/50668","tags":["x_refsource_MISC"],"url":"https://github.com/electron/electron/pull/50668"},{"name":"https://github.com/electron/electron/commit/04614eed17986bddc43eb509ec870424ee6a47d1","tags":["x_refsource_MISC"],"url":"https://github.com/electron/electron/commit/04614eed17986bddc43eb509ec870424ee6a47d1"},{"name":"https://github.com/electron/electron/commit/2046ae87731d80a7b535512ae19acb529e10e33b","tags":["x_refsource_MISC"],"url":"https://github.com/electron/electron/commit/2046ae87731d80a7b535512ae19acb529e10e33b"},{"name":"https://github.com/electron/electron/commit/969741f9f847c5c583f6bbc63ca22549dbd954ce","tags":["x_refsource_MISC"],"url":"https://github.com/electron/electron/commit/969741f9f847c5c583f6bbc63ca22549dbd954ce"},{"name":"https://github.com/electron/electron/commit/efc4d3c6b6f1c04f658ca0d9d2512dcfe78eb7ba","tags":["x_refsource_MISC"],"url":"https://github.com/electron/electron/commit/efc4d3c6b6f1c04f658ca0d9d2512dcfe78eb7ba"},{"name":"https://github.com/electron/electron/releases/tag/v39.8.7","tags":["x_refsource_MISC"],"url":"https://github.com/electron/electron/releases/tag/v39.8.7"},{"name":"https://github.com/electron/electron/releases/tag/v40.9.0","tags":["x_refsource_MISC"],"url":"https://github.com/electron/electron/releases/tag/v40.9.0"},{"name":"https://github.com/electron/electron/releases/tag/v41.2.0","tags":["x_refsource_MISC"],"url":"https://github.com/electron/electron/releases/tag/v41.2.0"},{"name":"https://github.com/electron/electron/releases/tag/v42.0.0-beta.1","tags":["x_refsource_MISC"],"url":"https://github.com/electron/electron/releases/tag/v42.0.0-beta.1"}],"source":{"advisory":"GHSA-4f78-qhmw-8j8m","discovery":"UNKNOWN"},"title":"Electron: DevTools JavaScript Injection via Unsanitized Dock State Parameter"}},"cveMetadata":{"assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","assignerShortName":"GitHub_M","cveId":"CVE-2026-70609","datePublished":"2026-08-05T17:32:21.067Z","dateReserved":"2026-08-04T19:50:27.329Z","dateUpdated":"2026-08-05T19:47:53.992Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-05 18:17:15","lastModifiedDate":"2026-08-05 20:17:17","problem_types":["CWE-94","CWE-116","CWE-94 CWE-94: Improper Control of Generation of Code ('Code Injection')","CWE-116 CWE-116: Improper Encoding or Escaping of Output"],"metrics":{"cvssMetricV31":[{"source":"security-advisories@github.com","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:H/I:H/A:N","baseScore":5.7,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"HIGH","privilegesRequired":"HIGH","userInteraction":"REQUIRED","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"NONE"},"exploitabilityScore":0.5,"impactScore":5.2}],"ssvcV203":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","ssvcData":{"timestamp":"2026-08-05T19:34:53.906480Z","id":"CVE-2026-70609","options":[{"exploitation":"none"},{"automatable":"no"},{"technicalImpact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"70609","Ordinal":"1","Title":"Electron: DevTools JavaScript Injection via Unsanitized Dock Sta","CVE":"CVE-2026-70609","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"70609","Ordinal":"1","NoteData":"Electron is a framework for writing cross-platform desktop applications using JavaScript, HTML and CSS. Prior to 39.8.7, 40.9.0, 41.2.0, and 42.0.0-beta.1, the mode option of webContents.openDevTools() was not sanitized before use by the DevTools frontend. If an attacker can influence this value, script under their control may run in the DevTools context, which in unsandboxed configurations has access to Node.js, including when untrusted input reaches the mode argument of openDevTools() or untrusted content calls openDevTools() on a webview it embeds. This issue is fixed in 39.8.7, 40.9.0, 41.2.0, and 42.0.0-beta.1.","Type":"Description","Title":"Electron: DevTools JavaScript Injection via Unsanitized Dock Sta"}]}}}