Comment protéger les applications mobiles?

9 746 vues

Publié le

Cette présentation vous présentera les vulnérabilités les plus communes sur les appareils mobiles. Elle détaillera entre autres comment stocker sécuritairement les données de l’application mobile en transport et stockage ainsi que protéger l’application au mieux des attaques externes. Des outils simples vous seront donnés pour détecter ces vulnérabilités.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
9 746
Sur SlideShare
0
Issues des intégrations
0
Intégrations
12
Actions
Partages
0
Téléchargements
16
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Comment protéger les applications mobiles?

  1. 1. Comment protéger les applications mobiles? Marie-Claire Willig
  2. 2. Moi Icon made by Freepik from www.flaticon.com
  3. 3. Table des matières Vulnérabilités communes iOS Android Cas pratiques Checklist
  4. 4. Stockage non sécuritaire de données Fuite de données Mauvaise gestion de la cryptographie Injection côté client Décisions de sécurité avec des entrées non approuvées Manque de protection du binaire
  5. 5. Stockage non sécuritaire des données Obtention de données sensibles dans les fichiers d’application
  6. 6. Stockage non sécuritaire des données .plist
  7. 7. Stockage non sécuritaire des données
  8. 8. Stockage non sécuritaire des données NSUserDefaults
  9. 9. Stockage non sécuritaire des données
  10. 10. Stockage non sécuritaire des données
  11. 11. Stockage non sécuritaire des données
  12. 12. Stockage non sécuritaire des données
  13. 13. Stockage non sécuritaire des données Vol de données par une autre application Énumération des users
  14. 14. Stockage non sécuritaire des données Mitigation: Éviter de stocker des données confidentielles sur l’appareil mobile Si obligatoire, chiffrer ces données Utiliser le KeyChain Utiliser SQLCipher for DB
  15. 15. Stockage non sécuritaire des données Chiffrer les données en utilisant la librairie ’javax.crypto’ (cf. Mauvaise gestion de la cryptographie)
  16. 16. Fuite de données Obtention de données sensibles par l’intermédiaire d’autres applications malicieuses En lien avec l’OS, le framework, l’environnement de compilation
  17. 17. Fuite de données Où spécifiquement? Mise en arrière-plan de l’application
  18. 18. Fuite de données Où spécifiquement? Mise en arrière-plan de l’application
  19. 19. Fuite de données Où spécifiquement? Cache copier/coller http://www.cis.syr.edu/~wedu/Research/paper/clipboard_attack_dimva2014.pdf
  20. 20. Fuite de données Où spécifiquement? Cache copier/coller: manipulation http://www.cis.syr.edu/~wedu/Research/paper/clipboard_attack_dimva2014.pdf
  21. 21. Fuite de données Où spécifiquement? Cache copier/coller: vol de données
  22. 22. Fuite de données
  23. 23. Fuite de données
  24. 24. Fuite de données Où spécifiquement? Cache URL
  25. 25. Fuite de données Où spécifiquement? Cache presse-papiers UITextField *textField = [ [ UITextField alloc ] initWithFrame: frame ]; textField.autocorrectionType = UITextAutocorrectionTypeNo;
  26. 26. Fuite de données Où spécifiquement? Journalisation Stockage des données HTML5 Cookie Données envoyées à des applications tierces
  27. 27. Fuite de données Mitigation Vérifier comment l’OS, framework… gère les données, particulièrement lorsqu’il s’agit de données sensibles
  28. 28. Mauvaise gestion de la cryptographie Déchiffrement des données Mauvaise gestion des clés de chiffrement Clés disponibles à l’attaquant Chiffrement maison Algorithme de chiffrement précaire
  29. 29. Mauvaise gestion de la cryptographie
  30. 30. Mauvaise gestion de la cryptographie
  31. 31. Mauvaise gestion de la cryptographie Mitigation Ne pas stocker des clés sur l’application binaire Utiliser des algorithmes approuvés et sécuritaires http://www.nist.gov/customcf/get_pdf.cfm?pub_id=910342 DES MD5 AES 256 SHA512
  32. 32. Injection côté client Données non validées envoyées afin de voler, modifier des données de l’application Injection SQL Injection de malware, vol de données….
  33. 33. Injection côté client Bypass du login
  34. 34. Injection côté client Attaque XSS: vol de données
  35. 35. Injection côté client Attaque XSS: vol de données
  36. 36. Injection côté client Attaque via script entre application: injection de code malicieux Injection du binaire pendant l’exécution (cf. Manque de protection du binaire)
  37. 37. Injection côté client Mitigation Injection JavaScript (XSS…): Injection SQL: utilisation de requête paramétrée (prepared statement) mWebView.getSettings().setJavaScriptEnabled(false); Valider toutes les entrées utilisateurs pour les appels UIWebView
  38. 38. Injection côté client Mitigation mWebView.getSettings().setAllowFileAccess(false); Valider toutes les entrées utilisateurs pour les appels NSFileManager Inclusion de fichiers locaux (/etc/passwd) Injection XML: Utiliser libXML2
  39. 39. Décisions de sécurité avec des entrées non approuvées Lecture_donnees Ecriture_donnees IPC (Inter Process Communication)
  40. 40. Décisions de sécurité avec des entrées non approuvées (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url URLScheme App mailto: maps: sms: fb: skype:
  41. 41. Décisions de sécurité avec des entrées non approuvées En 2010, il était possible de forcer des appels arbitraires skype://5140001337?call handleOpenURL est obsolète à partir de iOS 4.2
  42. 42. Décisions de sécurité avec des entrées non approuvées IPC effectuée via l’interface Binder et les Intent
  43. 43. Décisions de sécurité avec des entrées non approuvées
  44. 44. Décisions de sécurité avec des entrées non approuvées
  45. 45. Décisions de sécurité avec des entrées non approuvées
  46. 46. Décisions de sécurité avec des entrées non approuvées
  47. 47. Décisions de sécurité avec des entrées non approuvées Hijack d’activités: implicit intent
  48. 48. Décisions de sécurité avec des entrées non approuvées Mitigation Utiliser openURL:sourceApplication:annotation Ne pas utiliser handleOpenURL Valider les applications via une liste blanche Ne pas utiliser iOS Pasteboard car susceptible d’être lue par les autres applications
  49. 49. Décisions de sécurité avec des entrées non approuvées Mitigation android:exported=false dans le Manifest Ne pas utiliser des broadcast intent si données sensibles
  50. 50. Manque de protection du binaire Problématique Rétro-ingénierie de l’application Modification de l’application pour utilisation de fonctionnalités cachées Vol de données Vol de propriété intellectuelle
  51. 51. Manque de protection du binaire Rétro-ingénierie: dex2jar
  52. 52. Manque de protection du binaire Rétro-ingénierie: IDA
  53. 53. Manque de protection du binaire Analyse en temps réel: ADB
  54. 54. Manque de protection du binaire Analyse en temps réel: GDB Changer le code durant l’exécution de l’application Accéder à des fonctions cachées Escalade de privilèges
  55. 55. Manque de protection du binaire Mitigation Contrôle pour le checksum de l’application Contrôle de détection de jailbreak Contrôle pour le ‘pinning’ du certificat Contrôle pour la détection du mode debug
  56. 56. Manque de protection du binaire Mitigation Intégrer des mécanismes d’intégrité de l’application Protéger le code pour éviter le vol de propriété intellectuelle: obfuscation par exemple
  57. 57. Contrôle faible côté serveur Protection insuffisante des données en transit Mauvaise gestion de la session
  58. 58. Contrôle faible côté serveur Insertion de contenu malicieux via l’interface mobile https://www.owasp.org/index.php/ Category:OWASP_Top_Ten_Project#tab=OWASP_Top_10_for_2013
  59. 59. Contrôle faible côté serveur Burp
  60. 60. Protection insuffisante des données en transit Non protection du trafic réseau SSL/TLS Vol de données: cookies, données sensibles…
  61. 61. Protection insuffisante des données en transit Mitigation Utiliser des certificats signés par une autorité de confiance Utiliser SSL/TLS pour toutes les communications Avertir l’utilisateur si certificat invalide
  62. 62. Mauvaise gestion de la session Résulte à de l’usurpation d’identité Hi Glen
  63. 63. Mauvaise gestion de la session Mitigation Configurer une désactivation de la session après une durée adéquate (entre 15 min et 1h) Invalider la session du côté mobile ET côté serveur Un cookie d’une ancienne session ne peut plus être réutilisée Créer des jetons aléatoires et non prévisibles
  64. 64. Ma checklist
  65. 65. Est-ce que mon application stocke des données sensibles en clair? Est-ce que d’autres applications peuvent voler/modifier des données de mon application? Est-ce que mon application utiliser des algorithmes de chiffrement sécuritaires? Est-ce que mon application est vulnérable aux injections? Est-ce que mon application possède des mécanismes de protection niveau binaire?
  66. 66. Est-ce que mon serveur gère correctement les entrées du mobile? Es t-ce q ue me s do n née s transitent en clair? Est-ce que mon serveur gère adéquatement les sessions?
  67. 67. Ma boite à outils
  68. 68. iExplorer PhoneView
  69. 69. Références OWASP Mobile Security Project: https://www.owasp.org/ index.php/ OWASP_Mobile_Security_Project#tab=Top_10_Mobile_Risks https://www.nowsecure.com/resources/secure-mobile- development/ http://www.irongeek.com/i.php?page=videos/ bsideslasvegas2014/pg10-ios-url-schemes-omg-guillaume-k- ross
  70. 70. @mcwww_nz http://www.slideshare.net/MarieClaireWillig

×