ghsa-mq8j-3h7h-p8g7
Vulnerability from github
Impact
This vulnerability allows a renderer with JS execution to obtain access to a new renderer process with nodeIntegrationInSubFrames
enabled which in turn allows effective access to ipcRenderer
.
Please note the misleadingly named nodeIntegrationInSubFrames
option does not implicitly grant Node.js access rather it depends on the existing sandbox
setting. If your application is sandboxed then nodeIntegrationInSubFrames
just gives access to the sandboxed renderer APIs (which includes ipcRenderer
).
If your application then additionally exposes IPC messages without IPC senderFrame
validation that perform privileged actions or return confidential data this access to ipcRenderer
can in turn compromise your application / user even with the sandbox enabled.
Patches
This has been patched and the following Electron versions contain the fix:
18.0.0-beta.6
17.2.0
16.2.6
15.5.5
Workarounds
Ensure that all IPC message handlers appropriately validate senderFrame
as per our security tutorial here.
For more information
If you have any questions or comments about this advisory, email us at security@electronjs.org.
{ "affected": [ { "package": { "ecosystem": "npm", "name": "electron" }, "ranges": [ { "events": [ { "introduced": "0" }, { "fixed": "15.5.5" } ], "type": "ECOSYSTEM" } ] }, { "package": { "ecosystem": "npm", "name": "electron" }, "ranges": [ { "events": [ { "introduced": "16.0.0" }, { "fixed": "16.2.6" } ], "type": "ECOSYSTEM" } ] }, { "package": { "ecosystem": "npm", "name": "electron" }, "ranges": [ { "events": [ { "introduced": "17.0.0" }, { "fixed": "17.2.0" } ], "type": "ECOSYSTEM" } ] }, { "database_specific": { "last_known_affected_version_range": "\u003c= 18.0.0-beta.5" }, "package": { "ecosystem": "npm", "name": "electron" }, "ranges": [ { "events": [ { "introduced": "18.0.0-beta.1" }, { "fixed": "18.0.0-beta.6" } ], "type": "ECOSYSTEM" } ] } ], "aliases": [ "CVE-2022-29247" ], "database_specific": { "cwe_ids": [ "CWE-668" ], "github_reviewed": true, "github_reviewed_at": "2022-06-16T23:14:33Z", "nvd_published_at": "2022-06-13T21:15:00Z", "severity": "LOW" }, "details": "### Impact\nThis vulnerability allows a renderer with JS execution to obtain access to a new renderer process with `nodeIntegrationInSubFrames` enabled which in turn allows effective access to `ipcRenderer`.\n\nPlease note the misleadingly named `nodeIntegrationInSubFrames` option does not implicitly grant Node.js access rather it depends on the existing `sandbox` setting. If your application is sandboxed then `nodeIntegrationInSubFrames` just gives access to the sandboxed renderer APIs (which includes `ipcRenderer`).\n\nIf your application then additionally exposes IPC messages without IPC `senderFrame` validation that perform privileged actions or return confidential data this access to `ipcRenderer` can in turn compromise your application / user even with the sandbox enabled.\n\n### Patches\nThis has been patched and the following Electron versions contain the fix:\n\n* `18.0.0-beta.6`\n* `17.2.0`\n* `16.2.6`\n* `15.5.5`\n\n### Workarounds\nEnsure that all IPC message handlers appropriately validate `senderFrame` as per our [security tutorial here](https://github.com/electron/electron/blob/main/docs/tutorial/security.md#17-validate-the-sender-of-all-ipc-messages).\n\n### For more information\n\nIf you have any questions or comments about this advisory, email us at [security@electronjs.org](mailto:security@electronjs.org).", "id": "GHSA-mq8j-3h7h-p8g7", "modified": "2022-06-16T23:14:33Z", "published": "2022-06-16T23:14:33Z", "references": [ { "type": "WEB", "url": "https://github.com/electron/electron/security/advisories/GHSA-mq8j-3h7h-p8g7" }, { "type": "ADVISORY", "url": "https://nvd.nist.gov/vuln/detail/CVE-2022-29247" }, { "type": "PACKAGE", "url": "https://github.com/electron/electron" } ], "schema_version": "1.4.0", "severity": [ { "score": "CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:L/I:N/A:N", "type": "CVSS_V3" } ], "summary": "Compromised child renderer processes could obtain IPC access without nodeIntegrationInSubFrames being enabled" }
Sightings
Author | Source | Type | Date |
---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.