Webview 漏洞修复
·2 分钟阅读
已发现一个漏洞,该漏洞允许在某些禁用 Node.js 集成的 Electron 应用程序中重新启用它。此漏洞已被分配 CVE 标识符 CVE-2018-1000136。
受影响的应用程序
如果以下所有条件均为真,则应用程序会受到影响
- 在 Electron 1.7、1.8 或 2.0.0-beta 上运行
- 允许执行任意远程代码
- 禁用 Node.js 集成
- 未在其 webPreferences 中显式声明
webviewTag: false
- 未启用
nativeWindowOption
选项 - 未拦截
new-window
事件,并且在未使用提供的 options 标签的情况下手动覆盖event.newGuest
尽管这似乎只是少数 Electron 应用程序,但我们仍建议所有应用程序都进行升级以作为预防措施。
缓解措施
此漏洞已在今天的 1.7.13、1.8.4 和 2.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。
请加入我们的邮件列表,以接收有关版本和安全更新的最新信息。