Comment protéger les
applications mobiles?
Marie-Claire Willig
Slide 2
Slide 2 text
Moi
Icon made by Freepik from www.flaticon.com
Slide 3
Slide 3 text
Table des matières
Vulnérabilités communes
iOS
Android
Cas pratiques
Checklist
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
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
Slide 6
Slide 6 text
Stockage non sécuritaire des
données
Obtention de données sensibles dans les
fichiers d’application
Slide 7
Slide 7 text
Stockage non sécuritaire des
données
.plist
Slide 8
Slide 8 text
Stockage non sécuritaire des
données
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
Stockage non sécuritaire des
données
NSUserDefaults
Slide 11
Slide 11 text
Stockage non sécuritaire des
données
Slide 12
Slide 12 text
Stockage non sécuritaire des
données
Slide 13
Slide 13 text
Stockage non sécuritaire des
données
Slide 14
Slide 14 text
Stockage non sécuritaire des
données
Slide 15
Slide 15 text
Stockage non sécuritaire des
données
Vol de données par une
autre application
Énumération des users
Slide 16
Slide 16 text
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
Slide 17
Slide 17 text
Stockage non sécuritaire des
données
Chiffrer les données en utilisant la librairie
’javax.crypto’ (cf. Mauvaise gestion de la
cryptographie)
Slide 18
Slide 18 text
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
Slide 19
Slide 19 text
Fuite de données
Où spécifiquement?
Mise en arrière-plan de l’application
Slide 20
Slide 20 text
Fuite de données
Où spécifiquement?
Mise en arrière-plan de l’application
Slide 21
Slide 21 text
Fuite de données
Où spécifiquement?
Cache copier/coller
http:/
/www.cis.syr.edu/~wedu/Research/paper/clipboard_attack_dimva2014.pdf
Slide 22
Slide 22 text
Fuite de données
Où spécifiquement?
Cache copier/coller: manipulation
http:/
/www.cis.syr.edu/~wedu/Research/paper/clipboard_attack_dimva2014.pdf
Slide 23
Slide 23 text
Fuite de données
Où spécifiquement?
Cache copier/coller: vol de données
Fuite de données
Où spécifiquement?
Journalisation
Stockage des données HTML5
Cookie
Données envoyées à des applications tierces
Slide 29
Slide 29 text
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
Slide 30
Slide 30 text
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
Slide 31
Slide 31 text
Mauvaise gestion de la
cryptographie
Slide 32
Slide 32 text
Mauvaise gestion de la
cryptographie
Slide 33
Slide 33 text
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
Slide 34
Slide 34 text
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….
Slide 35
Slide 35 text
Injection côté client
Bypass du login
Slide 36
Slide 36 text
Injection côté client
Attaque XSS: vol de données
Slide 37
Slide 37 text
Injection côté client
Attaque XSS: vol de données
Slide 38
Slide 38 text
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)
Slide 39
Slide 39 text
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
Slide 40
Slide 40 text
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
Slide 41
Slide 41 text
Décisions de sécurité avec des
entrées non approuvées
Lecture_donnees
Ecriture_donnees
IPC (Inter Process
Communication)
Slide 42
Slide 42 text
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:
Slide 43
Slide 43 text
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
Slide 44
Slide 44 text
Décisions de sécurité avec des
entrées non approuvées
IPC effectuée via l’interface Binder et les
Intent
Slide 45
Slide 45 text
Décisions de sécurité avec des
entrées non approuvées
Slide 46
Slide 46 text
Décisions de sécurité avec des
entrées non approuvées
Slide 47
Slide 47 text
Décisions de sécurité avec des
entrées non approuvées
Slide 48
Slide 48 text
Décisions de sécurité avec des
entrées non approuvées
Slide 49
Slide 49 text
Décisions de sécurité avec des
entrées non approuvées
Hijack d’activités: implicit intent
Slide 50
Slide 50 text
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
Slide 51
Slide 51 text
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
Slide 52
Slide 52 text
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
Slide 53
Slide 53 text
Manque de protection du binaire
Rétro-ingénierie: dex2jar
Slide 54
Slide 54 text
Manque de protection du binaire
Rétro-ingénierie: IDA
Slide 55
Slide 55 text
Manque de protection du binaire
Analyse en temps réel: ADB
Slide 56
Slide 56 text
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
Slide 57
Slide 57 text
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
Slide 58
Slide 58 text
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
Slide 59
Slide 59 text
Contrôle faible côté serveur
Protection insuffisante des données en
transit
Mauvaise gestion de la session
Slide 60
Slide 60 text
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
Slide 61
Slide 61 text
Contrôle faible côté serveur
Burp
Slide 62
Slide 62 text
Protection insuffisante des
données en transit
Non protection du trafic
réseau
SSL/TLS
Vol de données: cookies, données
sensibles…
Slide 63
Slide 63 text
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
Slide 64
Slide 64 text
Mauvaise gestion de la session
Résulte à de l’usurpation d’identité
Hi Glen
Slide 65
Slide 65 text
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
Slide 66
Slide 66 text
Ma checklist
Slide 67
Slide 67 text
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?
Slide 68
Slide 68 text
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?
Slide 69
Slide 69 text
Ma boite à outils
Slide 70
Slide 70 text
iExplorer
PhoneView
Slide 71
Slide 71 text
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