Mais conteúdo relacionado
Semelhante a 次世代プラットフォームのセキュリティモデル考察(前編) (20)
次世代プラットフォームのセキュリティモデル考察(前編)
- 6. SECURITY CAMP 2016
Webを超えてのHTML+JavaScript
Microsoft HTML Application
おそらくもっとも古い(1999年)HTMLによるアプリケーション作成の仕組
み
Firefox OS
ブラウザをOSとしてしまうことで、HTML+JSをアプリケーションとして動作
させる
Apache Cordova / Adobe PhoneGap
主にスマートフォン向けアプリをHTML+JSで作成可能にするフレーム
ワーク
Electron / NW.js
node.js+Chromiumでマルチプラットフォームなデスクトップアプリを開
発可能にするフレームワーク
Chrome Apps
Chromeを意識させずに利用することで動作するデスクトップアプリ環境
- 10. SECURITY CAMP 2016
Electronアプリ
メインプロセス内でレンダラプロセスを生成
{
"name" : "Application name",
"version" : "0.1",
"main" : "main.js"
}
let win = new BrowserWindow( {width:840,height:700} );
win.loadURL( `file://${__dirname}/index.html` );
<html>
<head>...</head>
<body>...</body>
</html>
main.js - メインプロセス
index.html - レンダラプロセス
package.json
- 12. SECURITY CAMP 2016
Electronアプリ - WebView
他のサイトをレンダラ内に埋め込む
iframeと異なりwebview内から外側は完全に
見えない (window.topとか)
webviewごとにnode機能の有無を指定可能
<webview src="http://example.jp/"></webview>
<webview src="http://example.jp/" nodeintegration></webview>
https://github.com/electron/electron/blob/master/docs/api/web-view-tag.md
- 13. SECURITY CAMP 2016
Electronアプリのセキュリティ
Electronの倒し方 (2016-03-07)
http://utf-8.jp/public/2016/0307/electron.pdf
Electronのセキュリティその後 (2016-06-29)
http://utf-8.jp/public/2016/0629/electron.pdf
Electronのセキュリティは難しい?
— Mobage Developers Blog (2016-04-28)
http://developers.mobage.jp/blog/electron-security
- 15. SECURITY CAMP 2016
演習 : Electronアプリの調査
Electronアプリを調査し、脆弱性や潜在的な脅
威を調べる
Webアプリとして動作しているSNSをパッケージ化し
たもの
Electronアプリ、SNSアプリ(WebView内)それぞれ
を調べる
具体的な脆弱性でなくてもOK
「こういう条件のときに危険かも知れない」というレベ
ルでOK
- 16. SECURITY CAMP 2016
演習 : Electronアプリの調査
Electronをインストール
Electronアプリをダウンロード
http://utf-8.jp/camp2016/electron.zip
ZIPを展開後、以下のようにするとElectronアプ
リが起動する
参考:配布されているElectronアプリの場合
通常はasar形式で
配布される
C:¥foo¥bar¥electron>electron .
C:¥foo>npm install -g asar
C:¥foo>asar e app.asar app
C:¥foo>cd app
C:¥foo¥app>notepad main.js
C:¥foo¥app>electron .
C:¥foo¥bar¥>npm -g install electron-prebuilt
- 18. SECURITY CAMP 2016
演習 : Electronアプリの調査
レンダラ(WebView外)でnode機能が有効に
なっている
Electronアプリ部分にXSSが存在すると、攻撃者は
何でもできる
WebViewでnode機能が有効になっている
SNS内にXSSが存在していると何でもできる
広告が悪意を持つと何でもできる
リンククリックで外部コマンドが起動
node-integrationが無効なときにどこまででき
る?
- 19. SECURITY CAMP 2016
演習 : Electronアプリの調査
レンダラ(WebView外)でnode機能が有効に
なっている
Electronアプリ部分にXSSが存在すると、攻撃者は
何でもできる
WebViewでnode機能が有効になっている
SNS内にXSSが存在していると何でもできる
広告が悪意を持つと何でもできる
リンククリックで外部コマンドが起動
node-integrationが無効なときにどこまででき
る?
- 24. SECURITY CAMP 2016
演習 : Electronアプリの調査
レンダラ(WebView外)でnode機能が有効に
なっている
Electronアプリ部分にXSSが存在すると、攻撃者は
何でもできる
WebViewでnode機能が有効になっている
SNS内にXSSが存在していると何でもできる
広告が悪意を持つと何でもできる
リンククリックで外部コマンドが起動
node-integrationが無効なときにどこまででき
る?
- 31. SECURITY CAMP 2016
演習 : Electronアプリの調査
レンダラ(WebView外)でnode機能が有効に
なっている
Electronアプリ部分にXSSが存在すると、攻撃者は
何でもできる
WebViewでnode機能が有効になっている
SNS内にXSSが存在していると何でもできる
広告が悪意を持つと何でもできる
リンククリックで外部コマンドが起動
node-integrationが無効なときにどこまででき
る?
- 34. SECURITY CAMP 2016
演習 : Electronアプリの調査
レンダラ(WebView外)でnode機能が有効に
なっている
Electronアプリ部分にXSSが存在すると、攻撃者は
何でもできる
WebViewでnode機能が有効になっている
SNS内にXSSが存在していると何でもできる
広告が悪意を持つと何でもできる
リンククリックで外部コマンドが起動
node-integrationが無効なときにどこまででき
る?
- 37. SECURITY CAMP 2016
Chrome Apps
Chromeを意識させることなくHTML+JSをアプ
リのように実行
https://developer.chrome.com/apps/about_apps
使いたい機能を事前にmanifest.jsonで定義
Content Security Policyがデフォルト有効
インラインのスクリプトやevalなどは使えない
https://developer.chrome.com/apps/contentSecurityPolicy
XSSが発生しても被害が限定的
{ ..., "permission" : [ "clipboardRead", "fileSystem" ], ...}