0
Développement sécurisé sous Android          DevFest - GDG Nantes          9 novembre 2012                       50, avenu...
CVPhilippe Prados (pprados@octo.com)ConsultantQuelques articles dans GNU Linux Mag                                        ...
La sécurité sous Android                           3
Objectif du développement sécuriséProtéger contre le vol du terminalProtéger contre lexploitation de lapplication par unea...
Différents modèles de sécuritésWindows Mobile Phone 7 : Pas de risque   « Pas de multi-tâches », ainsi pas de risque de ke...
Sécurité sous AndroidPublication des applications sur Play Store avec signaturenumériqueAlgorithmes de chiffrements dispon...
Modèle des applicationsBasé sur des Activités    sorte de page Web identifiée par une URL/Intent    Peuvent être déclenché...
Authentification/habilitationAuthentification   Lutilisateur du téléphone est considéré comme « autorisé »   Valide si méc...
Accès aux fichiersRépertoire de travail par applicationDroit limité à lutilisateur associé à lapplication (ou aux autres a...
Gestion des comptesFramework centralisé et protégé compatible OAuth2(settings/account)A UTILISER systématiquementNe pas de...
Exposition des servicesPar défaut, les activités et les services sont accessibles par toutes lesapplicationsRisque dattaqu...
ChiffrementPas de garantie que le device est chiffréSQLite3 nest pas chiffré (utilisé par Webkit)Possibilité dutiliser les...
Autres pointsVérifier tous les paramètres reçus   Action, url, extra, requêtes, etc.Interface utilisateur sécurisé   Secur...
Comment ajouter des permissions ?                                    14
Comment sont vérifiées les permissions ?Aucun service ou devices critique nest directement accessibleaux applications (/de...
Gestion des processus dans AndroidUne application peut utiliser plusieursprocessusPlusieurs applications peuvent partager ...
Et alors ?             17
L’exploitation de la conceptionConclusion :   Les permissions sont associées aux PROCESSUS et non aux   applications      ...
Comment ajouter des permissions ?Lapplication la plus petite du Play storeAucune ligne de codeJuste un fichier AndroidMani...
Scénarios d’ajout de privilègesDeux possibilités pour ajouter la permission :   Si lutilisateur accepte les applications h...
Demo       DEMOHttp://goo.gl/aysRP                             21
Problème du Play storeLe Play Store indique les privilèges déclarées, et non                les privilèges acquis !       ...
Installation dune application avec privilège                                                23
Installation dune autre application sans privilège                                                      24
Pourtant...              25
Unions des permissionsLes permissions accordées à un processus sont lunion despermissions de chaque applicationIl existe d...
Comment ajouter des permissions ?Détection des privilèges cachés :Privilèges disponibles mais non déclarés dans le manifes...
Les sourceshttp://goo.gl/GFpZr                                    28
Plus dinformationsDans HS Linux Mag ( http://goo.gl/keMmy )                                                               ...
Contactpprados@octo.com                             30
Upcoming SlideShare
Loading in...5
×

OCTO - Sécurité android

739

Published on

La sécurité des applications Android. Comment ajouter des privilèges à une application.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
739
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
30
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "OCTO - Sécurité android"

  1. 1. Développement sécurisé sous Android DevFest - GDG Nantes 9 novembre 2012 50, avenue des Champs-Elysées Tél : +33 (0)1 58 56 10 00 75008 Paris - FRANCE Fax : +33 (0)1 58 56 10 01 1© OCTO 2012 www.octo.com
  2. 2. CVPhilippe Prados (pprados@octo.com)ConsultantQuelques articles dans GNU Linux Mag 2
  3. 3. La sécurité sous Android 3
  4. 4. Objectif du développement sécuriséProtéger contre le vol du terminalProtéger contre lexploitation de lapplication par uneautre application malveillanteProtéger contre lutilisateur malveillantProtéger les différents flux de communication 4
  5. 5. Différents modèles de sécuritésWindows Mobile Phone 7 : Pas de risque « Pas de multi-tâches », ainsi pas de risque de key-logger Impossibilité de faire communiquer les applications Forte limitation des applications proposéesWindows Mobile Phone 8 : A étudierIPhone : Peu de risque Chiffrement du disque Très peu de communication entre les applications Multitâches fortement limité Limitation des applications proposéesAndroid : Risque important Chiffrement en option De nombreux mécanismes de communication entre les applications Véritable multitâches Pratiquement aucune limitation sur les types applications proposées. 5
  6. 6. Sécurité sous AndroidPublication des applications sur Play Store avec signaturenumériqueAlgorithmes de chiffrements disponibles (flux, fichier)Pas de conteneur sécurisé de clef avant la version 4Isolation des applications (user Linux différent)Privilèges pour accéder aux services sensibles.Possibilité dajouter de nouveaux privilègesPrésentation des privilèges AVANT linstallation de lapplicationQuelques vulnérabilités découvertes sur les applications root(de moins en moins) ou les surcouches constructeurs 6
  7. 7. Modèle des applicationsBasé sur des Activités sorte de page Web identifiée par une URL/Intent Peuvent être déclenchées par toutes les applicationsPublication de services traitements en tâche de fond utilisables par les autres applicationsÉvénements broadcast. Peuvent être envoyés et capturés par toutes les applications, même absentes de la mémoireContent provider Exposition des bases de données des applicationsBarre de notification pour informer lutilisateur sur des événementsasynchronesTous ces canaux sont sensibles. 7
  8. 8. Authentification/habilitationAuthentification Lutilisateur du téléphone est considéré comme « autorisé » Valide si mécanisme de blocage du terminal (pin) Pour les traitements sensibles, demander confirmation dun autre PIN La dernière version d’Android propose le multi-compteHabilitation Les applications utilisent des users linux différents De nouveaux privilèges peuvent être déclarés par les applications Habilitation pour tous, limitée aux mêmes auteurs des applications ou limitée au système. Permet de partager des secrets entre applications du même auteur 8
  9. 9. Accès aux fichiersRépertoire de travail par applicationDroit limité à lutilisateur associé à lapplication (ou aux autres applications demême signature)Carte SD considérée comme publique (sinon il faut chiffrer les données) Dernièrement, ajout d’un privilège pour avoir droit de lire la carte SDChiffrement « gratuit » si lapplication est installée sur le carte SD Chiffrement associé au terminalPartage de fichier/flux Possibilité de modifier les droits pour permettre un accès aux autres utilisateurs =>Risque dexposer des fichiers sensibles Passage de handle fichier dune application à une autre (permet de ne pas exposer le fichier aux autres applications. Juste l’accès) Depuis v4, possibilité douvrir un pipe entre les applications (évite de créer un fichier temporaire pour partager des données)Toutes les « ressources » (fichiers xml, images, styles, etc) sont accessibles àtoutes les applications 9
  10. 10. Gestion des comptesFramework centralisé et protégé compatible OAuth2(settings/account)A UTILISER systématiquementNe pas demander les user/password dans chaque applicationPermet de proposer un token aux autres applications sansexposer les idsPlus complexe à coder, mais plus douverture et de sécuritéReset automatique de tous les passwords lors dun changementde carte SIM 10
  11. 11. Exposition des servicesPar défaut, les activités et les services sont accessibles par toutes lesapplicationsRisque dattaque par manipulation des paramètres utilisés (SQLinjection, XSS, CSRF, etc.)Limiter lexposition android:exported="false"Sinon, vérifier les privilèges des appelants et qualifier Pour les activités, les services et les broadcastsVulnérabilité Samsung Galaxy 3 à cause de la sur-couche constructeur 11
  12. 12. ChiffrementPas de garantie que le device est chiffréSQLite3 nest pas chiffré (utilisé par Webkit)Possibilité dutiliser les algorithmes de chiffrement de lAPIMais où placer la clef privée ou symétrique ? Pas de solution fiable avant la version 4 (Ice cream sandwich)Alternative : chiffrement avec clef mixe local+réseau. Impossible daccéder aux données sans réseauNe pas utiliser de secret applicatif car lutilisateur peut toujours y avoiraccès Un secret présent dans une application n’est pas un secretToujours chiffrer les communications réseaux et vérifier les certificatsserver (Impact sur les perfs) Très peu d’application vérifient cela. Man in the middle facile 12
  13. 13. Autres pointsVérifier tous les paramètres reçus Action, url, extra, requêtes, etc.Interface utilisateur sécurisé Secure activity (limite linterface lors dun toast)Trace Peuvent révéler des infos (un privilège permet dy avoir accès) Adb logcat (event, radio, main)Isoler le domaine web utilisé pour les mobiles du domaine webclassique 13
  14. 14. Comment ajouter des permissions ? 14
  15. 15. Comment sont vérifiées les permissions ?Aucun service ou devices critique nest directement accessibleaux applications (/dev n’est pas accessible)Les applications doivent communiquer avec le processussystem_appCe dernier vérifie les privilèges du processus appelantCar le mécanisme Binder (AIDL) injecte lUID et le PID delappelantLes permissions sont déclarées par les applications dansAndroidManifest.xml 15
  16. 16. Gestion des processus dans AndroidUne application peut utiliser plusieursprocessusPlusieurs applications peuvent partager unmême processus (si même signature etmême nom de process)Simple paramétrage pour distribuer lesapplications et les processusIl existe un mode « un seul processus pourl’OS » 16
  17. 17. Et alors ? 17
  18. 18. L’exploitation de la conceptionConclusion : Les permissions sont associées aux PROCESSUS et non aux applications Utilisation de l’UID (User id) et PID (Process ID) pour vérifier les privilèges Possibilité dajouter une permission en ajoutant une application au processus ! 18
  19. 19. Comment ajouter des permissions ?Lapplication la plus petite du Play storeAucune ligne de codeJuste un fichier AndroidManifest.xml(et quelques icônes. Contraintes du Market) <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="fr.prados.add.permission.sms" android:sharedUserId="fr.prados.add.permission" android:versionCode="3" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="7" /> <uses-permission android:name="android.permission.SEND_SMS"/> <application android:hasCode="false" android:process="fr.prados.add.permission"/> </manifest> 19
  20. 20. Scénarios d’ajout de privilègesDeux possibilités pour ajouter la permission : Si lutilisateur accepte les applications hors play store : Installation directe depuis un APK présent dans le répertoire asset Sinon, déclencher lactivité Play Store pour demander linstallation 20
  21. 21. Demo DEMOHttp://goo.gl/aysRP 21
  22. 22. Problème du Play storeLe Play Store indique les privilèges déclarées, et non les privilèges acquis ! 22
  23. 23. Installation dune application avec privilège 23
  24. 24. Installation dune autre application sans privilège 24
  25. 25. Pourtant... 25
  26. 26. Unions des permissionsLes permissions accordées à un processus sont lunion despermissions de chaque applicationIl existe des permissions cachées 26
  27. 27. Comment ajouter des permissions ?Détection des privilèges cachés :Privilèges disponibles mais non déclarés dans le manifest http://goo.gl/v5GxC 27
  28. 28. Les sourceshttp://goo.gl/GFpZr 28
  29. 29. Plus dinformationsDans HS Linux Mag ( http://goo.gl/keMmy ) 29
  30. 30. Contactpprados@octo.com 30
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×