Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Comment protéger les applications mobiles

Comment protéger les applications mobiles

Dans le cadre des Midis Conférence à l'Espace Desjardins, l'équipe OWASP Montréal vous invite à assister à une présentation sur les vulnérabilités les plus communes associées aux appareils mobiles. Marie-Claire Willig détaillera entre autres comment stocker de façon sécuritaire les données de l’application mobile ainsi que protéger l’application contre des attaques externes. Des outils simples vous seront dévoilés pour détecter ces vulnérabilités. Marie-Claire est une professionnelle d'expérience en sécurité appliquée. Une grande partie de son intérêt professionnel réside actuellement dans un domaine assez niche, soit la revue de code sécuritaire, un fondement important de tout cycle de développement sécuritaire en entreprise. Au sein de l'équipe de sécurité technologique Desjardins, elle est, en autre, responsable de former les développeurs (Java et .NET principalement) afin de les sensibiliser aux meilleures pratiques de développement sécuritaire. Également, elle est une professionnelle des tests d'intrusion sur les applications web, les applications mobiles ainsi que l'infrastructure réseau.

OWASP Montréal

May 18, 2016
Tweet

More Decks by OWASP Montréal

Other Decks in Programming

Transcript

  1. 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
  2. Stockage non sécuritaire des données Vol de données par une

    autre application Énumération des users
  3. 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
  4. Stockage non sécuritaire des données Chiffrer les données en utilisant

    la librairie ’javax.crypto’ (cf. Mauvaise gestion de la cryptographie)
  5. 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
  6. Fuite de données Où spécifiquement? Cache presse-papiers UITextField *textField =

    [ [ UITextField alloc ] initWithFrame: frame ]; textField.autocorrectionType = UITextAutocorrectionTypeNo;
  7. Fuite de données Où spécifiquement? Journalisation Stockage des données HTML5

    Cookie Données envoyées à des applications tierces
  8. 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
  9. 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
  10. 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
  11. 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….
  12. 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)
  13. 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
  14. 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
  15. 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:
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. Protection insuffisante des données en transit Non protection du trafic

    réseau SSL/TLS Vol de données: cookies, données sensibles…
  25. 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
  26. 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
  27. 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?
  28. 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?
  29. 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