SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
Développement sécurisé Android
                                                                                                                                                                                                              Philippe Prados
                                                                                                                                                                                                                                            Smart Mobility
                                                                                                                                                                                                                      paug@prados.fr25/07/2011




                                                                                                                            Atos, Atos Consulting, Atos Worldline, Atos Sphere, Atos Cloud et Atos WorldGrid sont des marques déposées d’Atos SA.   © Copyright Juillet 2011, Atos S.A.
Tous droits réservés. Aucun extrait de ce document ne peut être reproduit sous quelque forme que ce soit sans l’autorisation de l’auteur. Pour toute question ou remarque concernant ce document, veuillez contacter Atos.
Les risques

  ●   Protéger contre le vol du terminal
  ●   Protéger contre l'exploitation de l'application
      par une autre application malveillante
  ●   Protéger contre l'utilisateur lui-même
  ●   Protéger les différents flux de communication




Modèle de                                         Open Source Center
Différents modèles de sécurités


Windows Mobile Phone 7 :
            ■   « Pas de multi-tâches », ainsi pas de risque de key-logger
            ■   Impossibilité de faire communiquer les applications
            ■   Pas de risque, mais forte limitation des applications proposées
●IPhone
            ■   Chiffrement du disque
            ■   Très peu de communication entre les applications
            ■   Multi-tâches fortement limité
            ■   Peu de risque, mais limitation des applications proposées
●Android
            ■   Chiffrement en option
            ■   De nombreux mécanismes de communication entre les applications
            ■   Véritable multi-tâches
            ■   Risque important. Pratiquement aucune limitation sur les types applications proposées.




Modèle de                                                                                  Open Source Center
Sécurité sous Android


●Publication des applications sur Play Store avec signature numérique
●Algorithme de chiffrement disponible (flux, fichier)

●Pas de conteneur sécurisé de clef avant la version 4

●Isolation des applications (user Linux différent)

●Privilèges pour accéder aux services sensibles.

●Possibilité d'ajouter de nouveaux privilèges

●Présentation des privilèges AVANT l'installation de l'application



●Quelques vulnérabilités découvertes sur les applications root (de moins en moins)




Modèle de                                                                 Open Source Center
Modèle des applications


●Basé sur des Activités (sorte de page Web identifiée par une URL/Intent)
●Peuvent être déclenchées par toutes les applications

●Publication 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émoire
●Barre de notification pour informer l'utilisateur sur des événements asynchrones

●Tous ces canaux sont sensibles.




Modèle de                                                                 Open Source Center
Authentification/habilitation


●Authentification
     ●L'utilisateur du téléphone est considéré comme « autorisé »
     ●Valide si mécanisme de blocage du terminal (pin)

     ●Pour les traitements sensibles, demander confirmation d'un autre PIN




●Habilitation
            ■   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




Modèle de                                                                                   Open Source Center
Accès aux fichiers


●Répertoire de travail par application
●Droit limité à l'utilisateur associé à l'application (ou aux autres applications de même

signature)
●Carte SD considérée comme publique (sinon il faut chiffrer les données)

●Chiffrement « gratuit » si l'application est installée sur le carte SD

●Partage de fichier/flux

            ■   Possibilité de modifier les droits pour permettre un accès aux autres utilisateurs
                =>Risque d'exposer des fichiers sensibles
            ■   Passage de handle fichier d'une application à une autre (permet de ne pas exposer le
                fichier aux autres applications)
            ■   Depuis v4, possibilité d'ouvrir 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




Modèle de                                                                                      Open Source Center
Gestion des comptes


●Framework centralisé et protégé compatible OAuth2 (settings/account)
●A UTILISER systématiquement

●Ne pas demander les user/password dans chaque application

●Permet de proposer un token aux autres applications sans exposer les ids

●Plus complexe à coder, mais plus d'ouverture et de sécurité

●Reset automatique de tous les passwords lors d'un changement de carte SIM




Modèle de                                                               Open Source Center
Exposition des services


●Par défaut, les activités et les services sont accessibles par toutes les applications
●Risque d'attaque par manipulation des paramètres utilisés (SQL injection, XSS,

CSRF, etc.)
●Limiter l'exposition

            ■   android:exported="false"
●Sinon, vérifier les privilèges des appelants et qualifier
            ■   Pour les activités, les services et les broadcasts




Modèle de                                                                      Open Source Center
Chiffrement


●Pas de garantie que le device est chiffré
●SQLite3 n'est pas chiffré (utilisé par Webkit)

●Possibilité d'utiliser les algorithmes de chiffrement de l'API

●Mais 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 d'accéder aux données sans réseau
●Ne pas utiliser de secret applicatif car l'utilisateur peut toujours y avoir accès
●Toujours chiffrer les communications réseaux et vérifier les certificats (Impact sur

les perfs)




Modèle de                                                                        Open Source Center
Autres points


●Vérifier tous les paramètres reçus
●Interface utilisateur sécurisé

            ■   Secure activity (limite l'interface lors d'un toast)
●Trace
            ■   Peuvent révéler des infos (un privilège permet d''y avoir accès)
            ■   Adb logcat (event, radio, main)
●Isoler le domaine web utilisé pour les mobiles




Modèle de                                                                          Open Source Center
Comment ajouter des permissions ?




                                    Open Source Center
Comment ajouter des permissions ?


●Les permissions sont déclarées par les applications dans AndroidManifest.xml
●Aucun service critique n'est directement accessible aux applications

●Les applications doivent communiquer avec le processus system_app

●Ce dernier vérifie les privilèges du processus appelant

●Car le mécanisme Binder (AIDL) injecte l'UID et le GID de l'appelant




Modèle de                                                                Open Source Center
Comment ajouter des permissions ?


●Les processus dans Androids
●Une application peut utiliser plusieurs processus

●Plusieurs applications peuvent partager un même processus (si même signature et

même nom de process)




Modèle de                                                               Open Source Center
Alors ?




          Open Source Center
Comment ajouter des permissions ?


●Conclusion :
         ■  Les permissions sont associées aux PROCESSUS et non aux
            applications
         ■  Possibilité d'ajouter une permission en ajoutant une application au
            processus !




Modèle de                                                                  Open Source Center
Comment ajouter des permissions ?


●L'application la plus petite du market
●Aucune ligne de code

●Juste 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>




Modèle de                                                                       Open Source Center
Comment ajouter des permissions ?


●Deux possibilités pour ajouter la permission :
●Si l'utilisateur accepte les applications hors play store :

●Installation directe depuis un APK présent dans le répertoire asset

●Sinon,

●Déclencher l'activité Play Store pour demander l'installation




Modèle de                                                              Open Source Center
Comment ajouter des permissions ?



                               DEMO
                        Http://goo.gl/aysRP




Modèle de                                     Open Source Center
Comment ajouter des permissions ?




            Le Play Store indique les privilèges déclarées,
                     et non les privilèges acquis !




Modèle de                                                 Open Source Center
Installation d'une application avec privilège




Modèle de                                       Open Source Center
Installation d'une autre application sans privilège




Modèle de                                             Open Source Center
Pourtant...




Modèle de     Open Source Center
Comment ajouter des permissions ?


●Les permissions accordées à un processus sont l'union des permissions de chaque
application
●Il existe des permissions cachées




Modèle de                                                              Open Source Center
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




Modèle de                                                   Open Source Center
Les sources


              http://goo.gl/GFpZr




Modèle de                           Open Source Center
Plus d'informations


●Dans HS Linux Mag ( http://goo.gl/keMmy )




Modèle de                                    Open Source Center
Contact ? Consulting ?
  paug@prados.fr




                         Open Source Center
Questions?




             Open Source Center

Weitere ähnliche Inhalte

Andere mochten auch

In01 - Programmation Android - 02 - android
In01 - Programmation Android - 02 - androidIn01 - Programmation Android - 02 - android
In01 - Programmation Android - 02 - androidYann Caron
 
My presentation on Android in my college
My presentation on Android in my collegeMy presentation on Android in my college
My presentation on Android in my collegeSneha Lata
 
Initiation Android Niveau Débutant
Initiation Android Niveau DébutantInitiation Android Niveau Débutant
Initiation Android Niveau DébutantNadim GOUIA
 
Presentation on Android operating system
Presentation on Android operating systemPresentation on Android operating system
Presentation on Android operating systemSalma Begum
 
Alphorm.com Formation Android 5
Alphorm.com Formation Android 5Alphorm.com Formation Android 5
Alphorm.com Formation Android 5Alphorm
 
Développement Android
Développement AndroidDéveloppement Android
Développement AndroidFranck SIMON
 

Andere mochten auch (9)

Fxos
FxosFxos
Fxos
 
In01 - Programmation Android - 02 - android
In01 - Programmation Android - 02 - androidIn01 - Programmation Android - 02 - android
In01 - Programmation Android - 02 - android
 
My presentation on Android in my college
My presentation on Android in my collegeMy presentation on Android in my college
My presentation on Android in my college
 
Android seminar ppt
Android seminar pptAndroid seminar ppt
Android seminar ppt
 
Initiation Android Niveau Débutant
Initiation Android Niveau DébutantInitiation Android Niveau Débutant
Initiation Android Niveau Débutant
 
Presentation on Android operating system
Presentation on Android operating systemPresentation on Android operating system
Presentation on Android operating system
 
Alphorm.com Formation Android 5
Alphorm.com Formation Android 5Alphorm.com Formation Android 5
Alphorm.com Formation Android 5
 
Développement Android
Développement AndroidDéveloppement Android
Développement Android
 
Android ppt
Android ppt Android ppt
Android ppt
 

Ähnlich wie Sécurité android par Philippe Prados 25/07/2012

Le modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows AppsLe modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows AppsMicrosoft
 
Séminaire LinID/LinPKI septembre 2011
Séminaire LinID/LinPKI septembre 2011Séminaire LinID/LinPKI septembre 2011
Séminaire LinID/LinPKI septembre 2011LINAGORA
 
Ch1. Développement mobile
Ch1. Développement mobileCh1. Développement mobile
Ch1. Développement mobileHaifa Chorfi
 
Environnement Android.pdf
Environnement Android.pdfEnvironnement Android.pdf
Environnement Android.pdfRihabBENLAMINE
 
Introduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdfIntroduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdfmed_univ78
 
La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le designChristophe Villeneuve
 
#OSSPARIS19 - La sécurité applicative par le design - CHRISTOPHE VILLENEUVE, ...
#OSSPARIS19 - La sécurité applicative par le design - CHRISTOPHE VILLENEUVE, ...#OSSPARIS19 - La sécurité applicative par le design - CHRISTOPHE VILLENEUVE, ...
#OSSPARIS19 - La sécurité applicative par le design - CHRISTOPHE VILLENEUVE, ...Paris Open Source Summit
 
La gestion des périphériques modernes avec System Center 2012 R2 Configuratio...
La gestion des périphériques modernes avec System Center 2012 R2 Configuratio...La gestion des périphériques modernes avec System Center 2012 R2 Configuratio...
La gestion des périphériques modernes avec System Center 2012 R2 Configuratio...MUG-Lyon Microsoft User Group
 
GS Days 2017 - La sécurité des APIs
GS Days 2017 - La sécurité des APIsGS Days 2017 - La sécurité des APIs
GS Days 2017 - La sécurité des APIsBertrand Carlier
 
Introduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxIntroduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxBruno Cornec
 
chapitre-1-introduction-plateforme-android (2).pdf
chapitre-1-introduction-plateforme-android (2).pdfchapitre-1-introduction-plateforme-android (2).pdf
chapitre-1-introduction-plateforme-android (2).pdfolfaharrabi2
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)TECOS
 
Développement Windows 8 METRO App
Développement Windows 8 METRO AppDéveloppement Windows 8 METRO App
Développement Windows 8 METRO AppClément Hallet
 
Développer une application Chrome avec AngularJs (Google Développers Group Sa...
Développer une application Chrome avec AngularJs (Google Développers Group Sa...Développer une application Chrome avec AngularJs (Google Développers Group Sa...
Développer une application Chrome avec AngularJs (Google Développers Group Sa...DEFO KUATE Landry
 
Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016Hadina RIMTIC
 

Ähnlich wie Sécurité android par Philippe Prados 25/07/2012 (20)

Le modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows AppsLe modèle de sécurité des Windows Apps
Le modèle de sécurité des Windows Apps
 
Android introvf
Android introvfAndroid introvf
Android introvf
 
Séminaire LinID/LinPKI septembre 2011
Séminaire LinID/LinPKI septembre 2011Séminaire LinID/LinPKI septembre 2011
Séminaire LinID/LinPKI septembre 2011
 
Ch1. Développement mobile
Ch1. Développement mobileCh1. Développement mobile
Ch1. Développement mobile
 
Chapitre 4 sem
Chapitre 4 semChapitre 4 sem
Chapitre 4 sem
 
Environnement Android.pdf
Environnement Android.pdfEnvironnement Android.pdf
Environnement Android.pdf
 
Introduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdfIntroduction_Android_-_Complet.pdf
Introduction_Android_-_Complet.pdf
 
La sécurité applicative par le design
La sécurité applicative par le designLa sécurité applicative par le design
La sécurité applicative par le design
 
#OSSPARIS19 - La sécurité applicative par le design - CHRISTOPHE VILLENEUVE, ...
#OSSPARIS19 - La sécurité applicative par le design - CHRISTOPHE VILLENEUVE, ...#OSSPARIS19 - La sécurité applicative par le design - CHRISTOPHE VILLENEUVE, ...
#OSSPARIS19 - La sécurité applicative par le design - CHRISTOPHE VILLENEUVE, ...
 
Mobile forum
Mobile forumMobile forum
Mobile forum
 
La gestion des périphériques modernes avec System Center 2012 R2 Configuratio...
La gestion des périphériques modernes avec System Center 2012 R2 Configuratio...La gestion des périphériques modernes avec System Center 2012 R2 Configuratio...
La gestion des périphériques modernes avec System Center 2012 R2 Configuratio...
 
GS Days 2017 - La sécurité des APIs
GS Days 2017 - La sécurité des APIsGS Days 2017 - La sécurité des APIs
GS Days 2017 - La sécurité des APIs
 
Introduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxIntroduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à Linux
 
chapitre-1-introduction-plateforme-android (2).pdf
chapitre-1-introduction-plateforme-android (2).pdfchapitre-1-introduction-plateforme-android (2).pdf
chapitre-1-introduction-plateforme-android (2).pdf
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)
 
Les tests de securite devops
Les tests de securite devopsLes tests de securite devops
Les tests de securite devops
 
Windows Phone 8 et la sécurité
Windows Phone 8 et la sécuritéWindows Phone 8 et la sécurité
Windows Phone 8 et la sécurité
 
Développement Windows 8 METRO App
Développement Windows 8 METRO AppDéveloppement Windows 8 METRO App
Développement Windows 8 METRO App
 
Développer une application Chrome avec AngularJs (Google Développers Group Sa...
Développer une application Chrome avec AngularJs (Google Développers Group Sa...Développer une application Chrome avec AngularJs (Google Développers Group Sa...
Développer une application Chrome avec AngularJs (Google Développers Group Sa...
 
Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016
 

Mehr von Paris Android User Group

Workshop: building your mobile backend with Parse - Droidcon Paris2014
Workshop: building your mobile backend with Parse - Droidcon Paris2014Workshop: building your mobile backend with Parse - Droidcon Paris2014
Workshop: building your mobile backend with Parse - Droidcon Paris2014Paris Android User Group
 
Workshop: Amazon developer ecosystem - DroidCon Paris2014
Workshop: Amazon developer ecosystem - DroidCon Paris2014Workshop: Amazon developer ecosystem - DroidCon Paris2014
Workshop: Amazon developer ecosystem - DroidCon Paris2014Paris Android User Group
 
Extending your apps to wearables - DroidCon Paris 2014
Extending your apps to wearables -  DroidCon Paris 2014Extending your apps to wearables -  DroidCon Paris 2014
Extending your apps to wearables - DroidCon Paris 2014Paris Android User Group
 
Scaling android development - DroidCon Paris 2014
Scaling android development - DroidCon Paris 2014Scaling android development - DroidCon Paris 2014
Scaling android development - DroidCon Paris 2014Paris Android User Group
 
Ingredient of awesome app - DroidCon Paris 2014
Ingredient of awesome app - DroidCon Paris 2014Ingredient of awesome app - DroidCon Paris 2014
Ingredient of awesome app - DroidCon Paris 2014Paris Android User Group
 
Deep dive into android restoration - DroidCon Paris 2014
Deep dive into android restoration - DroidCon Paris 2014Deep dive into android restoration - DroidCon Paris 2014
Deep dive into android restoration - DroidCon Paris 2014Paris Android User Group
 
Archos Android based connected home solution - DroidCon Paris 2014
Archos Android based connected home solution - DroidCon Paris 2014Archos Android based connected home solution - DroidCon Paris 2014
Archos Android based connected home solution - DroidCon Paris 2014Paris Android User Group
 
Porting VLC on Android - DroidCon Paris 2014
Porting VLC on Android - DroidCon Paris 2014Porting VLC on Android - DroidCon Paris 2014
Porting VLC on Android - DroidCon Paris 2014Paris Android User Group
 
Robotium vs Espresso: Get ready to rumble ! - DroidCon Paris 2014
Robotium vs Espresso: Get ready to rumble ! - DroidCon Paris 2014Robotium vs Espresso: Get ready to rumble ! - DroidCon Paris 2014
Robotium vs Espresso: Get ready to rumble ! - DroidCon Paris 2014Paris Android User Group
 
maximize app engagement and monetization - DroidCon Paris 2014
maximize app engagement and monetization - DroidCon Paris 2014maximize app engagement and monetization - DroidCon Paris 2014
maximize app engagement and monetization - DroidCon Paris 2014Paris Android User Group
 
Using the android ndk - DroidCon Paris 2014
Using the android ndk - DroidCon Paris 2014Using the android ndk - DroidCon Paris 2014
Using the android ndk - DroidCon Paris 2014Paris Android User Group
 
Holo material design transition - DroidCon Paris 2014
Holo material design transition - DroidCon Paris 2014Holo material design transition - DroidCon Paris 2014
Holo material design transition - DroidCon Paris 2014Paris Android User Group
 
Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Paris Android User Group
 
Embedded webserver implementation and usage - DroidCon Paris 2014
Embedded webserver implementation and usage - DroidCon Paris 2014Embedded webserver implementation and usage - DroidCon Paris 2014
Embedded webserver implementation and usage - DroidCon Paris 2014Paris Android User Group
 
Petit design Grande humanité par Geoffrey Dorne - DroidCon Paris 2014
Petit design Grande humanité par Geoffrey Dorne - DroidCon Paris 2014Petit design Grande humanité par Geoffrey Dorne - DroidCon Paris 2014
Petit design Grande humanité par Geoffrey Dorne - DroidCon Paris 2014Paris Android User Group
 
What's new in android 4.4 - Romain Guy & Chet Haase
What's new in android 4.4 - Romain Guy & Chet HaaseWhat's new in android 4.4 - Romain Guy & Chet Haase
What's new in android 4.4 - Romain Guy & Chet HaaseParis Android User Group
 
Efficient Image Processing - Nicolas Roard
Efficient Image Processing - Nicolas RoardEfficient Image Processing - Nicolas Roard
Efficient Image Processing - Nicolas RoardParis Android User Group
 

Mehr von Paris Android User Group (20)

Workshop: building your mobile backend with Parse - Droidcon Paris2014
Workshop: building your mobile backend with Parse - Droidcon Paris2014Workshop: building your mobile backend with Parse - Droidcon Paris2014
Workshop: building your mobile backend with Parse - Droidcon Paris2014
 
Workshop: Amazon developer ecosystem - DroidCon Paris2014
Workshop: Amazon developer ecosystem - DroidCon Paris2014Workshop: Amazon developer ecosystem - DroidCon Paris2014
Workshop: Amazon developer ecosystem - DroidCon Paris2014
 
Extending your apps to wearables - DroidCon Paris 2014
Extending your apps to wearables -  DroidCon Paris 2014Extending your apps to wearables -  DroidCon Paris 2014
Extending your apps to wearables - DroidCon Paris 2014
 
Scaling android development - DroidCon Paris 2014
Scaling android development - DroidCon Paris 2014Scaling android development - DroidCon Paris 2014
Scaling android development - DroidCon Paris 2014
 
Ingredient of awesome app - DroidCon Paris 2014
Ingredient of awesome app - DroidCon Paris 2014Ingredient of awesome app - DroidCon Paris 2014
Ingredient of awesome app - DroidCon Paris 2014
 
Framing the canvas - DroidCon Paris 2014
Framing the canvas - DroidCon Paris 2014Framing the canvas - DroidCon Paris 2014
Framing the canvas - DroidCon Paris 2014
 
Deep dive into android restoration - DroidCon Paris 2014
Deep dive into android restoration - DroidCon Paris 2014Deep dive into android restoration - DroidCon Paris 2014
Deep dive into android restoration - DroidCon Paris 2014
 
Archos Android based connected home solution - DroidCon Paris 2014
Archos Android based connected home solution - DroidCon Paris 2014Archos Android based connected home solution - DroidCon Paris 2014
Archos Android based connected home solution - DroidCon Paris 2014
 
Porting VLC on Android - DroidCon Paris 2014
Porting VLC on Android - DroidCon Paris 2014Porting VLC on Android - DroidCon Paris 2014
Porting VLC on Android - DroidCon Paris 2014
 
Robotium vs Espresso: Get ready to rumble ! - DroidCon Paris 2014
Robotium vs Espresso: Get ready to rumble ! - DroidCon Paris 2014Robotium vs Espresso: Get ready to rumble ! - DroidCon Paris 2014
Robotium vs Espresso: Get ready to rumble ! - DroidCon Paris 2014
 
Buildsystem.mk - DroidCon Paris 2014
Buildsystem.mk - DroidCon Paris 2014Buildsystem.mk - DroidCon Paris 2014
Buildsystem.mk - DroidCon Paris 2014
 
maximize app engagement and monetization - DroidCon Paris 2014
maximize app engagement and monetization - DroidCon Paris 2014maximize app engagement and monetization - DroidCon Paris 2014
maximize app engagement and monetization - DroidCon Paris 2014
 
Using the android ndk - DroidCon Paris 2014
Using the android ndk - DroidCon Paris 2014Using the android ndk - DroidCon Paris 2014
Using the android ndk - DroidCon Paris 2014
 
Holo material design transition - DroidCon Paris 2014
Holo material design transition - DroidCon Paris 2014Holo material design transition - DroidCon Paris 2014
Holo material design transition - DroidCon Paris 2014
 
Death to passwords - DroidCon Paris 2014
Death to passwords - DroidCon Paris 2014Death to passwords - DroidCon Paris 2014
Death to passwords - DroidCon Paris 2014
 
Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014
 
Embedded webserver implementation and usage - DroidCon Paris 2014
Embedded webserver implementation and usage - DroidCon Paris 2014Embedded webserver implementation and usage - DroidCon Paris 2014
Embedded webserver implementation and usage - DroidCon Paris 2014
 
Petit design Grande humanité par Geoffrey Dorne - DroidCon Paris 2014
Petit design Grande humanité par Geoffrey Dorne - DroidCon Paris 2014Petit design Grande humanité par Geoffrey Dorne - DroidCon Paris 2014
Petit design Grande humanité par Geoffrey Dorne - DroidCon Paris 2014
 
What's new in android 4.4 - Romain Guy & Chet Haase
What's new in android 4.4 - Romain Guy & Chet HaaseWhat's new in android 4.4 - Romain Guy & Chet Haase
What's new in android 4.4 - Romain Guy & Chet Haase
 
Efficient Image Processing - Nicolas Roard
Efficient Image Processing - Nicolas RoardEfficient Image Processing - Nicolas Roard
Efficient Image Processing - Nicolas Roard
 

Sécurité android par Philippe Prados 25/07/2012

  • 1. Développement sécurisé Android Philippe Prados Smart Mobility paug@prados.fr25/07/2011 Atos, Atos Consulting, Atos Worldline, Atos Sphere, Atos Cloud et Atos WorldGrid sont des marques déposées d’Atos SA. © Copyright Juillet 2011, Atos S.A. Tous droits réservés. Aucun extrait de ce document ne peut être reproduit sous quelque forme que ce soit sans l’autorisation de l’auteur. Pour toute question ou remarque concernant ce document, veuillez contacter Atos.
  • 2. Les risques ● Protéger contre le vol du terminal ● Protéger contre l'exploitation de l'application par une autre application malveillante ● Protéger contre l'utilisateur lui-même ● Protéger les différents flux de communication Modèle de Open Source Center
  • 3. Différents modèles de sécurités Windows Mobile Phone 7 : ■ « Pas de multi-tâches », ainsi pas de risque de key-logger ■ Impossibilité de faire communiquer les applications ■ Pas de risque, mais forte limitation des applications proposées ●IPhone ■ Chiffrement du disque ■ Très peu de communication entre les applications ■ Multi-tâches fortement limité ■ Peu de risque, mais limitation des applications proposées ●Android ■ Chiffrement en option ■ De nombreux mécanismes de communication entre les applications ■ Véritable multi-tâches ■ Risque important. Pratiquement aucune limitation sur les types applications proposées. Modèle de Open Source Center
  • 4. Sécurité sous Android ●Publication des applications sur Play Store avec signature numérique ●Algorithme de chiffrement disponible (flux, fichier) ●Pas de conteneur sécurisé de clef avant la version 4 ●Isolation des applications (user Linux différent) ●Privilèges pour accéder aux services sensibles. ●Possibilité d'ajouter de nouveaux privilèges ●Présentation des privilèges AVANT l'installation de l'application ●Quelques vulnérabilités découvertes sur les applications root (de moins en moins) Modèle de Open Source Center
  • 5. Modèle des applications ●Basé sur des Activités (sorte de page Web identifiée par une URL/Intent) ●Peuvent être déclenchées par toutes les applications ●Publication 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émoire ●Barre de notification pour informer l'utilisateur sur des événements asynchrones ●Tous ces canaux sont sensibles. Modèle de Open Source Center
  • 6. Authentification/habilitation ●Authentification ●L'utilisateur du téléphone est considéré comme « autorisé » ●Valide si mécanisme de blocage du terminal (pin) ●Pour les traitements sensibles, demander confirmation d'un autre PIN ●Habilitation ■ 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 Modèle de Open Source Center
  • 7. Accès aux fichiers ●Répertoire de travail par application ●Droit limité à l'utilisateur associé à l'application (ou aux autres applications de même signature) ●Carte SD considérée comme publique (sinon il faut chiffrer les données) ●Chiffrement « gratuit » si l'application est installée sur le carte SD ●Partage de fichier/flux ■ Possibilité de modifier les droits pour permettre un accès aux autres utilisateurs =>Risque d'exposer des fichiers sensibles ■ Passage de handle fichier d'une application à une autre (permet de ne pas exposer le fichier aux autres applications) ■ Depuis v4, possibilité d'ouvrir 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 Modèle de Open Source Center
  • 8. Gestion des comptes ●Framework centralisé et protégé compatible OAuth2 (settings/account) ●A UTILISER systématiquement ●Ne pas demander les user/password dans chaque application ●Permet de proposer un token aux autres applications sans exposer les ids ●Plus complexe à coder, mais plus d'ouverture et de sécurité ●Reset automatique de tous les passwords lors d'un changement de carte SIM Modèle de Open Source Center
  • 9. Exposition des services ●Par défaut, les activités et les services sont accessibles par toutes les applications ●Risque d'attaque par manipulation des paramètres utilisés (SQL injection, XSS, CSRF, etc.) ●Limiter l'exposition ■ android:exported="false" ●Sinon, vérifier les privilèges des appelants et qualifier ■ Pour les activités, les services et les broadcasts Modèle de Open Source Center
  • 10. Chiffrement ●Pas de garantie que le device est chiffré ●SQLite3 n'est pas chiffré (utilisé par Webkit) ●Possibilité d'utiliser les algorithmes de chiffrement de l'API ●Mais 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 d'accéder aux données sans réseau ●Ne pas utiliser de secret applicatif car l'utilisateur peut toujours y avoir accès ●Toujours chiffrer les communications réseaux et vérifier les certificats (Impact sur les perfs) Modèle de Open Source Center
  • 11. Autres points ●Vérifier tous les paramètres reçus ●Interface utilisateur sécurisé ■ Secure activity (limite l'interface lors d'un toast) ●Trace ■ Peuvent révéler des infos (un privilège permet d''y avoir accès) ■ Adb logcat (event, radio, main) ●Isoler le domaine web utilisé pour les mobiles Modèle de Open Source Center
  • 12. Comment ajouter des permissions ? Open Source Center
  • 13. Comment ajouter des permissions ? ●Les permissions sont déclarées par les applications dans AndroidManifest.xml ●Aucun service critique n'est directement accessible aux applications ●Les applications doivent communiquer avec le processus system_app ●Ce dernier vérifie les privilèges du processus appelant ●Car le mécanisme Binder (AIDL) injecte l'UID et le GID de l'appelant Modèle de Open Source Center
  • 14. Comment ajouter des permissions ? ●Les processus dans Androids ●Une application peut utiliser plusieurs processus ●Plusieurs applications peuvent partager un même processus (si même signature et même nom de process) Modèle de Open Source Center
  • 15. Alors ? Open Source Center
  • 16. Comment ajouter des permissions ? ●Conclusion : ■ Les permissions sont associées aux PROCESSUS et non aux applications ■ Possibilité d'ajouter une permission en ajoutant une application au processus ! Modèle de Open Source Center
  • 17. Comment ajouter des permissions ? ●L'application la plus petite du market ●Aucune ligne de code ●Juste 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> Modèle de Open Source Center
  • 18. Comment ajouter des permissions ? ●Deux possibilités pour ajouter la permission : ●Si l'utilisateur accepte les applications hors play store : ●Installation directe depuis un APK présent dans le répertoire asset ●Sinon, ●Déclencher l'activité Play Store pour demander l'installation Modèle de Open Source Center
  • 19. Comment ajouter des permissions ? DEMO Http://goo.gl/aysRP Modèle de Open Source Center
  • 20. Comment ajouter des permissions ? Le Play Store indique les privilèges déclarées, et non les privilèges acquis ! Modèle de Open Source Center
  • 21. Installation d'une application avec privilège Modèle de Open Source Center
  • 22. Installation d'une autre application sans privilège Modèle de Open Source Center
  • 23. Pourtant... Modèle de Open Source Center
  • 24. Comment ajouter des permissions ? ●Les permissions accordées à un processus sont l'union des permissions de chaque application ●Il existe des permissions cachées Modèle de Open Source Center
  • 25. 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 Modèle de Open Source Center
  • 26. Les sources http://goo.gl/GFpZr Modèle de Open Source Center
  • 27. Plus d'informations ●Dans HS Linux Mag ( http://goo.gl/keMmy ) Modèle de Open Source Center
  • 28. Contact ? Consulting ? paug@prados.fr Open Source Center
  • 29. Questions? Open Source Center