0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Root / Jailbreak 検知(モバイルセキュリティ)

0
Posted at

はじめに

モバイルアプリのセキュリティ対策では、Root(Android)Jailbreak(iOS) の検知は重要な防御手段の一つです。
Root / Jailbreak された端末では OS の制限が解除されるため、攻撃者がアプリの内部動作を簡単に解析・改ざんできるようになります。

Flutter アプリでも同様に、Root / Jailbreak 検知を実装することでセキュリティリスクを軽減できます。


1. Root / Jailbreak とは

Android の Root

Android では Root を取得すると Linux の root 権限が得られます。

可能になること:

  • システムファイルの変更
  • アプリの sandbox 回避
  • メモリ改ざん
  • アプリの Hook

代表的な Root ツール:

  • Magisk
  • SuperSU

iOS の Jailbreak

iOS では Jailbreak により Apple の制限が解除されます。

可能になること:

  • App sandbox bypass
  • 非公式アプリのインストール
  • システム API へのアクセス
  • アプリの Hook

代表ツール:

  • Checkra1n
  • unc0ver

2. Root / Jailbreak 端末のリスク

Root / Jailbreak 端末では以下の攻撃が可能になります。

攻撃 内容
Hook 攻撃 アプリ関数の改ざん
MITM 攻撃 TLS 検証バイパス
ローカルデータ取得 Token / DB
メモリ改ざん 認証バイパス

例えば:

Hook login()
↓
return true
↓
認証バイパス

そのため、多くの金融アプリや決済アプリは Root / Jailbreak を検知します。


3. Android Root 検知方法

Android ではいくつかの典型的な検知方法があります。


① su バイナリの存在

Root 端末には su コマンドが存在することが多いです。

例:

/system/bin/su
/system/xbin/su

Flutter では Platform Channel を使ってチェックできます。


② Root アプリの検出

Root 管理アプリ:

  • Magisk
  • SuperSU

パッケージを確認することで検知できます。


③ 書き込み可能な system

通常 Android の /system は read-only です。

Root 端末では書き込み可能になる場合があります。


④ 危険コマンドの存在

Root 端末では以下のツールが存在する場合があります。

busybox
magisk
su

4.iOS Jailbreak 検知方法

iOS では以下の方法が使われます。


① Jailbreak ファイルの存在

典型的なパス:

/Applications/Cydia.app
/bin/bash
/usr/sbin/sshd

② Sandbox 破壊の確認

通常 iOS アプリは sandbox 内でのみファイル操作できます。

Jailbreak 端末では外部ディレクトリに書き込み可能になります。


③ URL Scheme 検査

Jailbreak アプリ:

cydia://

この URL が開ける場合、Jailbreak の可能性があります。


5. Flutter での Root / Jailbreak 検知

Flutter では専用のライブラリを使用できます。

代表例:

  • freerasp
  • jailbreak_detection
  • root_checker_plus

アプリは

  • 起動停止
  • 機能制限

などの対応を行います。

6. 軽量 plugin + 独自ポリシー

RootBeer は Android root 判定ライブラリとして広く知られており、iOS 側では IOSSecuritySuite が jailbreak 判定の代表格です。IOSSecuritySuite は amIJailbroken() や failed checks の取得を提供しています。

この場合は Flutter では wrapper を自作して、

  • Android: RootBeer
  • iOS: IOSSecuritySuite

を Platform Channel / FFI / plugin 経由でまとめる設計が堅いです。

向いているケース

  • 社内アプリ
  • 小規模プロダクト
  • まず最低限だけ入れたい場合

注意点

iOS 側では CanOpenURL() を使う系の判定があり、LSApplicationQueriesSchemescydia などの scheme を追加する必要がある構成があります。

IOSSecuritySuite
Android-rootbeer


7. Root 検知の限界

重要なポイントですが、

Root 検知は完全な防御ではありません。

理由:

攻撃者は

  • Frida
  • Magisk Hide
  • Root Cloaking

などで検知を回避できます。

例:

Hook root_check()
↓
return false

つまり

Root 検知は防御層の一つにすぎません。


8. 推奨セキュリティ対策

Root 検知と合わせて以下を実装することが重要です。

① Certificate Pinning

MITM 防止


② Secure Storage

機密データ保護


③ コード難読化

flutter build apk --obfuscate

④ サーバー側検証

クライアントを信用しない。


まとめ

Root / Jailbreak 端末ではアプリのセキュリティが大きく低下します。

主な検知方法:

方法 内容
su バイナリ Root コマンド
Root アプリ Magisk
システム権限 書き込み可能
Jailbreak ファイル Cydia

しかし、Root 検知は完全ではないため、

  • TLS Pinning
  • Secure Storage
  • Server-side validation

などと組み合わせることが重要です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?