跳到主要内容

Webview 漏洞修复

·阅读时长 2 分钟

发现了一个漏洞,它允许在一些禁用了 Node.js 集成的 Electron 应用程序中重新启用该集成。此漏洞已被分配 CVE 标识符 CVE-2018-1000136


受影响的应用

如果同时满足以下*所有*条件,则应用程序受影响

  1. 运行在 Electron 1.7、1.8 或 2.0.0-beta 版本上
  2. 允许执行任意远程代码
  3. 禁用 Node.js 集成
  4. 未在其 webPreferences 中明确声明 webviewTag: false
  5. 未启用 nativeWindowOption 选项
  6. 未拦截 new-window 事件并手动覆盖 event.newGuest,且未使用提供的选项标签

尽管这似乎只影响了少数 Electron 应用程序,但我们仍建议所有应用程序作为预防措施进行升级。

缓解措施

此漏洞已在今天发布的 1.7.131.8.42.0.0-beta.5 版本中修复。

无法升级应用程序 Electron 版本的开发者可以使用以下代码来缓解此漏洞

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();
});
});

更多信息

此漏洞由 Trustwave SpiderLabs 的 Brendan Scarvell 发现并负责任地报告给 Electron 项目。

要了解更多关于确保 Electron 应用程序安全的最佳实践,请参阅我们的安全教程

要报告 Electron 中的漏洞,请发送电子邮件至 security@electronjs.org

请加入我们的邮件列表以接收关于版本发布和安全更新的信息。