Tous les instantanés vont au paradis

image alt Maintenant, nous utilisons tous des applications bancaires. Il est pratique, rapide et, à notre avis, sûr. Les banques ont même entré des codes PIN supplémentaires afin que même si vous perdez votre téléphone ou s'il tombe entre les mains d'un étranger, vos fonds et vos données confidentielles soient protégés. Et c'est tellement cool! Les banques se soucient de notre sécurité!

Mais, malheureusement, si vous ouvrez la même application bancaire dans le gestionnaire de tâches, vous verrez tout le contenu de son écran (par exemple, les informations de compte, la carte bancaire, le chat, dans lequel vous avez discuté de quelque chose avec un employé de banque). Vous pouvez le vérifier sur vos applications bancaires. J'ai étudié tous les plus célèbres - et tous ne cachent pas d'informations confidentielles lorsque vous êtes en arrière-plan.

Par exemple, j'ai craqué des boîtes abstraites, sur des pages abstraites. Et maintenant, je vais immédiatement vous poser une question: allez-vous transférer de l'argent à votre maman / petite amie / chien, vous êtes déjà sur la page de transfert et avez quitté l'application pour copier le code de sms (si vous avez refusé l'accès à l'application bancaire dans un accès de paranoïa), ou voir lequel Toute information. Mais quand vous décidez à nouveau de revenir à votre application bancaire, quel écran choisissez-vous?

Comme nous le voyons, avant que vous soyez deux écrans absolument identiques et pressé, vous ne le remarquerez peut-être pas. Vous cliquez sur la dernière application, allez-y, entrez les données et le tour est joué, votre argent a été transféré. Où ont-ils été transférés? À qui?

Et la question n'est pas seulement dans cette banque abstraite, j'ai regardé plusieurs des banques les plus populaires et elles souffrent toutes d'un tel problème.

image alt

Fait intéressant, du côté iOS, le contenu de l'écran dans le gestionnaire de tâches est masqué.

image alt

Et il y a une explication à cela. Mais plus à ce sujet plus tard, nous parlons maintenant d'Android. Alors, pourquoi cacher le contenu de l'écran si l'utilisateur a quitté l'application?

Voyons d'abord comment fonctionne le gestionnaire d'écran (écran Récent)


image alt

Sur cet écran, nous voyons une liste de nos applications précédemment ouvertes. On nous montre même l'endroit où nous avons arrêté notre interaction avec une application spécifique. Mais le fait est que nous ne voyons pas l'application elle-même, nous voyons un instantané qui est fait avant de quitter l'application.

Ce qui se passe vraiment (brièvement):


  • L'application est passée en arrière-plan
  • Le gestionnaire de fenêtres met un instantané d'application dans GraphicBuffer
  • GraphicBuffer est envoyé à SystemUI via Binder pour prévisualiser l'application.

Donc, ce que nous voyons ici n'est pas le contenu de l'application, mais seulement un instantané pris au dernier moment avant la transition d'une application spécifique en arrière-plan.

Mais, vous l'aurez deviné, ce n'est pas si simple, vous pouvez accéder à ces instantanés et, par exemple, montrer également à l'utilisateur dans l'écran Récents une autre application sous le couvert des services bancaires, ce que les chevaux de Troie utilisent. L'utilisateur revient sur l'application bancaire, saisit tous les détails demandés, l'argent est transféré, mais pas du tout où nous le souhaiterions.

Ou vous pouvez simplement envoyer ces photos, par exemple, en Chine, où les Chinois durs accumulent des informations sur tout et tout le monde. Les méthodes d'utilisation des captures d'écran obtenues peuvent être réfléchies à l'infini.

Pour la plupart, bien sûr, les applications bancaires ou les applications qui contiennent des informations critiques qui ne sont pas destinées aux regards indiscrets doivent prendre soin de cacher les données confidentielles.

Il est impossible de créer des instantanés ou de les masquer uniquement dans une application spécifique. Et la documentation indique que seuls les fabricants de périphériques peuvent modifier la classe responsable du mécanisme de réception et de stockage des instantanés.

Comment empêcher le système de faire des instantanés


Il y a plusieurs manières, cependant, malheureusement, elles ne sont pas toutes assez optimistes. Si vous souhaitez utiliser l'un d'eux dans votre application, assurez-vous que tout fonctionnera correctement sur tous les appareils.

Vous pouvez définir le paramètre d'activité:

android:excludeFromRecents = "true" 

Cependant, cette méthode violera la logique d'interaction de l'utilisateur avec l'application, car l'application n'apparaîtra pas du tout dans l'écran Récents.

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

Cette méthode ne viole pas la logique d'interaction, mais le système commence à traiter le contenu de l'écran de l'application comme protégé, ne permettant pas de créer des instantanés. Voici un exemple de ce à quoi cela ressemblera dans l'écran Récents.

De plus, il existe un moyen de suivre onPause (). Mais ici, vous devez constamment garder la vue préparée dans l'état View.GONE, de sorte que lorsque l'application passe en arrière-plan, vous pouvez rendre View.VISIBLE. Mais cela ne fonctionnera pas non plus de manière très fiable, car, malheureusement, il est impossible de contrôler le moment de la suppression de l'instantané.

Soit dit en passant, le panier pourrait, eh bien, qui en douterait :) Sur l'écran est un chat secret, dans ce cas, FLAG_SECURE est utilisé.

image alt

Alors pourquoi les banques cachent-elles le contenu d'une application sur la plate-forme iOS, qui est donc considérée comme plus sûre (ce qui est trompeur), et la laisse-t-elle telle qu'elle est pour la plate-forme Android? Très probablement, ils n'aiment tout simplement pas l'apparence de l'application dans l'écran Récents. Ce n'est qu'une toile blanche. Dans iOS, l'implémentation vous permet de faire magnifiquement. En conséquence, nous obtenons des dommages de sécurité pour des raisons de beauté. Peut-être que vous ne vous en souciez pas, tant que votre argent est là où vous le souhaitez et que la confidentialité des données est inébranlable. Mais êtes-vous prêt à payer? ..

Donc, afin de ne pas terminer sur une note aussi pessimiste, nous poserons la question: peut-il être aussi bien fait pour Android? En fait, j'ai déjà trouvé un moyen, mais vous devez d'abord le tester.

Si vous êtes intéressé par ce sujet, je peux décrire comment tout cela fonctionne de l'intérieur. Comment obtenir des instantanés, comment fonctionne le système Android, sur les vulnérabilités des applications mobiles.

J'ai décidé de me mettre au défi et d'écrire régulièrement quelque chose d'utile. Je publierai des croquis dans mon canal @paradisecurity dans des télégrammes, puis je les collecterai dans des messages complets. Au revoir, au revoir.

Source: https://habr.com/ru/post/fr431024/


All Articles