2015-12-25
■[SECURITY] Electronでアプリを書く場合は、気合いと根性でXSSを発生させないようにしなければならない。

そのうちもう少しきちんと書きますが、とりあえず時間がないので結論だけ書くと、タイトルが全てでElectronでアプリを書く場合は気合いと根性でXSSを発生させないようにしなければならない。
これまでWebアプリケーション上でXSSが存在したとしても、影響範囲はそのWebアプリケーションの中に留まるので、Webアプリケーションの提供側がそれを許容するのであればXSSの存在に目をつむることもできた。しかし、ElectronアプリでDOM-based XSSが一か所でも発生すると、(おそらく)確実に任意コード実行へとつながり、利用者のPCの(そのユーザー権限での)全機能が攻撃者によって利用できる。
そのため、Electronでアプリケーションを作成する開発者は気合いと根性でXSSを完全につぶさなければならない。
nodeIntegration:falseやContent-Security-Policyといった保護機構は残念ながら役に立たない。
mainWindow = new BrowserWindow({width: 600, height: 400, webPreferences:{nodeIntegration:false}});
みたいにレンダラプロセスでnode機能を切り離し、さらにレンダラのHTMLで
<meta http-equiv="Content-Security-Policy" content="default-src 'self';">
ていたとしても、レンダラのHTML上に
<webview nodeintegration src="data:text/html,<script>require('child_process').exec('calc.exe',function(){})</script>"></webview>
のようなタグを注入されると、nodeの機能をフルに活用して任意のコードが実行可能となる。
現在、多くのElectron製アプリケーションで任意コード実行可能な脆弱性が存在していることを確認しています。
コメントを書く
トラックバック - http://d.hatena.ne.jp/hasegawayosuke/20151225/p1
リンク元
- 67 https://t.co/1vCKIuGQUf
- 12 https://t.co/pfSnEH93k5
- 11 https://t.co/LvGX47aOLI
- 5 http://www.st.ryukoku.ac.jp/~kjm/security/memo/
- 3 https://t.co/t8hXwpYMVh
- 3 https://www.google.co.jp/
- 2 http://d.hatena.ne.jp/
- 2 https://www.google.co.jp
- 1 http://b.hatena.ne.jp/add?url=d.hatena.ne.jp/hasegawayosuke/20151225/p1
- 1 http://b.hatena.ne.jp/entry/d.hatena.ne.jp/hasegawayosuke/20151225/p1