Electron is a framework which lets you write cross-platform desktop applications using JavaScript, HTML and CSS. Electron apps using contextIsolation
and contextBridge
are affected. This is a context isolation bypass, meaning that code running in the main world context in the renderer can reach into the isolated Electron context and perform privileged actions. This issue is only exploitable if an API exposed to the main world via contextBridge
can return an object or array that contains a javascript object which cannot be serialized, for instance, a canvas rendering context. This would normally result in an exception being thrown Error: object could not be cloned
. The app side workaround is to ensure that such a case is not possible. Ensure all values returned from a function exposed over the context bridge are supported. This issue has been fixed in versions 25.0.0-alpha.2
, 24.0.1
, 23.2.3
, and 22.3.6
.
The product does not check or incorrectly checks for unusual or exceptional conditions that are not expected to occur frequently during day to day operation of the product.
Name | Vendor | Start Version | End Version |
---|---|---|---|
Electron | Electronjs | * | 22.3.6 (excluding) |
Electron | Electronjs | 23.0.0 (including) | 23.2.3 (excluding) |
Electron | Electronjs | 24.0.0 (including) | 24.0.0 (including) |
Electron | Electronjs | 24.0.0-alpha1 (including) | 24.0.0-alpha1 (including) |
Electron | Electronjs | 24.0.0-alpha2 (including) | 24.0.0-alpha2 (including) |
Electron | Electronjs | 24.0.0-alpha3 (including) | 24.0.0-alpha3 (including) |
Electron | Electronjs | 24.0.0-alpha4 (including) | 24.0.0-alpha4 (including) |
Electron | Electronjs | 24.0.0-alpha5 (including) | 24.0.0-alpha5 (including) |
Electron | Electronjs | 24.0.0-alpha6 (including) | 24.0.0-alpha6 (including) |
Electron | Electronjs | 24.0.0-alpha7 (including) | 24.0.0-alpha7 (including) |
Electron | Electronjs | 24.0.0-beta1 (including) | 24.0.0-beta1 (including) |
Electron | Electronjs | 24.0.0-beta2 (including) | 24.0.0-beta2 (including) |
Electron | Electronjs | 24.0.0-beta3 (including) | 24.0.0-beta3 (including) |
Electron | Electronjs | 24.0.0-beta4 (including) | 24.0.0-beta4 (including) |
Electron | Electronjs | 24.0.0-beta5 (including) | 24.0.0-beta5 (including) |
Electron | Electronjs | 24.0.0-beta6 (including) | 24.0.0-beta6 (including) |
Electron | Electronjs | 24.0.0-beta7 (including) | 24.0.0-beta7 (including) |
Electron | Electronjs | 25.0.0-alpha1 (including) | 25.0.0-alpha1 (including) |
The programmer may assume that certain events or conditions will never occur or do not need to be worried about, such as low memory conditions, lack of access to resources due to restrictive permissions, or misbehaving clients or components. However, attackers may intentionally trigger these unusual conditions, thus violating the programmer’s assumptions, possibly introducing instability, incorrect behavior, or a vulnerability. Note that this entry is not exclusively about the use of exceptions and exception handling, which are mechanisms for both checking and handling unusual or unexpected conditions.