{"id":"GHSA-9pf5-hg6p-4pwp","revision":"7416ba302b434b508d8d958b9b1ff6ea","records":[{"revision":"7416ba302b434b508d8d958b9b1ff6ea","observedAt":"2026-10-24T13:17:17.793+00:00","statement":{"source":"osv","id":"GHSA-9pf5-hg6p-4pwp","aliases":["CVE-2026-70599"],"title":"Electron: Permission Check Handler Receives Main Frame Origin Instead of Requesting Iframe Origin","description":"### Impact\nFor serial-port and media (camera / microphone) permission checks made from an iframe, the `requestingOrigin` passed to `session.setPermissionCheckHandler` was the top-level frame's origin rather than the requesting frame's. Origin-based handler logic could therefore grant a cross-origin iframe device access intended only for the top-level origin.\n\nApps are only affected if they use `setPermissionCheckHandler` with origin-based logic and embed cross-origin iframes with delegated device permissions. Apps that base the decision on `details.securityOrigin`, or that do not embed such iframes, are not affected.\n\n### Workarounds\nCheck `details.securityOrigin` instead of `requestingOrigin` for these permissions, or do not delegate device permissions to untrusted iframes.\n\n### Fixed Versions\n* `42.0.0-beta.1`\n* `41.2.0`\n* `40.9.0`\n* `39.8.7`\n\n### For more information\nIf you have any questions or comments about this advisory, email Electron at [security@electronjs.org](mailto:security@electronjs.org)","state":0,"publishedAt":"2026-08-05T15:36:09+00:00","modifiedAt":"2026-08-05T15:56:01.262988+00:00","affected":[{"ecosystem":"npm","name":"electron","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"fixed","version":"39.8.7"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"npm","name":"electron","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"40.0.0-alpha.1"},{"kind":"fixed","version":"40.9.0"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"npm","name":"electron","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"41.0.0-alpha.1"},{"kind":"fixed","version":"41.2.0"}]}],"versions":[],"rawVersionEvidence":null},{"ecosystem":"npm","name":"electron","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"42.0.0-alpha.1"},{"kind":"fixed","version":"42.0.0-beta.1"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"MODERATE"}],"references":["https://github.com/electron/electron/security/advisories/GHSA-9pf5-hg6p-4pwp","https://github.com/electron/electron/commit/0cbdf2f0375466d701aa393c92e0ec29eb89ea6c","https://github.com/electron/electron"],"sourceUrl":"https://github.com/advisories/GHSA-9pf5-hg6p-4pwp","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-9pf5-hg6p-4pwp","identifiers":["GHSA-9pf5-hg6p-4pwp","CVE-2026-70599"]},"retained":false,"historicalAffected":[]}],"coverage":[]}