web-dev-qa-db-fra.com

Empêcher les utilisateurs de contourner les mesures de détection racine / jailbreak

Un pentest a été fait sur notre application mobile (version Android et iOS) et nous avons reçu des commentaires indiquant que la détection de jailbreak/racine était inefficace car elle était relativement facile à inverser l'ingénieur de l'application et modifie la valeur de retour de la méthode qui vérifie si le périphérique est enraciné/jailbreaké.

Devrions-nous appliquer l'obfuscation de code à nos applications indigènes? Quel est le plan d'action ici?

Avantages:
- Le code propriétaire restera plus sûr du vol
[

Les inconvénients:
- Dédiez le temps de mettre en œuvre des méthodes d'obfusnation
[.____] - risque de casser l'application

Peut-être que dans le cas d'iOS, nous pourrions "manuellement" obscurcir la détection de jailbreak de la détection du code pour que cela ait l'air plus générique/ressemble à autre chose, alors l'attaquant ne sait pas ce qu'il est et ne peut donc pas modifier le code depuis un Le périphérique jailbreaké est nécessaire pour le faire. Mais cela nous laisserait toujours avec le Android problème.

4
Victor

Remarque rapide: Dernières versions de Android (ou une venue bientôt?) Demandez maintenant à Jailbreak Protection intégrée, et vous pouvez spécifier que vous ne souhaitez pas que votre application soit installée sur des appareils cassés en prison .

C'est un peu en dehors de mon domaine d'expertise immédiat, mais je pense que j'ai une bonne réponse pour vous de toute façon. Comme toute autre chose, tout est sur l'analyse des coûts/avantages et malheureusement seulement vous peut faire cela. Nous pouvons courir à travers ce vrai rapide, mais pense que je ne vous demande pas réellement de répondre à ces questions ici. Vous êtes le bienvenu, mais j'essaie simplement de vous guider à travers les types de questions que je me demanderais de répondre à votre question.

  1. Vous essayez de détecter le jailbreaking pour une raison. Pourquoi? Quelle perte cherchez-vous à empêcher d'arrêter votre application de courir sur des appareils jailbroken? Perdez-vous des revenus d'un seul client? Ou évitez-vous potentiellement des documents confidentiels ou des informations protégées?
  2. Quel pourcentage de vos utilisateurs vous attendez-vous à avoir la capacité technique et la motivation à l'ingénieur inverseur de votre application afin de pouvoir vaincre votre défaite de jailbreaking et exécuter votre application sur un appareil jailbreaké?

Pour donner deux exemples extrêmes: si votre application est un jeu et que la perte potentielle de votre entreprise est la vente de devises et la vente de devises en jeu car la personne qui a inverse les ingénieurs de votre application peut tout obtenir gratuitement, cela ne vaut probablement pas plus de choses que 5 minutes pour sécuriser à votre fin. La raison en est que peu de gens ont le savoir-faire technique pour accomplir ces choses et la perte-personne est si petite, même le temps que vous avez pris pour écrire cette question vous coûte déjà plus que la perte potentielle.

D'autre part, si votre application est un lecteur de documents pour les documents classés comme le plus haut niveau de secret par la NSA, et les gouvernements étrangers tenteront de lui casser de manière à voler nos secrets les plus précieux (pas que le =NSA a tout secrets plus), puis le code Obfuscation n'est pas assez sécurisé.

La réponse dépend de votre propre équilibre des coûts/avantages. Votre risque est probablement au milieu de ces deux cas extrêmes. En fin de compte, je pense que vous seul pouvez répondre à votre question.

Time pour une évaluation des risques

Je pense qu'au moment où vous arrivez à "Devrions-nous obscorer notre code pour empêcher les concurrents de renverser l'ingénierie de notre logiciel?" Vous avez passé le point d'avoir besoin d'un test de pénétration. Au lieu de cela, ce dont vous avez besoin est une évaluation des risques. Je pense que c'est maintenant une question commerciale, pas une question de sécurité, car vous entrez maintenant sur le territoire juridique. Les concurrents essaient de prendre une partie de vos systèmes sont un type de problème différent. Prendre quelques étapes sur le côté technique pour décourager ce comportement est probablement raisonnable, mais vous pourriez finalement être mieux servi avec une certaine détection d'intrusion et un bon ensemble d'avocats. On dirait que cet effort peut oublier le côté de la sécurité: certaines mesures de sécurité ne mènent légitimement pas l'effort et toutes les étapes de sécurité doivent être un poids contre leurs coûts pour l'entreprise. Votre entreprise doit décider où cet équilibre entre sécurité et coût de la maintenance est dans votre cas particulier.

3
Conor Mancone

Certaines des méthodes de ce projet - https://github.com/scottyab/rootbeer - sont suffisamment avancées pour la plupart des besoins. Cependant, R2Frida et de nombreuses autres méthodes d'inversion trouveront probablement un moyen de trouver même ces mécanismes avancés de détection de racines.

Idéalement, vous recherchez une anti-enracinement et anti-accrochable http://d3adend.org/blog/?p=589

De plus, vous êtes incorrect que la masquage du code empêchera les inverseurs de trouver les chemins de code anti-rootkit. Ils sont relativement évidents. Deuxièmement, vous êtes également incorrect sur la nécessité d'un appareil jailbreaké de détecter des mécanismes anti-jailbreak. Il y a eu de nombreux postes sur ce forum et d'autres qui démontrent que la rééquilibrage d'une application avec des cales de bibliothèque à un périphérique iOS emprisonné permet des méthodes de détection complètes anti-jailbreak. Il y a même quelques applications dans le fichier officiel Apple App Store, telle que Sysseecinfo , qui fournit également une détection de jailbreak et une découverte de la bibliothèque-shim.

Tirer parti d'une plate-forme sécurisée-mobile et des bases permettront de réussir à mi-parcours et à long terme supérieur à la jailbreak et à la détection des racines. L'un des meilleurs moyens d'assurer un périphérique IOS reste sécurisé est de ne rien installer. L'un des meilleurs moyens d'assurer un fichier Android Le périphérique reste sécurisé est de démarrer avec une plate-forme de base telle que Copperhead OS et n'installe également rien. Si vous pouvez simplement consulter chaque application étant installée Pour le périphérique, peut-être peut-être des applications peut être utilisée à partir d'une perspective sécurisée. De plus, définissez vos appareils pour DFIR Triage et prendre des instantanés situationnels est fortement recommandé pour vérifier la sécurité à long terme de ces plates-formes.

3
atdre