0

私は、RAMからの情報へのアクセスに関連する一般的なAndroidデバイスに関するいくつかの小さなセキュリティレポートを書いています。主な条件は、デバイスが最初はルート化されていないことです。

ユースケース:ユーザーがサードパーティのアプリを開き、パスワードフィールドにパスワードを入力します。その後、この実行中のアプリケーションでデバイスが失われます。このアプリケーションのソースコードは、アプリケーションの稼働中にこのパスワード情報がRAMで利用可能であることを示しています。たとえば、publicStringmyPasswordのクラスAllMyAppPasswordsにあります。ここで、このパスワード情報にアクセスするための可能な方法についての質問です(間違っている場合は訂正してください)。

  1. このpwdにアクセスする方法は、メモリをダンプすることです。
  2. メモリダンプの場合、ルート化するデバイスが必要です。
  3. デバイスをルート化するには、ブートローダーのロックを解除する必要があります。
  4. ブートローダーとルートのロック解除操作を実行するには、デバイスを少なくとも1回再起動する必要があります。
  5. デバイスを再起動すると、パスワードに関する情報がRAMから削除されます

結論:デバイスがルート化されていない場合、アプリからRAMメモリにあるパスワードを取得することはできません。それが正しいか?

ユースケースへの更新:ユーザーは新しいデバイスを箱から取り出したばかりであり、ルート化されておらず、キーロガーアプリが含まれていないことを100%確信していると想定しています。したがって、ユーザーはアプリをインストールしてパスワードを入力すると、アプリケーションは実行時にこのパスワードを内部で使用してサーバーに定期的に接続します(パスワードのみのRAM、ディスクに保存されることはありません)。したがって、視覚的には[テキストの編集]フィールドには何も残っていません。パスワードに関する情報は、内部使用のためにアプリケーションメモリにのみあります。もちろん、画面からパスワードテキストを読み取るだけでは不可能です。今、ユーザーは彼の電話を失いました。自分の携帯電話を見つけた人がRAMからこのパスワード情報を取得できることをユーザーが心配する必要がありますか?

4

1 に答える 1

1

この分野の実践的なインサイダーではありませんが、私は確かに平均以上に興味があると主張します。ここに私の考えがあります。ただし、これをまだ知らない可能性があると言っているわけではありません。

  • はい、Linuxはプロセスメモリを他の通常のユーザーから保護します(rootは通常のユーザーではありません)。
  • あなたが説明するシナリオで、電話を見つけた人が単に問題のアプリを前面に表示してすべての機密情報を表示しないのはなぜかわかりません。シナリオでは、デバイスを見つけた人は誰でも正常にロックを解除できると既に想定しているためです。 、およびアプリがまだ実行中であること。
  • ただし、(架空のAllMyAppPasswordsクラスに触発されて)次のような引数を作成しようとしているのではないかと疑っています。 「パスワードセーフ」アプリが起動し、デバイスがルート化されていないことを識別した場合、この事実を変更するには再起動が必要です。 、ルート化されていないデバイスではアプリのメモリにアクセスする方法がないため、復号化された機密情報をRAMに保持するのは安全です。これがあなたの意図した論理的根拠に沿っているのであれば、私はあなたの注意を以下の側面に向けたいと思います。
    • バイトコード難読化ツールを適用した場合でも、APKからコードをリバースエンジニアリングするのは比較的簡単です。これは、アプリのメモリに保持されている機密情報が彼らにとって十分に重要であると誰かが判断した場合に特に当てはまります。これは、アクセスを取得すると、誰もが何を探すべきかを比較的簡単に理解できることを意味します。
    • LinuxとJava仮想マシンの両方にセキュリティホールがあり、Androidデバイスベンダーの更新戦略はこの点で完全に透過的ではありません。言い換えると、電話がルート化されていない場合でも、ルートコンテキストで、またはアプリのユーザーIDを使用してコードを実行する方法が、直接またはバグの組み合わせによって存在する可能性があります。
    • アプリが公開されると、root化された電話の方法が変わる可能性があるため、root化された電話を確実に識別できない場合があります。
    • 暗号化されたデータとキーは、信頼できるサーバー上にのみ存在する必要があります。そうでない場合、ユーザーはアプリのRAMにアクセスする代わりに、アプリからキーを抽出し、Androidデバイス(存在する場合)に保存されている暗号化されたデータにアクセスします。
  • 誰かがインサーキットデバッガーの接続を可能にするAndroidデバイスを持っている場合、すべての賭けは無効になります。これにより、理論的には、ソフトウェアがこれを認識しなくても、ダイレクトメモリアクセスが可能になります。そのようなシナリオの正確な前提条件についてはわかりません。また、個々のメーカーがこの点でどのような予防策を講じているかもわかりません。

私はあなたの元の質問の範囲をいくらか広げました、しかし多分あなたのためにそれに役立つ何かがあるかもしれません。あなたの質問に一言一句固執するときでさえ、私は根付いたデバイスを識別するための信頼できる(完全に疑いのない、現在そして将来の)方法を知らないという事実に加えて、セキュリティホールポイントは本当に痛いと思います。

ハードウェアへの直接アクセスは、目標とするセキュリティレベルの範囲外である可能性がありますが、最近、これについて何かを読んだことを思い出しているようです。

于 2013-03-07T11:45:23.183 に答える