Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Flutterアプリのセキュリティ対策を考えてみる

 Flutterアプリのセキュリティ対策を考えてみる

Kakeru Nakabachi

November 10, 2023
Tweet

More Decks by Kakeru Nakabachi

Other Decks in Technology

Transcript

  1. 6

  2. セキュリティ対策ってなに? OWASP Mobile Application Security OWASP MASVSとOWASP MASTGを提供 • OWASP

    MASVS Mobile Application Security Verification Standard モバイルアプリのセキュリティ標準 • OWASP MASTG Mobile Application Security Testing Guide モバイルアプリのセキュリティテストガイド OWASP MAS 25
  3. Flutterがモバイル端末で動くしくみ Dart VMという名前は歴史的なもので、Dart VMはプログラミング⾔語の実⾏環境を提供す るという意味でVM • DartVMの機能 ◦ Runtime System

    ◦ Development Experience components accessible via service protocol * Debugging * Profiling * Hot-reload ◦ Just-in-Time (JIT) and Ahead-of-Time (AOT) compilation pipelines ◦ … https://mrale.ph/dartvm/ Dart VM 33
  4. Flutterがモバイル端末で動くしくみ • Just-in-Time (JIT) → デバッグビルド時 ◦ 実⾏時にDartをネイティブコード(機械語)にコンパイル ◦ コンパイル時間が短い

    ◦ 起動時間が⻑い • Ahead-of-Time (AOT) → リリースビルド時 ◦ 事前にDartをコンパイル ◦ コンパイル時間が⻑い ◦ 起動時間が短い Dart VM 34
  5. Flutterがモバイル端末で動くしくみ 抽象化した流れ まとめ 40 CFE Dart Kernel AST Flutter Engine

    AOT コンパイル JIT コンパイル Dart VM デバッグビルド時は プロセスが永続化 リリースビルド時は TFAによる解析 Flutter Engine内で動く Dart VMのランタイム環境 で実⾏
  6. Flutterアプリ開発者ができる対策 shared_preferences Key-Valueのシンプルなデータを保存 • Android ◦ SharedPreferences • iOS ◦

    UserDefaults https://pub.dev/packages/shared_preferences 46 MASVS - STORAGE MASVS - STORAGE 端末がroot化やjailbreakされていると アクセスして⾒れる👁
  7. Flutterアプリ開発者ができる対策 WebView Cookie 適切なタイミングで削除しないと機密情報を閲覧できる ex) WebView クロスアプリ スクリプティング Androidの場合 •

    cache/WebView/Default/HTTP Cache • app_webview/Default/Local Storage/leveldb/hoge.log にHTTPリクエストやレスポンスの中⾝も残っていて閲覧できる 48 MASVS - STORAGE MASVS - STORAGE
  8. Flutterアプリ開発者ができる対策 MASVS-RESILIENCE: Resilience Against Reverse Engineering and Tampering コードの難読化、アンチデバッグ、アンチタンパリング(改ざん)などの深層防御対策 リバースエンジニアリングや特定のクライアントサイド攻撃に対するアプリの耐性を⾼める

    ために重要である アプリに何重ものセキュリティ制御を加えることで、攻撃者がリバースエンジニアリングを して、そこから貴重な知的財産や機密データを抽出することをより困難にする 69 MASVS - RESILIENCE MASVS - RESILIENCE
  9. Flutterがモバイル端末で動くしくみ 抽象化した流れ まとめ 77 CFE Dart Kernel AST Flutter Engine

    AOT コンパイル JIT コンパイル Dart VM デバッグビルド時は プロセスが永続化 リリースビルド時は TFAによる解析 Flutter Engine内で動く Dart VMのランタイム環境 で実⾏
  10. 参考 • https://docs.flutter.dev/security • https://github.com/flutter/packages/security • https://mas.owasp.org/MASVS/ • https://swarm.ptsecurity.com/fork-bomb-for-flutter/ •

    https://research.miidas.jp/2020/03/frida-%E5%85%A5%E9%96%80/ • https://zenn.dev/tsuruo/articles/48909d22d49ffe • https://mrale.ph/dartvm/ • https://dart.dev/overview#platform • https://www.appsealing.com/flutter-security/ 101
  11. 参考 • https://kuwabaray.hatenablog.com/entry/2022/08/22/195240 • https://medium.com/flutter-community/securing-your-flutter-applications-77c2bf 3ff25e • https://note.com/joyous_yarrow436/n/n15833203846c • https://medium.com/@rondalal54/reverse-engineering-flutter-apps-5d620bb105c0

    • https://medium.com/@ostorlab/flutter-reverse-engineering-and-security-analysis- 41433f5671f3 • https://cryptax.medium.com/reversing-an-android-sample-which-uses-flutter-23c 3ff04b847 • https://qiita.com/tetsukay/items/ad6cf55c740a57050cd3 102
  12. 103