すべてのスナップショットは天国に行く

画像の代替 現在、私たちはすべて銀行のアプリケーションを使用しています。 これは便利で高速で、私たちの意見では安全です。 銀行が追加のPINコードを入力したため、電話を紛失したり、部外者の手に渡ったとしても、資金と機密データが保護されます。 そして、それはとてもクールです! 銀行は私たちの安全を大切にしています!



しかし、残念ながら、タスクマネージャーで同じ銀行アプリケーションを開くと、その画面のすべてのコンテンツが表示されます(たとえば、口座、銀行カード、銀行員と何かを話し合ったチャットに関する情報)。 これは銀行のアプリケーションで確認できます。 私はすべての最も有名なものを研究しました-そして、それらのすべてはあなたがバックグラウンドにいるときに機密情報を隠しません。



たとえば、抽象的なページで抽象的な缶をきしみました。 すぐに質問します。お母さん、ガールフレンド、犬に送金しますか?送金ページに移動して、SMSからコードをコピーするためにアプリケーションを残します(偏執狂で銀行アプリケーションへのアクセスを拒否した場合)。あらゆる情報。 しかし、再び銀行のアプリケーションに戻ることにしたとき、どの画面を選択しますか?



ご覧のとおり、まったく同じ2つの画面になる前に、急いでこれに気付かないかもしれません。 あなたは最後のアプリケーションをクリックし、そこに行き、データと出来事を入力してください、あなたのお金は送金されました。 彼らはどこに移されましたか? 誰に?



問題はその抽象的な銀行だけでなく、最も人気のある銀行のいくつかを調べましたが、それらはすべてこのような問題に苦しんでいます。



画像の代替






興味深いことに、iOS側では、タスクマネージャーの画面の内容が非表示になっています。



画像の代替






これには説明があります。 しかし、その詳細については、Androidについて説明しています。 では、ユーザーがアプリケーションを離れた場合、なぜ画面のコンテンツを非表示にしますか?



最初に、スクリーンマネージャ(最新の画面)の仕組みを理解しましょう。



画像の代替






この画面には、以前に開いたアプリケーションのリストが表示されます。 特定のアプリケーションとの対話を停止した場所も表示されます。 しかし、実際には、アプリケーション自体は表示されず、アプリケーションを終了する前に行われたスナップショットが表示されます。



実際に何が起こるか(簡単に):





そのため、ここで表示されるのはアプリケーションのコンテンツではなく、特定のアプリケーションがバックグラウンドに移行する直前の瞬間に取得されたスナップショットのみです。



しかし、すべてがそれほど単純ではないことを推測しました。これらのスナップショットにアクセスし、たとえば、最近の画面でユーザーに銀行取引を装った別のアプリケーションを表示することもできます。これはトロイの木馬が使用するものです。 ユーザーは銀行のアプリケーションに戻り、要求されたすべての詳細を入力し、お金は送金されますが、希望する場所にはまったく送られません。



または、これらの写真を単純に中国に送信することもできます。中国では、過酷な中国人があらゆるものに関する情報を蓄積しています。 取得したスクリーンショットを使用する方法は無限に考え出すことができます。



もちろん、ほとんどの場合、銀行のアプリケーションや、pr索好きな目を意図していない重要な情報を含むアプリケーションは、機密データを隠す必要があります。



スナップショットの作成を禁止したり、スナップショットを作成したりすることは、特定のアプリケーション内でのみ可能です。 また、 ドキュメントには、デバイスメーカーのみがスナップショットの受信と保存のメカニズムを担当するクラスを変更できると書かれています。



システムがスナップショットを作成するのを防ぐ方法



いくつかの方法がありますが、残念ながら、それらのすべてが非常に楽観的ではありません。 アプリケーションでそれらのいずれかを使用する場合は、すべてがすべてのデバイスで正常に機能することを確認してください。



アクティビティのパラメーターを設定できます。



android:excludeFromRecents = "true"
      
      





ただし、この方法は、アプリケーションが[最近]画面にまったく表示されないため、ユーザーとアプリケーションとの対話のロジックに違反します。



 if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); } setContentView()
      
      





このメソッドは相互作用ロジックに違反しませんが、システムはアプリケーション画面のコンテンツを保護対象として扱い始め、スナップショットの作成を許可しません。 以下は、これが最近の画面でどのように見えるかの例です。



さらに、onPause()を追跡する方法があります。 しかし、ここでは、アプリケーションがバックグラウンドになったときにView.VISIBLEを作成できるように、準備されたビューを常にView.GONE状態に維持する必要があります。 しかし、残念ながら、スナップショットの削除時間を制御することは不可能であるため、これは非常に確実に機能しません。



ちなみに、カートは、だれがそれを疑うかもしれません:)画面上に秘密のチャットがあります。この場合、FLAG_SECUREが使用されます。



画像の代替






では、なぜ銀行はiOSプラットフォーム上のアプリケーションのコンテンツを隠し、それがより安全(誤解を招く)であると見なし、Androidプラットフォーム用のままにしておくのでしょうか? 最も可能性が高いのは、最近の画面でアプリケーションがどのように見えるかが気に入らないことです。 それはただの白いキャンバスです。 iOSでは、実装により美しく行うことができます。 その結果、美のためにセキュリティ上のダメージを受けます。 お金が欲しいところにあり、データの機密性が揺るぎない限り、おそらくあなたは気にしません。 しかし、あなたは支払う準備ができていますか?..



したがって、このような悲観的なメモで終わらないように、質問を提起します。Androidでも同様にそれを行うことができますか? 実際、私はすでに方法を思いつきましたが、最初にそれをテストする必要があります。



このトピックに興味がある場合は、内部からどのように機能するかを説明できます。 モバイルアプリケーションの脆弱性に関するスナップショット、Androidシステムの動作方法を取得するにはどうすればよいですか。



私は自分自身に挑戦し、役に立つ何かを定期的に書くことにしました。 @paradisecurityチャンネルでスケッチを電報で公開し、完全な投稿でそれらを収集します。 バイバイ



All Articles