Comment protéger les applications mobiles?

Post on 09-Apr-2017

9.805 views 0 download

Transcript of Comment protéger les applications mobiles?

Comment protéger les applications mobiles?

Marie-Claire Willig

Moi

Icon made by Freepik from www.flaticon.com

Table des matières

Vulnérabilités communes

iOS

Android

Cas pratiques

Checklist

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

Stockage non sécuritaire des données

Obtention de données sensibles dans les fichiers d’application

Stockage non sécuritaire des données

.plist

Stockage non sécuritaire des données

Stockage non sécuritaire des données

NSUserDefaults

Stockage non sécuritaire des données

Stockage non sécuritaire des données

Stockage non sécuritaire des données

Stockage non sécuritaire des données

Stockage non sécuritaire des données

Vol de données par une autre application

Énumération des users

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

Stockage non sécuritaire des données

Chiffrer les données en utilisant la librairie ’javax.crypto’ (cf. Mauvaise gestion de la cryptographie)

Fuite de donnéesObtention de données sensibles par l’intermédiaire d’autres applications malicieuses

En lien avec l’OS, le framework, l’environnement de compilation

Fuite de donnéesOù spécifiquement?

Mise en arrière-plan de l’application

Fuite de donnéesOù spécifiquement?

Mise en arrière-plan de l’application

Fuite de donnéesOù spécifiquement?

Cache copier/coller

http://www.cis.syr.edu/~wedu/Research/paper/clipboard_attack_dimva2014.pdf

Fuite de donnéesOù spécifiquement?

Cache copier/coller: manipulation

http://www.cis.syr.edu/~wedu/Research/paper/clipboard_attack_dimva2014.pdf

Fuite de donnéesOù spécifiquement?

Cache copier/coller: vol de données

Fuite de données

Fuite de données

Fuite de donnéesOù spécifiquement?

Cache URL

Fuite de donnéesOù spécifiquement?

Cache presse-papiers

UITextField *textField = [ [ UITextField alloc ] initWithFrame: frame ]; textField.autocorrectionType = UITextAutocorrectionTypeNo;

Fuite de donnéesOù spécifiquement?

Journalisation Stockage des données HTML5 Cookie Données envoyées à des applications tierces

Fuite de donnéesMitigation

Vérifier comment l’OS, framework… gère les données, particulièrement lorsqu’il s’agit de données sensibles

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

Mauvaise gestion de la cryptographie

Mauvaise gestion de la cryptographie

Mauvaise gestion de la cryptographie

MitigationNe pas stocker des clés sur l’application binaireUtiliser des algorithmes approuvés et sécuritaireshttp://www.nist.gov/customcf/get_pdf.cfm?pub_id=910342

DES

MD5

AES 256

SHA512

Injection côté clientDonné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….

Injection côté client

Bypass du login

Injection côté clientAttaque XSS: vol de données

Injection côté clientAttaque XSS: vol de données

Injection côté clientAttaque via script entre application: injection de code malicieux

Injection du binaire pendant l’exécution (cf. Manque de protection du binaire)

Injection côté clientMitigation

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

Injection côté clientMitigation

mWebView.getSettings().setAllowFileAccess(false);

Valider toutes les entrées utilisateurs pour les appels NSFileManager

Inclusion de fichiers locaux (/etc/passwd)

Injection XML:Utiliser libXML2

Décisions de sécurité avec des entrées non approuvées

Lecture_donnees

Ecriture_donnees

IPC (Inter Process Communication)

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:

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

Décisions de sécurité avec des entrées non approuvées

IPC effectuée via l’interface Binder et les Intent

Décisions de sécurité avec des entrées non approuvées

Décisions de sécurité avec des entrées non approuvées

Décisions de sécurité avec des entrées non approuvées

Décisions de sécurité avec des entrées non approuvées

Décisions de sécurité avec des entrées non approuvées

Hijack d’activités: implicit intent

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

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

Manque de protection du binaireProblé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

Manque de protection du binaireRétro-ingénierie: dex2jar

Manque de protection du binaireRétro-ingénierie: IDA

Manque de protection du binaireAnalyse en temps réel: ADB

Manque de protection du binaireAnalyse 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

Manque de protection du binaireMitigation

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

Manque de protection du binaireMitigation

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

Contrôle faible côté serveur

Protection insuffisante des données en transit

Mauvaise gestion de la session

Contrôle faible côté serveurInsertion de contenu malicieux via l’interface mobile

https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project#tab=OWASP_Top_10_for_2013

Contrôle faible côté serveurBurp

Protection insuffisante des données en transit

Non protection du trafic réseau

SSL/TLS

Vol de données: cookies, données sensibles…

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

Mauvaise gestion de la sessionRésulte à de l’usurpation d’identité

Hi Glen

Mauvaise gestion de la sessionMitigation

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éeCréer des jetons aléatoires et non prévisibles

Ma checklist

Est-ce que mon application stocke des données sensibles en clair?

Est-ce que d’autres applications peu vent vo le r/modifier de s 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?

Est-ce que mon serveur gère correctement les entrées du mobile?

Es t- c e q u e me s d o n née s transitent en clair?

Est-ce que mon serveur gère adéquatement les sessions?

Ma boite à outils

iExplorer

PhoneView

RéférencesOWASP 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

@mcwww_nz

http://www.slideshare.net/MarieClaireWillig