SlideShare a Scribd company logo
1URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
クロスプラットフォーム開発を可能にする
Monacaとそのセキュリティ対策
アシアル株式会社
代表取締役 田中正裕
masahiro@asial.co.jp
2018年4月23日
2URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
アシアル株式会社
会社概要
• 創業:2002年
• 資本金:1000万円
• 事業所:東京(本社)、サンフランシスコ
• 従業員数:約50名(8国籍)
事業内容
• 開発プラットフォーム事業:開発ツール、UIフレームワーク
• 開発支援事業:アプリ開発、サーバーサイド(PHP)開発
• 教育事業:トレーニング、執筆
3URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
バックエンドからフロントエンドまで
フルスタック開発を得意としています
4URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
Monacaの紹介
5URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
モバイルアプリ開発基盤 Monaca
HTML5、JavaScript
でアプリ開発
セットアップ不要の
クラウド開発環境
UIフレームワーク
Onsen UI搭載
安心の日本語サポート
6URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
iOS & Android向けのアプリを同時開発
• Web標準技術でモバイルアプリ開発
• モバイルアプリ開発の未経験者に最適
• 既存のWeb開発チームがアプリ開発チームに
• アプリの運用コストを劇的に低減
• ネイティブ機能を使ったアプリ開発も可能
7URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
JavaScriptの世界が広がっていく
Stack Overflow Survey 2017 Stack Overflow Survey 2013
“It’s Official: JavaScript Is The Most Commonly Used Programming Language On
Earth.” - Daniel Rowinski, Editor-in-Chief at ARC
※ StackOverflow: 850万人の登録ユーザー、1500万件の
質問と���答を抱える、世界最大の開発者コミュニティ
8URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
高いUI/UXを表現するUIコンポーネント群
• 様々なモバイルUIの部品をiOSと
Android向けに提供
• 端末のOSにあわせて自動的にデザイ
ンを適用
• 同じソースコードでクロスプラット
フォームUIを実現
• Angular、React、Vue、jQueryなど
各種フレームワークに対応
9URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
Monacaは “プラットフォーム“
Monacaクラウド
WebベースのIDE デバッガー 好きなIDE/エディタ
プロジェクト管理
コード管理
リモートビルド
mBaaS
10URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
日本で最も普及しているアプリ開発基盤
20万人
11URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
WindowsでもiOSアプリ開発
12URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
ハイブリッドアプリケーション
13URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
ハイブリッドアプリ
Web技術でネイティブアプリを開発するためのフレームワーク
【特徴】
・プッシュ通知
・オフライン対応
・デバイスAPI、ネイティブAPIへのアクセス
・アプリストアでの販売、ストア課金
14URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
HTML5+ネイティブ
ネイティブコード
HTML
コンテンツ
アプリ本体はHTML5で実装
ネイティブアプリ形式で配布
ハードウェア機能を利用可能
プラグインでネイティブ機能を拡張
15URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
Cross Platformツールのシェア
61%
35%
31%
18%
15%
13%
12%
9%
4%
3%
0% 10% 20% 30% 40% 50% 60% 70%
PhoneGap/Cordova
Xamarin
Unity
Qt
Adobe Air
Appcelerator
Corona
Marmelade
Codename One
Live Code
Using this tool Prioritize this tool
Vision Mobile Analysis of Cross-Platform Development, July 2015
16URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
業界標準のフレームワーク
17URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
Cordovaフレームワーク(iOS/Android)
コ
ー
ル
バ
ッ
ク
HTML5
CSS
JavaScript
WebView
ネ
イ
テ
ィ
ブ
ロ
ジ
ッ
ク
アプリケーションパッケージ
ネ
イ
テ
ィ
ブ
A
P
I
Android
iOS
18URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
Cordovaフレームワーク(Windows)
HTML5
CSS
JavaScript
Chakra + EdgeHTML
アプリケーションパッケージ
ラ
ン
タ
イ
ム
A
P
I
Windows
ランタイム
(WinRT)
19URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
ハイブリッドアプリのセキュリティ
20URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
'2016 OWASP Mobile Top 10
Improper Platform
Usage
OS機能やセキュリティの仕組みの誤用。Androidインテントやパーミッションの間違い、Keychainの
誤用���ど。
Insecure Data
Storage
安全でないデータ領域の使用や意図しないデータ漏洩など。
Insecure
Communication
ハンドシェイクの間違いや古いSSLバージョンの使用、暗号化されていない通信など。
Insecure
Authentication
認証処理の不備やセッション管理の問題など。
Insufficient
Cryptography
保護されるべきデータに対して、不完全な暗号を使用。
Insecure
Authorization
認可処理の不備。クライアントサイドでの認可処理や、強制ブラウジングなど。
Client Code Quality コードレベルの実装問題。バッファオーバーフローや文字列処理の間違いなど。
Code Tampering バイナリファイルの改ざんやリソースファイルの変更、動的なメモリの改ざんなど。
Reverse Engineering バイナリファイルからのソースコード復元、使用ライブラリやアルゴリズムの抽出など。
Extraneous
Functionality
隠しバックドアの存在や、リリースアプリに含まれてはいけないコメントの混入など。
21URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
ハイブリッドアプリのセキュリティ懸念
ネットワーク通信
WebViewから(ページの読み込み、XHRでのAjax)
ネイティブから(Android/iOS)
WebView
ブラウザエンジンの脆弱性
Cordova本体
Cordovaの脆弱性
プラグイン
プラグインの脆弱性
リバースエンジニアリング
ロジックの漏洩やコードの改ざん
ソースコード
ソースコードの脆弱性
Cordova
アプリケーションパッケージ
ネイティブ言語
による実装
JavaScriptによる実装
WebView
ブラウザエン
ジンの脆弱性
ネットワーク
通信
リバースエン
ジニアリング
プラグイン
実装
プラグイン
22URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
Same-Origin Policy
Cordovaが標準的に使用するiOSのUIWebViewやAndroidのWebViewはfile://プロ
トコルがOriginとなっておりSame-Origin Policyは適用されない。よっ
て、Content-Security Policyの指定が必要となる。
ただし、iOS 9 + Cordova iOS 4.0から利用できる「WKWebView」を用いる
場合、WebViewの不具合からSame-Origin Policyが適用されるため、サー
バー側にCORSヘッダーを付与する必要がある。
ネットワーク通信に対するセキュリティモデル
23URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
Access OriginとAllow Navigation
Access Origin
設定ファイル(config.xml)にて記述する。初期バージョンより存在。
デフォルトは * (すべて許可)なので注意が必要。<video>タグやWebSocket等は制限されないた
Security Policyの利用が推奨される。
Allow Navigation
Cordova iOS/Android 4.0以上に導入されたセキュリティモデル。Androidはcordova-plugin-whitelist
フォルトで組み込み済)。WebViewで遷移可能なページを制限する。
デフォルトはfile://から開始される(端末内に存在する)URLにナビゲーションを許可する。
<access origin="http://example.com" />
<access origin="*" />
<allow-navigation href="http://example.com/*" />
ネットワーク通信に対するセキュリティモデル
24URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
Content Security Policy
HTML内に<meta>タグを用いて記述する。KitKat(Android 4.4)以降、およびiOS 7以降で対応。
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-
inline'; media-src *">
• gap://プロトコル(iOSのUIWebView)およびhttps://ssl.gstatic.com(Androidで必要)を許可。
• eval()関数やインラインスクリプトを禁止。
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'
'unsafe-eval'">
• CSSとJavaScriptは同じオリジンのものを許可。
• eval()関数とインラインスクリプトも許可。
ネットワーク通信に対するセキュリティモデル
25URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
iOS Application Transport Security (ATS)
iOSの持つセキュリティ基準で、iOS 11より必須に。ATSが有効の場合HTTP通信は許可されず、TLS 1.2以上が必須。
Cordovaでは<access>要素もしくは<allow-navigation>要素を指定すると、ATS設定を記述するInfo.plistファイルが上書
きされ、設定が適用される。
下記のように<access>要素が拡張された。
<access origin='*' allows-arbitrary-loads-in-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-
networking='true' />
allows-arbitrary-loads-in-media
• trueの場合、AV Foundation Framework経由で読み込むメディアに対して接続制限が解除される。
allows-arbitrary-loads-in-web-content
• trueの場合、WebViewから行われるリクエストに対して接続制限が解除される。
allows-local-networking
• trueの場合、ローカルネットワークにあるリソースに対して接続制限が解除される。
ネットワーク通信に対するセキュリティモデル
26URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
WebViewの脆弱性
27URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
ブラウザ脆弱性
Android
https://developer.android.com/about/dashboards/
バージョン ブラウザ 世界シェア
4.3以前 WebKit 6%
4.4 (KitKat) Blink (Chrome) 10%
5.0以降 Evergreen
Chrome
84%
Android 5以降は常に最新のChromeエンジン
に更新されるため、機種依存は発生しない
iOS
2018年1月18日現在
https://developer.apple.com/support/app-store/
OSが常に自動更新を行うことから、ユーザー
は常に最新2世代のOSを使い続ける傾向にある。
バージョン依存は発生しづらい状況にある。
2018年4月16日
28URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
Cordova/プラグインの脆弱性
29URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
Cordovaに関する脆弱性の報告
CVE-2015-5208
Apache Cordova iOS before 4.0.0 allows remote attackers to execute arbitrary plugins via a link.
CVE-2015-5207
Apache Cordova iOS before 4.0.0 might allow attackers to bypass a URL whitelist protection mechanism in an app and load
arbitrary resources by leveraging unspecified methods.
CVE-2015-5204
CRLF injection vulnerability in the Apache Cordova File Transfer Plugin (cordova-plugin-file-transfer) for Android before
1.3.0 allows remote attackers to inject arbitrary headers via CRLF sequences in the filename of an uploaded file.
CVE-2015-8320
Apache Cordova-Android before 3.7.0 improperly generates random values for BridgeSecret data, which makes it easier for
attackers to conduct bridge hijacking attacks by predicting a value.
CVE-2015-5256
Apache Cordova-Android before 4.1.0, when an application relies on a remote server, improperly implements a JavaScript
whitelist protection mechanism, which allows attackers to bypass intended access restrictions via a crafted URI.
Cordova/プラグインの脆弱性
30URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
Google Play Storeでの対応
脆弱性のあるCordovaが用いられている場合、Google Play Storeにて公開停止が行わ
れる。
Google Play Storeでの説明記事
https://support.google.com/faqs/answer/6325474?hl=ja
現在はCordova Android 4.1.1以前で作られ
たパッケージはアップロード不可。
Cordovaの脆弱性が発生すると今後も対応
が必要になる。メンテナンス体制を整えて
おく必要がある。
Cordova/プラグインの脆弱性
31URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
リバースエンジニアリング
ハイブリッドアプリのアセットファイル(HTML/JavaScript等)はネイティブコードにコンパイル
されず、ソースコードの状態で端末内に格納される。無用な記述を削除するため、コメント
の削除や難読化(最適化)を実施することが望ましい。
より進んだ対策としては、ビルド時に暗号化を行い実行時に復号する、サードパーティ製の
暗号化プラグインを使用する。復号に使うキーは、リモートサーバー等の安全な場所から取
り出す必要がある。
Monaca Enterpriseでは
アセットを暗号化できる
https://ja.monaca.io/enterprise.html
Cordova/プラグインの脆弱性
32URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
不要なプラグインの除去
Cordova向けアプリテンプレートの多くが、Cordova Core Pluginsと呼ばれる基本プラグインをすべて同
梱している。実際には使用していないコードが含まれてしまい、脆弱性の温床になる可能性
がある。
Mohamed Shehab et. al, Reducing Attack Surface on Cordova-Based
Hybrid Mobile Apps, MobileDeLi 2014
PhoneGapのWebサイトに掲載されていた622
件のアプリに対しての調査(2014年)では、
プラグインの組み込みと実際の利用に大きな
開きが見られている。
Cordova/プラグインの脆弱性
33URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
セキュアコーディング
34URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
コーデイングの指針
Cordovaアプリの大半はSPA型であり、モバイルWebサイトと比べてもJavaScriptのウェイトが高
い。セキュアコーディング対策としてはHTML5向けのプラクティスを適用できる。
• ユーザー入力データのバリデーション
• 適切なエスケープ処理
• JavaScriptインジェクションの回避
• APIキーの適切な管理
セキュアコーディング
35URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
エスケープ処理
コンテキストに応じたエスケープ処理が必要であるが、適切な記述を行うのは困難。
SPAフレームワークやテンプレートエンジンの採用が望ましい。
<div onmouseover="${data1}">${data2}</div>
<a href="${data3}">link</a>
<iframe srcdoc="${data4}"></iframe>
下記の例ではすべての変数に別のエスケープ処理が必要
バインディングをサポートするフレームワーク
やライブラリ
2-Way Bindingを持つもの
• Angular 1
• Angular 2
1-Way Bindingを持つもの
• React
テンプレートエンジン
• Handlebars
• Mustache
エスケープ処理を自前で実装するのは困難であるた
め、フレームワークを採用することが望ましい。
セキュアコーディング
36URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
まとめ
37URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
ハイブリッドアプリのセキュリティ懸念
ネットワーク通信
WebViewから(ページの読み込み、XHRでのAjax)
ネイティブから(Android/iOS)
WebView
ブラウザエンジンの脆弱性
Cordova本体
Cordovaの脆弱性
プラグイン
プラグインの脆弱性
リバースエンジニアリング
ロジックの漏洩やコードの改ざん
ソースコード
ソースコードの脆弱性
Cordova
アプリケーションパッケージ
ネイティブ言語
による実装
JavaScriptによる実装
WebView
ブラウザエン
ジンの脆弱性
ネットワーク
通信
リバースエン
ジニアリング
プラグイン
実装
プラグイン
38URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
脆弱性とその対策
脆弱性
• OS、WebView → OSのアップデート
• Cordovaの脆弱性 → Cordovaのアップデート
• プラグインの脆弱性 → 最新のプラグインの利用
• アプリケーションの脆弱性 → セキュアコーディング
対策
• 安全なネットワーク通信(SSLの利用)
• OSの持つセキュアな領域の使用
• ソースコードの暗号化
39URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved.
ありがとうございました
問い合わせ先:
アシアル株式会社 田中正裕
masahiro@asial.co.jp

More Related Content

クロスプラットフォーム開発を可能にするMonaca

  • 1. 1URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. クロスプラットフォーム開発を可能にする Monacaとそのセキュリティ対策 アシアル株式会社 代表取締役 田中正裕 masahiro@asial.co.jp 2018年4月23日
  • 2. 2URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. アシアル株式会社 会社概要 • 創業:2002年 • 資本金:1000万円 • 事業所:東���(本社)、サンフランシスコ • 従業員数:約50名(8国籍) 事業内容 • 開発プラットフォーム事業:開発ツール、UIフレームワーク • 開発支援事業:アプリ開発、サーバーサイド(PHP)開発 • 教育事業:トレーニング、執筆
  • 3. 3URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. バックエンドからフロントエンドまで フルスタック開発を得意としています
  • 4. 4URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. Monacaの紹介
  • 5. 5URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. モバイルアプリ開発基盤 Monaca HTML5、JavaScript でアプリ開発 セットアップ不要の クラウド開発環境 UIフレームワーク Onsen UI搭載 安心の日本語サポート
  • 6. 6URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. iOS & Android向けのアプリを同時開発 • Web標準技術でモバイルアプリ開発 • モバイルアプリ開発の未経験者に最適 • 既存のWeb開発チームがアプリ開発チームに • アプリの運用コストを劇的に低減 • ネイティブ機能を使ったアプリ開発も可能
  • 7. 7URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. JavaScriptの世界が広がっていく Stack Overflow Survey 2017 Stack Overflow Survey 2013 “It’s Official: JavaScript Is The Most Commonly Used Programming Language On Earth.” - Daniel Rowinski, Editor-in-Chief at ARC ※ StackOverflow: 850万人の登録ユーザー、1500万件の 質問と回答を抱える、世界最大の開発者コミュニティ
  • 8. 8URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. 高いUI/UXを表現するUIコンポーネント群 • 様々なモバイルUIの部品をiOSと Android向けに提供 • 端末のOSにあわせて自動的にデザイ ンを適用 • 同じソースコードでクロスプラット フォームUIを実現 • Angular、React、Vue、jQueryなど 各種フレームワークに対応
  • 9. 9URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. Monacaは “プラットフォーム“ Monacaクラウド WebベースのIDE デバッガー 好きなIDE/エディタ プロジェクト管理 コード管理 リモートビルド mBaaS
  • 10. 10URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. 日本で最も普及しているアプリ開発基盤 20万人
  • 11. 11URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. WindowsでもiOSアプリ開発
  • 12. 12URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. ハイブリッドアプリケーション
  • 13. 13URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. ハイブリッドアプリ Web技術でネイティブアプリを開発するためのフレームワーク 【特徴】 ・プッシュ通知 ・オフライン対応 ・デバイスAPI、ネイティブAPIへのアクセス ・アプリストアでの販売、ストア課金
  • 14. 14URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. HTML5+ネイティブ ネイティブコード HTML コンテンツ アプリ本体はHTML5で実装 ネイティブアプリ形式で配布 ハードウェア機能を利用可能 プラグインでネイティブ機能を拡張
  • 15. 15URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. Cross Platformツールのシェア 61% 35% 31% 18% 15% 13% 12% 9% 4% 3% 0% 10% 20% 30% 40% 50% 60% 70% PhoneGap/Cordova Xamarin Unity Qt Adobe Air Appcelerator Corona Marmelade Codename One Live Code Using this tool Prioritize this tool Vision Mobile Analysis of Cross-Platform Development, July 2015
  • 16. 16URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. 業界標準のフレームワーク
  • 17. 17URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. Cordovaフレームワーク(iOS/Android) コ ー ル バ ッ ク HTML5 CSS JavaScript WebView ネ イ テ ィ ブ ロ ジ ッ ク アプリケーションパッケージ ネ イ テ ィ ブ A P I Android iOS
  • 18. 18URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. Cordovaフレームワーク(Windows) HTML5 CSS JavaScript Chakra + EdgeHTML アプリケーションパッケージ ラ ン タ イ ム A P I Windows ランタイム (WinRT)
  • 19. 19URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. ハイブリッドアプリのセキュリティ
  • 20. 20URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. '2016 OWASP Mobile Top 10 Improper Platform Usage OS機能やセキュリティの仕組みの誤用。Androidインテントやパーミッションの間違い、Keychainの 誤用など。 Insecure Data Storage 安全でないデータ領域の使用や意図しないデータ漏洩など。 Insecure Communication ハンドシェイクの間違いや古いSSLバージョンの使用、暗号化されていない通信など。 Insecure Authentication 認証処理の不備やセッション管理の問題など。 Insufficient Cryptography 保護されるべきデータに対して、不完全な暗号を使用。 Insecure Authorization 認可処理の不備。クライアントサイドでの認可処理や、強制ブラウジングなど。 Client Code Quality コードレベルの実装問題。バッファオーバーフローや文字列処理の間違いなど。 Code Tampering バイナリファイルの改ざんやリソースファイルの変更、動的なメモリの改ざんなど。 Reverse Engineering バイナリファイルからのソースコード復元、使用ライブラリやアルゴリズムの抽出など。 Extraneous Functionality 隠しバックドアの存在や、リリースアプリに含まれてはいけないコメントの混入など。
  • 21. 21URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. ハイブリッドアプリのセキュリティ懸念 ネットワーク通信 WebViewから(ページの読み込み、XHRでのAjax) ネイティブから(Android/iOS) WebView ブラウザエンジンの脆弱性 Cordova本体 Cordovaの脆弱性 プラグイン プラグインの脆弱性 リバースエンジニアリング ロジックの漏洩やコードの改ざん ソースコード ソースコードの脆弱性 Cordova アプリケーションパッケージ ネイティブ言語 による実装 JavaScriptによる実装 WebView ブラウザエン ジンの脆弱性 ネットワーク 通信 リバースエン ジニアリング プラグイン 実装 プラグイン
  • 22. 22URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. Same-Origin Policy Cordovaが標準的に使用するiOSのUIWebViewやAndroidのWebViewはfile://プロ トコルがOriginとなっておりSame-Origin Policyは適用されない。よっ て、Content-Security Policyの指定が必要となる。 ただし、iOS 9 + Cordova iOS 4.0から利用できる「WKWebView」を用いる 場合、WebViewの不具合からSame-Origin Policyが適用されるため、サー バー側にCORSヘッダーを付与する必要がある。 ネットワーク通信に対する��キュリティモデル
  • 23. 23URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. Access OriginとAllow Navigation Access Origin 設定ファイル(config.xml)にて記述する。初期バージョンより存在。 デフォルトは * (すべて許可)なので注意が必要。<video>タグやWebSocket等は制限されないた Security Policyの利用が推奨される。 Allow Navigation Cordova iOS/Android 4.0以上に導入されたセキュリティモデル。Androidはcordova-plugin-whitelist フォルトで組み込み済)。WebViewで遷移可能なページを制限する。 デフォルトはfile://から開始される(端末内に存在する)URLにナビゲーションを許可する。 <access origin="http://example.com" /> <access origin="*" /> <allow-navigation href="http://example.com/*" /> ネットワーク通信に対するセキュリティモデル
  • 24. 24URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. Content Security Policy HTML内に<meta>タグを用いて記述する。KitKat(Android 4.4)以降、およびiOS 7以降で対応。 <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe- inline'; media-src *"> • gap://プロトコル(iOSのUIWebView)およびhttps://ssl.gstatic.com(Androidで必要)を許可。 • eval()関数やインラインスクリプトを禁止。 <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"> • CSSとJavaScriptは同じオリジンのものを許可。 • eval()関数とインラインスクリプトも許可。 ネットワーク通信に対するセキュリティモデル
  • 25. 25URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. iOS Application Transport Security (ATS) iOSの持つセキュリティ基準で、iOS 11より必須に。ATSが有効の場合HTTP通信は許可されず、TLS 1.2以上が必須。 Cordovaでは<access>要素もしくは<allow-navigation>要素を指定すると、ATS設定を記述するInfo.plistファイルが上書 きされ、設定が適用される。 下記のように<access>要素が拡張された。 <access origin='*' allows-arbitrary-loads-in-media='true' allows-arbitrary-loads-in-web-content='true' allows-local- networking='true' /> allows-arbitrary-loads-in-media • trueの場合、AV Foundation Framework経由で読み込むメディアに対して接続制限が解除される。 allows-arbitrary-loads-in-web-content • trueの場合、WebViewから行われるリクエストに対して接続制限が解除される。 allows-local-networking • trueの場合、ローカルネットワークにあるリソースに対して接続制限が解除される。 ネットワーク通信に対するセキュリティモデル
  • 26. 26URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. WebViewの脆弱性
  • 27. 27URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. ブラウザ脆弱性 Android https://developer.android.com/about/dashboards/ バージョン ブラウザ 世界シェア 4.3以前 WebKit 6% 4.4 (KitKat) Blink (Chrome) 10% 5.0以降 Evergreen Chrome 84% Android 5以降は常に最新のChromeエンジン に更新されるため、機種依存は発生しない iOS 2018年1月18日現在 https://developer.apple.com/support/app-store/ OSが常に自動更新を行うことから、ユーザー は常に最新2世代のOSを使い続ける傾向にある。 バージョン依存は発生しづらい状況にある。 2018年4月16日
  • 28. 28URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. Cordova/プラグインの脆弱性
  • 29. 29URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. Cordovaに関する脆弱性の報告 CVE-2015-5208 Apache Cordova iOS before 4.0.0 allows remote attackers to execute arbitrary plugins via a link. CVE-2015-5207 Apache Cordova iOS before 4.0.0 might allow attackers to bypass a URL whitelist protection mechanism in an app and load arbitrary resources by leveraging unspecified methods. CVE-2015-5204 CRLF injection vulnerability in the Apache Cordova File Transfer Plugin (cordova-plugin-file-transfer) for Android before 1.3.0 allows remote attackers to inject arbitrary headers via CRLF sequences in the filename of an uploaded file. CVE-2015-8320 Apache Cordova-Android before 3.7.0 improperly generates random values for BridgeSecret data, which makes it easier for attackers to conduct bridge hijacking attacks by predicting a value. CVE-2015-5256 Apache Cordova-Android before 4.1.0, when an application relies on a remote server, improperly implements a JavaScript whitelist protection mechanism, which allows attackers to bypass intended access restrictions via a crafted URI. Cordova/プラグインの脆弱性
  • 30. 30URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. Google Play Storeでの対応 脆弱性のあるCordovaが用いられている場合、Google Play Storeにて公開停止が行わ れる。 Google Play Storeでの説明記事 https://support.google.com/faqs/answer/6325474?hl=ja 現在はCordova Android 4.1.1以前で作られ たパッケージはアップロード不可。 Cordovaの脆弱性が発生すると今後も対応 が必要になる。メンテナンス体制を整えて おく必要がある。 Cordova/プラグインの脆弱性
  • 31. 31URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. リバースエンジニアリング ハイブリッドアプリのアセットファイル(HTML/JavaScript等)はネイティブコードにコンパイル されず、ソースコードの状態で端末内に格納される。無用な記述を削除するため、コメント の削除や難読化(最適化)を実施することが望ましい。 より進んだ対策としては、ビルド時に暗号化を行い実行時に復号する、サードパーティ製の 暗号化プラグインを使用する。復号に使うキーは、リモートサーバー等の安全な場所から取 り出す必要がある。 Monaca Enterpriseでは アセットを暗号化できる https://ja.monaca.io/enterprise.html Cordova/プラグインの脆弱性
  • 32. 32URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. 不要なプラグインの除去 Cordova向けアプリテンプレートの多くが、Cordova Core Pluginsと呼ばれる基本プラグインをすべて同 梱している。実際には使用していないコードが含まれてしまい、脆弱性の温床になる可能性 がある。 Mohamed Shehab et. al, Reducing Attack Surface on Cordova-Based Hybrid Mobile Apps, MobileDeLi 2014 PhoneGapのWebサイトに掲載されていた622 件のアプリに対しての調査(2014年)では、 プラグインの組み込みと実際の利用に大きな 開きが見られている。 Cordova/プラグインの脆弱性
  • 33. 33URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. セキュアコーディング
  • 34. 34URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. コーデイングの指針 Cordovaアプリの大半はSPA型であり、モバイルWebサイトと比べてもJavaScriptのウェイトが高 い。セキュアコーディング対策としてはHTML5向けのプラクティスを適用できる。 • ユーザー入力データのバリデーション • 適切なエスケープ処理 • JavaScriptインジェクションの回避 • APIキーの適切な管理 セキュアコーディング
  • 35. 35URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. エスケープ処理 コンテキストに応じたエスケープ処理が必要であるが、適切な記述を行うのは困難。 SPAフレームワークやテンプレートエンジンの採用が望ましい。 <div onmouseover="${data1}">${data2}</div> <a href="${data3}">link</a> <iframe srcdoc="${data4}"></iframe> 下記の例ではすべての変数に別のエスケープ処理が必要 バインディングをサポートするフレームワーク やライブラリ 2-Way Bindingを持つもの • Angular 1 • Angular 2 1-Way Bindingを持つもの • React テンプレートエンジン • Handlebars • Mustache エスケープ処理を自前で実装するのは困難であるた め、フレームワークを採用することが望ましい。 セキュアコーディング
  • 36. 36URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. まとめ
  • 37. 37URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. ハイブリッドアプリのセキュリティ懸念 ネットワーク通信 WebViewから(ページの読み込み、XHRでのAjax) ネイティブから(Android/iOS) WebView ブラウザエンジンの脆弱性 Cordova本体 Cordovaの脆弱性 プラグイン プラグインの脆弱性 リバースエンジニアリング ロジックの漏洩やコードの改ざん ソースコード ソースコードの脆弱性 Cordova アプリケーションパッケージ ネイティブ言語 による実装 JavaScriptによる実装 WebView ブラウザエン ジンの脆弱性 ネットワーク 通信 リバースエン ジニアリング プラグイン 実装 プラグイン
  • 38. 38URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. 脆弱性とその対策 脆弱性 • OS、WebView → OSのアップデート • Cordovaの脆弱性 → Cordovaのアップデート • プラグインの脆弱性 → 最新のプラグインの利用 • アプリケーションの脆弱性 → セキュアコーディング 対策 • 安全なネットワーク通信(SSLの利用) • OSの持つセキュアな領域の使用 • ソースコードの暗号化
  • 39. 39URL : http://ja.monaca.io/ Copyright © Asial Corporation. All Right Reserved. ありがとうございました 問い合わせ先: アシアル株式会社 田中正裕 masahiro@asial.co.jp