本文へスキップ

Webviewの脆弱性修正

·読了時間2分

Node.jsの統合を無効にしている一部のElectronアプリケーションで、それを再度有効にすることができる脆弱性が発見されました。この脆弱性には、CVE識別子CVE-2018-1000136が割り当てられています。


影響を受けるアプリケーション

次のすべての条件に当てはまる場合、アプリケーションは影響を受けます。

  1. Electron 1.7、1.8、または2.0.0-betaを使用している
  2. 任意のリモートコードの実行を許可する
  3. Node.jsの統合を無効にしている
  4. webviewTag: falseをwebPreferencesで明示的に宣言していない
  5. nativeWindowOptionオプションを有効にしていない
  6. new-windowイベントをインターセプトせず、提供されたオプションタグを使用せずにevent.newGuestを手動でオーバーライドしていない

これはElectronアプリケーションのごく一部であると思われますが、予防措置としてすべてのアプリケーションをアップグレードすることをお勧めします。

軽減策

この脆弱性は、本日リリースされた1.7.131.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までメールを送信してください。

リリースとセキュリティ更新に関する情報を取得するには、メールリストに参加してください。