0
Tél : +33 (0)1 58 56 10 00Fax : +33 (0)1 58 56 10 01www.octo.com© OCTO 201250, avenue des Champs-Elysées75008 Paris - FRAN...
Philippe Prados (pprados@octo.com)ConsultantQuelques articles dans GNU Linux MagCV
La sécurité sous Android
Protéger contre le vol du terminalProtéger contre lexploitation de lapplication par uneautre application malveillanteProté...
Windows Mobile Phone 7 : Pas de risque« Pas de multi-tâches », ainsi pas de risque de key-loggerImpossibilité de faire com...
Publication des applications sur Play Store avec signaturenumériqueAlgorithmes de chiffrements disponibles (flux, fichier)...
Basé sur des Activitéssorte de page Web identifiée par une URL/IntentPeuvent être déclenchées par toutes les applicationsP...
AuthentificationLutilisateur du téléphone est considéré comme « autorisé »Valide si mécanisme de blocage du terminal (pin)...
Répertoire de travail par applicationDroit limité à lutilisateur associé à lapplication (ou aux autres applications demême...
Framework centralisé et protégé compatible OAuth2(settings/account)A UTILISER systématiquementNe pas demander les user/pas...
Par défaut, les activités et les services sont accessibles par toutes lesapplicationsRisque dattaque par manipulation des ...
Pas de garantie que le device est chiffréSQLite3 nest pas chiffré (utilisé par Webkit)Possibilité dutiliser les algorithme...
Vérifier tous les paramètres reçusAction, url, extra, requêtes, etc.Interface utilisateur sécuriséSecure activity (limite ...
Comment ajouter des permissions ?
Aucun service ou devices critique nest directement accessibleaux applications (/dev n’est pas accessible)Les applications ...
Une application peut utiliser plusieursprocessusPlusieurs applications peuvent partager unmême processus (si même signatur...
Et alors ?
Conclusion :Les permissions sont associées aux PROCESSUS et non auxapplicationsUtilisation de l’UID (User id) et PID (Proc...
Lapplication la plus petite du Play storeAucune ligne de codeJuste un fichier AndroidManifest.xml(et quelques icônes. Cont...
Deux possibilités pour ajouter la permission :Si lutilisateur accepte les applications hors play store :Installation direc...
DemoDEMOHttp://goo.gl/aysRP
Le Play Store indique les privilèges déclarées, et nonles privilèges acquis !Problème du Play store
Installation dune application avec privilège
Installation dune autre application sans privilège
Pourtant...
Les permissions accordées à un processus sont lunion despermissions de chaque applicationIl existe des permissions cachées...
Détection des privilèges cachés :Privilèges disponibles mais non déclarés dans le manifesthttp://goo.gl/v5GxCComment ajout...
Les sourceshttp://goo.gl/GFpZr
Dans HS Linux Mag ( http://goo.gl/keMmy )Plus dinformations
pprados@octo.comContact
Upcoming SlideShare
Loading in...5
×

Sécurité Android, comment l'exploiter

232

Published on

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

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
232
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
19
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Sécurité Android, comment l'exploiter"

  1. 1. Tél : +33 (0)1 58 56 10 00Fax : +33 (0)1 58 56 10 01www.octo.com© OCTO 201250, avenue des Champs-Elysées75008 Paris - FRANCESolution Linux29 mai 2013Développement sécurisé sous Android
  2. 2. Philippe Prados (pprados@octo.com)ConsultantQuelques articles dans GNU Linux MagCV
  3. 3. La sécurité sous Android
  4. 4. 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 communicationObjectif du développement sécurisé
  5. 5. Windows Mobile Phone 7 : Pas de risque« Pas de multi-tâches », ainsi pas de risque de key-loggerImpossibilité de faire communiquer les applicationsForte limitation des applications proposéesWindows Mobile Phone 8 :Renforcement du bootApplications internes entreprisesIPhone : Peu de risqueChiffrement du disqueTrès peu de communication entre les applicationsMultitâches fortement limitéLimitation des applications proposéesAndroid : Risque importantChiffrement en optionDe nombreux mécanismes de communication entre les applicationsVéritable multitâchesPratiquement aucune limitation sur les types applications proposées.Différents modèles de sécurités
  6. 6. Publication des applications sur Play Store avec signaturenumériqueAlgorithmes de chiffrements disponibles (flux, fichier)Pas de conteneur sécurisé officiellement disponible de clefavant 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 constructeursSécurité sous Android
  7. 7. Basé sur des Activitéssorte de page Web identifiée par une URL/IntentPeuvent être déclenchées par toutes les applicationsPublication de servicestraitements en tâche de fondutilisables par les autres applicationsÉvénements broadcast.Peuvent être envoyés et capturés par toutes les applications, mêmeabsentes de la mémoireContent providerExposition des bases de données des applicationsBarre de notification pour informer lutilisateur sur des événementsasynchronesTous ces canaux sont sensibles.Modèle des applications
  8. 8. AuthentificationLutilisateur 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 autrePINLa dernière version d’Android propose le multi-compteHabilitationLes applications utilisent des users linux différentsDe nouveaux privilèges peuvent être déclarés par les applicationsHabilitation pour tous, limitée aux mêmes auteurs des applicationsou limitée au système.Permet de partager des secrets entre applications du même auteurAuthentification/habilitation
  9. 9. Ré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 SDChiffrement associé au terminalPartage de fichier/fluxPossibilité de modifier les droits pour permettre un accès aux autres utilisateurs=>Risque dexposer des fichiers sensiblesPassage de handle fichier dune application à une autre (permet de ne pas exposer lefichier aux autres applications. Juste l’accès)Depuis v4, possibilité douvrir un pipe entre les applications (évite de créer un fichiertemporaire pour partager des données)Toutes les « ressources » (fichiers xml, images, styles, etc) sont accessibles àtoutes les applicationsAccès aux fichiers
  10. 10. Framework 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 SIMSecrets en caches dans le frameworksGestion des comptes
  11. 11. Par 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 (par défaut depuis 4.2.2)android:exported="false"Sinon, vérifier les privilèges des appelants et qualifierPour les activités, les services et les broadcastsVulnérabilité Samsung Galaxy 3 à cause de la sur-couche constructeurExposition des services
  12. 12. Pas 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 officielle avant la version 4 (Ice cream sandwich)Nous avons LA solution (article à paraitre)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èsUn 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 facileChiffrement
  13. 13. Vérifier tous les paramètres reçusAction, url, extra, requêtes, etc.Interface utilisateur sécuriséSecure activity (limite linterface lors dun toast)TracePeuvent 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 webclassiqueAutres points
  14. 14. Comment ajouter des permissions ?
  15. 15. 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.xmlComment sont vérifiées les permissions ?
  16. 16. Une 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 »Gestion des processus dans Android
  17. 17. Et alors ?
  18. 18. Conclusion :Les permissions sont associées aux PROCESSUS et non auxapplicationsUtilisation de l’UID (User id) et PID (Process ID) pour vérifier lesprivilègesPossibilité dajouter une permission en ajoutant une application auprocessus !L’exploitation de la conception
  19. 19. Lapplication la plus petite du Play storeAucune ligne de codeJuste un fichier AndroidManifest.xml(et quelques icônes. Contraintes du Market)Comment ajouter des permissions ?<?xml version="1.0" encoding="utf-8"?><manifestxmlns: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"/><applicationandroid:hasCode="false"android:process="fr.prados.add.permission"/></manifest>
  20. 20. Deux possibilités pour ajouter la permission :Si lutilisateur accepte les applications hors play store :Installation directe depuis un APK présent dans le répertoireassetSinon, déclencher lactivité Play Store pour demanderlinstallationScénarios d’ajout de privilèges
  21. 21. DemoDEMOHttp://goo.gl/aysRP
  22. 22. Le Play Store indique les privilèges déclarées, et nonles privilèges acquis !Problème du Play store
  23. 23. Installation dune application avec privilège
  24. 24. Installation dune autre application sans privilège
  25. 25. Pourtant...
  26. 26. Les permissions accordées à un processus sont lunion despermissions de chaque applicationIl existe des permissions cachéesUnions des permissions
  27. 27. Détection des privilèges cachés :Privilèges disponibles mais non déclarés dans le manifesthttp://goo.gl/v5GxCComment ajouter des permissions ?
  28. 28. Les sourceshttp://goo.gl/GFpZr
  29. 29. Dans HS Linux Mag ( http://goo.gl/keMmy )Plus dinformations
  30. 30. pprados@octo.comContact
  1. A particular slide catching your eye?

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

×