web-dev-qa-db-ja.com

ユーザーがroot / jailbreak検出手段をバイパスするのを防ぐ

私たちのモバイルアプリ(AndroidおよびiOSバージョン)にペンテストが行​​われ、アプリケーションをリバースエンジニアリングし、デバイスがであるかどうかを確認するメソッドの戻り値を変更することが比較的簡単だったため、ジェイルブレイク/ルートの検出は効果がないというフィードバックを受け取りました根ざした/脱獄。

ネイティブアプリにコード難読化を適用する必要がありますか?ここでの行動方針は何ですか?

長所:
-独自のコードは盗難からより安全なままになります
-これによりセキュリティ層が追加されるため、ほとんどの攻撃者は防御し、悪意のある方法(ジェイルブレイク/ルート検出の変更以外)でアプリを変更できなくなります。

短所:
-難読化メソッドを実装する時間を費やす
-アプリを壊すリスク

おそらくiOSの場合、コードのジェイルブレイク検出を「手動で」難読化して、コードをより一般的または他のように見せることができるため、攻撃者はそれが何であるかを知らないため、コードを変更できません。これを行うには、ジェイルブレイクされたデバイスが必要です。しかし、それでもAndroid問題が残ります。

4
Victor

クイックノート:Androidの最新バージョン(または近日リリース予定?)には脱獄防止機能が組み込まれているため、脱獄したデバイスにアプリをインストールしないように指定できます。

これは私の専門分野から少し外れていますが、とにかくあなたに良い答えがあると思います。他と同じように、それはすべてコスト/利益分析に関するものであり、残念ながらyoだけがそれを行うことができます。簡単に説明できますが、実際にここでこれらの質問に答えるように依頼しているわけではありません。よろしくお願いしますが、私はあなたの質問に答えるように私に尋ねるような種類の質問を案内するつもりです。

  1. 何らかの理由で脱獄を検出しようとしています。どうして?ジェイルブレイクしたデバイスでアプリが実行されないようにして、どのような損失を防いでいますか?単一の顧客からの収益を失っていますか?それとも、機密文書や保護された情報を漏洩する可能性がありますか?
  2. ユーザーの何パーセントが、ジェイルブレイク検出を無効にしてジェイルブレイクしたデバイスでアプリを実行できるように、アプリをリバースエンジニアリングする技術的能力と動機があると思いますか?

2つの極端な例を挙げます。アプリがゲームであり、会社の潜在的な損失が広告収入またはゲーム内通貨の売上である場合、アプリをリバースエンジニアリングする人はすべてを無料で入手できるため、これはおそらくそれ以上の価値はありません。あなたの終わりに確保するのに5分以上。その理由は、これらのことを達成するための技術的ノウハウを持っている人が非常に少なく、一人当たりの損失が非常に少ないためです。

一方、アプリがNSAによって最高レベルの機密として分類されたドキュメントのドキュメントリーダーであり、外国政府がアプリに侵入して、最も重要な秘密を盗もうとしている場合(NSAには秘密がもうありません)。コードの難読化は十分に安全ではありません。

答えは、コストと利益のバランスによって異なります。あなたのリスクは、おそらくこれら2つの極端なケースの真ん中にあります。結局のところ、私はあなただけがあなたの質問に答えることができると思います。

リスク評価の時間

「コードを難読化して、競合他社がソフトウェアをリバースエンジニアリングできないようにする必要があるのか​​」にたどり着くまでに、あなたは侵入テストを必要とするポイントを超えています。代わりに、必要なのはリスク評価です。法的領域に入っているので、これはセキュリティの問題ではなくビジネスの問題だと思います。システムに参加しようとする競合他社は、別の種類の問題です。そのような振る舞いを阻止するために技術的な側面でいくつかの措置を講じることはおそらく合理的ですが、最終的には、いくつかの侵入検知と優れた弁護士のセットを提供するほうがよいでしょう。この取り組みはセキュリティの裏側を忘れているように思われます。一部のセキュリティ対策は正当な努力に値しないものであり、すべてのセキュリティ手順はビジネスへのコストに対して重要でなければなりません。セキュリティとメンテナンスコストのバランスがどこにあるかをビジネスで判断する必要があります。

3
Conor Mancone

このプロジェクトのいくつかのメソッド- https://github.com/scottyab/rootbeer -は、ほとんどのニーズに十分対応できます。ただし、r2fridaおよび他の多くの逆転メソッドは、これらの高度なルート検出メカニズムでさえ回避策を見つける可能性があります。

理想的には、あなたはアンチルートとアンチフックの両方を探しています- http://d3adend.org/blog/?p=589

また、コードを非表示にすると、リバーサーがルートキット対策コードのパスを見つけられなくなることも間違いです。それらは比較的明白です。第二に、脱獄防止メカニズムを検出するために脱獄されたデバイスを要求することについても不正確です。ライブラリシムを使用してアプリをjailされたiOSデバイスに再パッケージ化すると、完全な脱獄防止の検出方法が可能になることを実証する多数の投稿 このフォーラム およびその他の記事があります。公式のApple App Store、たとえば syssecinfo のような)アプリもいくつかあり、ジェイルブレイクの検出とライブラリシムの検出も提供しています。

安全なモバイルプラットフォームと基本を活用することで、脱獄やルート検出よりも優れた中長期的な成功が実現します。 iOSデバイスを安全に保つための最良の方法の1つは、何もインストールしないことです。 Androidデバイスの安全性を維持するための最良の方法の1つは、Copperhead OSなどのベースプラットフォームから開始し、それに何もインストールしないことです。インストールされているすべてのアプリをコードレビューできる場合これらのプラットフォームの長期的なセキュリティを確認するには、デバイスにDFIR triage を設定して状況に応じたスナップショットを撮ることを強くお勧めします。

3
atdre