Webview の脆弱性の修正
· 読むのにかかる時間 1 分
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;
}
);
});
// *もし* 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 にメールでご連絡お願いします。
メールリスト に参加すると、リリースとセキュリティアップデートに関する更新情報を受信できます。