Packages / electron / Security
Electron Vulnerable to Code Execution by Re-Enabling Node.js Integration
Affected releases · electron
- 1.x1.7.0 – 1.8.3Fixed in 1.8.4
On 1.x, the newest line:
npm install electron@1.8.4Not affected
45.0.0
1 release, latest
Not affected
1.3.1 – 1.6.18
53 releases
Affected
1.7.0 – 1.7.12
13 releases
Fixed
1.7.13 – 1.7.16
4 releases
Affected
1.8.0 – 1.8.3
4 releases
Fixed
1.8.4 – 1.8.8
5 releases
Is your project affected?
Paste your package.json, or type the range you declare for electron. It is read in your browser and sent nowhere.
What happens
A vulnerability has been discovered which allows Node.js integration to be re-enabled in some Electron applications that disable it.
For the application to be impacted by this vulnerability it must meet all of these conditions
Runs on Electron 1.7, 1.8, or a 2.0.0-beta
Allows execution of arbitrary remote code
Disables Node.js integration
Does not explicitly declare webviewTag: false in its webPreferences
Does not enable the nativeWindowOption option
Does not intercept new-window events and manually override event.newGuest without using the supplied options tag
Recommendation
Update to electron version 1.7.13, 1.8.4, or 2.0.0-beta.5 or later.
If you are unable to update your Electron version can mitigate the vulnerability with the following code.
app.on('web-contents-created', (event, win) => {
win.on('new-window', (event, newURL, frameName, disposition,
options, additionalFeatures) => {
if (!options.webPreferences) options.webPreferences = {};
options.webPreferences.nodeIntegration = false;
options.webPreferences.nodeIntegrationInWorker = false;
options.webPreferences.webviewTag = false;
delete options.webPreferences.preload;
})
})
// and *IF* you don't use WebViews at all,
// you might also want
app.on('web-contents-created', (event, win) => {
win.on('will-attach-webview', (event, webPreferences, params) => {
event.preventDefault();
})
})