メインコンテンツへ飛ぶ

Webview の脆弱性の修正

· 読むのにかかる時間 1 分

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 イベントをインターセプトしておらず、提供された options タグを使用せずに 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;
}
);
});

// *もし* WebView を全く使用しない場合は、
// 以下も必要になる場合があります
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 にメールでご連絡お願いします。

メールリスト に参加すると、リリースとセキュリティアップデートに関する更新情報を受信できます。