Comment protéger app IPA des hacks si la rétro-ingénierie est possible
récemment, nous avons développé et publié une application bancaire mobile sur l'app store, pour une grande organisation bancaire. La banque a embauché une société de sécurité pour effectuer un piratage éthique sur l'application pour voir si elle, en tout cas compromis données confidentielles.
nous avons récemment reçu le rapport de piratage de la société, qui en dépit de dire qu'aucun problème sérieux de sécurité sont présents, contient une liste de tous les dossiers de classe, les noms de méthode et le code d'assemblage du projet.
Maintenant le client insiste pour que nous réparions ces trous de boucle de sécurité et de republier l'application. Cependant, nous n'avons aucune idée de comment ils ont réussi à obtenir tous ces détails de L'IPA de la demande. J'ai cherché ceci plus de AINSI et j'ai trouvé un post particulier mentionnant lien, qui stipule que vous ne pouvez pas enregistrer votre application d'être piraté.
Aidez-moi à corriger ces vulnérabilités de sécurité , ou si ce n'est pas possible, à convaincre le client.
Modifier: Récemment est venu à travers page. On dirait Qu'EnsureIT D'Arxan peut empêcher les applications d'ingénierie inverse. Quelqu'un d'expérimenté avec cela?
2 réponses
Il y a toujours un risque. Même si vous n'introduisez pas vous-même les vulnérabilités, la plate-forme peut permettre des exploits qui, en fin de compte, peuvent offrir un point d'entrée pour un attaquant malveillant.
quant à votre question: Il est pas il est raisonnable de supposer qu'une URL codée en dur, même si elle est brouillée au-delà de la croyance, ne peut pas être extraite de votre produit. Toujours concevez vos applications de manière à ce que la sécurité des données utilisateur soit garantie (dans la mesure du possible) même si les ressources sont intégrées, elles seront compromises. Si la connaissance de cette URL constitue à elle seule une menace pour la sécurité, alors toute votre approche et L'API de vos clients sont intrinsèquement peu sûres. Rappelez-vous que de telles informations pourraient éventuellement être captées par une attaque d'homme-dans-le-milieu (et d'autres modes d'attaque) aussi bien.
Évitez la sécurité par l'obscurité. Stocker des données sensibles uniquement sur le disque s'il est nécessaire. En règle générale, ne pas autoriser le stockage PIN / TAN.
quelques réflexions qui peuvent (ou ne peuvent pas) convaincre votre client que votre application est aussi sûr qu'il peut être:
- aussi longtemps que l'application tourne sur un appareil non jailbroken, il est peu probable qu'un attaquant, même avec la connaissance de vos applications internes est en mesure d'accéder à toutes les données de l'utilisateur, parce que l'iPhone normalement n'offre pas d'occasions de interférer avec votre application
- si l'attaquant est capable d'accéder à vos données d'utilisateurs, et à condition que vous ayez protégé ces données avec tous les moyens disponibles sous iOS (- >keychain - > crypto puce.>- ..), alors il n'est pas de votre faute. Cela signifie que le dispositif est soit jailbroken ou il ya des vulnérabilités du système lui-même qui ont été exploités, vous ne pouvez rien faire à propos de l'une ou l'autre possibilité.
- Il est impossible d'empêcher l'ingénierie inverse de votre application. Même si vous aviez mis plus d'efforts dans l'obscurcissement, un attaquant avec une forte motivation serait encore en mesure d'obtenir ce qu'il veut. Votre client doit s'y habituer, c'est un fait.
- Autres les plates-formes souffrent de vulnérabilités similaires, mais sur l'iPhone au moins vous avez un environnement un peu fermé et un risque réduit d'être attaqué avec des chevaux de Troie et autres.
- les gouvernements et les entreprises de sécurité sont régulièrement piratés, bien qu'ils devraient maintenant savoir comment se protéger. Cela signifie que la vie est par nature peu sûre, faire face à elle.
j'ai récemment fait des recherches à ce sujet et j'ai trouvé cet article utile, en particulier la partie Citée:
le code d'une application native est stocké sous la forme d'un fichier exécutable binaire, qui est ensuite chiffré; son déchiffrement n'est effectué que lorsque le fichier exécutable est chargé par le processeur dans la mémoire d'accès aléatoire et que tout le processus de déchiffrement se déroule au niveau matériel. C'est pourquoi il est très difficile de créer offline décryptage des outils. La seule façon de déchiffrer les données binaires sont sur un appareil jailbreaké avec quelques outils spéciaux installés.
sécurité dans iOS: protéger .contenu du fichier ipa par Stoyan Stoyanov