Webviewの脆弱性修正
·読了時間2分
Node.jsの統合を無効にしている一部のElectronアプリケーションで、それを再度有効にすることができる脆弱性が発見されました。この脆弱性には、CVE識別子CVE-2018-1000136が割り当てられています。
影響を受けるアプリケーション
次のすべての条件に当てはまる場合、アプリケーションは影響を受けます。
- Electron 1.7、1.8、または2.0.0-betaを使用している
- 任意のリモートコードの実行を許可する
- Node.jsの統合を無効にしている
webviewTag: false
をwebPreferencesで明示的に宣言していないnativeWindowOption
オプションを有効にしていないnew-window
イベントをインターセプトせず、提供されたオプションタグを使用せずに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までメールを送信してください。
リリースとセキュリティ更新に関する情報を取得するには、メールリストに参加してください。