La sécurité sous Android

Slides:



Advertisements
Présentations similaires
Mondialiser la solidarité Une stratégie de participation sur Internet.
Advertisements

Université de Nantes CHORD Vincent Trève. Introduction ● Problématique – Comment accéder efficacement aux données réparties sur un système pair à pair?
QuickPlace de LOTUS Logiciel générateur de SITE WEB : Installé sur un serveur (grenet), Permet de créer / gérer / utiliser un site privé, De donner des.
Présentation du système GNU/ LINUX Journée des Logiciels Libres - 10 Décembre 2006.
Reformulation  L’AFPA promoteur du projet souhaite mettre en place une application WEB afin de remplacer une solution en Java. Pour ce projet 4 mandataires.
Présentation de Scribe Votre nouvelle organisation du Réseau Informatique Pédagogique.
Présentation du projet JAVA Système de messagerie instantanée cryptée.
Présentation LabPlus v3. Solution novatrice en Technologies de l’information Solution novatrice en Technologies de l’information Application pour la Gestion.
Made with OpenOffice.org 1 Travailler en réseau intranet à l'école Un réseau : pourquoi ? Architecture du réseau Partager un dossier Enregistrer en réseau.
1 Administration ESCO-Portail Les environnements numériques de travail Administration du socle de l'ENT Les applications.
GOOGLE MAPS ANDROID API V2. INTRODUCTION TO THE GOOGLE MAPS ANDROID API V2.
Moyens de paiement - Comptabilité - Trésorerie 8.50 & Sage Flux Bancaires Estelle BIGEY & Catherine DUMAYE - Product Delivery Juin
1. 2 Boite à outils Qt ● Boite à outils C++ pour le développement multi-plateforme d'application en environnement graphique (GUI) – des fonctions GUI.
WHATSAPP
ARCHITECTURE MULTITENANT CONTAINER DATABASE ET PLUGGABLE DATABASES Pr. A. MESRAR
Procédures Framework LDAP
Nouveautés Version 4.1 et mai 2017.
MENUS PRINCIPAL RESEAU.
Outils de suivi des compétences
Comment Sécuriser Le Système d’information de son entreprise
DropBox Projet App’Ifa.
FARAH.Z "Cours sécurité1" /2016
Google analytics.
NuFW, un parefeu authentifiant
Page 4-3 Le programme InSQL Configure
KeePass Introduction - Les services Conseils I6T.
SECURITE DU SYSTEME D’INFORMATION (SSI)
Créer un compte utilisateur restreint sur Android
Veille technologique Nassima Mahcer 17 MAI 2017.
Le Grand challenge de l'Auto-Mobilité
FARAH.Z "Cours sécurité1" /2016
Support – info Sauvegarde des données locales des postes clients
Le cloud… Pourquoi, comment et budget
Développement avec Android
Esabora.as Dématérialisation.
Piloter un robot mbot à distance avec retour vidéo
1ers pas des utilisateurs migrés
Guide des différences entre les deux versions de l’interface web
Application Faits établissements
Documentation technique (Linux)
Notion De Gestion De Bases De Données
Création Et Modification De La Structure De La Base De Données
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Base de Données, RFID et Langage SQL
Sfaihi Yassine Rabai Fatma Aissaoui Walid
Environnement de gestion des machines Virtuelles
Commerce électronique Elbekri Sarra Hamdi Amel Zriba Mariam
SOLUTION DE VIDEOSURVEILLANCE SUR IP
Exploiter le Web Etape 2.
Tablette Définition Les différentes tablettes Comparaison avec un PC
Programmation Android Première application Android
L1 Technique informatique
5 Analyse avec Designer d'Oracle
Programmation Android Composantes d’une application
Module bibliothèques numériques : le format PDF
PRISE DE LICENCE Et Application FFjudo
Bonnes pratiques d’exploitation des applications
Module 13 : Implémentation de la protection contre les sinistres
Communication Assistant V2.0
Serveurs d’applications
Catherine Cyrot - bibliothèques numériques - Cours 5
JDepend - Analyse de la qualité du code Java -
Un Mécanisme d‘Adaptation Guidé par le Contexte en Utilisant une Représentation par Objets Manuele Kirsch Pinheiro Laboratoire LSR – IMAG, Équipe SIGMA.
Outils de gestion de Exchange
Michel Jouvin Comité des utilisateurs 14 Mai 2007
PLATE-FORME DE SERVICE LIFE-CHURCH
Les différents modes de démarrage de Windows
ATELIO, experts en Protection Travailleur Isolé (PTI)
Présentation pour la réunion parents-prof
Gestion des destinataires (recipients)
Transcription de la présentation:

La sécurité sous Android

Objectif du développement sécurisé 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 malveillant Protéger les différents flux de communication

Différents modèles de sécurités Windows 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ées Windows Mobile Phone 8 : A étudier IPhone : Peu de risque Chiffrement du disque Très peu de communication entre les applications Multitâches fortement limité Limitation des applications proposées Android : 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.

Sécurité sous Android Publication des applications sur Play Store avec signature numérique Algorithmes de chiffrements disponibles (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) ou les surcouches constructeurs

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 Content provider Exposition des bases de données des applications Barre de notification pour informer l'utilisateur sur des événements asynchrones Tous ces canaux sont sensibles.

Authentification/habilitation 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 La dernière version d’Android propose le multi-compte 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

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) Dernièrement, ajout d’un privilège pour avoir droit de lire la carte SD Chiffrement « gratuit » si l'application est installée sur le carte SD Chiffrement associé au terminal 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. Juste l’accès) 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

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

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 Vulnérabilité Samsung Galaxy 3 à cause de la sur-couche constructeur

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 Un secret présent dans une application n’est pas un secret Toujours chiffrer les communications réseaux et vérifier les certificats server (Impact sur les perfs) Très peu d’application vérifient cela. Man in the middle facile

Vérifier tous les paramètres reçus Interface utilisateur sécurisé Autres points Vérifier tous les paramètres reçus Action, url, extra, requêtes, etc. 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 du domaine web classique

Comment ajouter des permissions ?

Comment sont vérifiées les permissions ? Aucun service ou devices critique n'est directement accessible aux applications (/dev n’est pas accessible) 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 PID de l'appelant Les permissions sont déclarées par les applications dans AndroidManifest.xml

Gestion des processus dans Android Une application peut utiliser plusieurs processus Plusieurs applications peuvent partager un même processus (si même signature et même nom de process) Simple paramétrage pour distribuer les applications et les processus Il existe un mode « un seul processus pour l’OS »

Et alors ?

L’exploitation de la conception Conclusion : 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é d'ajouter une permission en ajoutant une application au processus !

Comment ajouter des permissions ? L'application la plus petite du Play store 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>

Scénarios d’ajout de privilèges 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

Demo DEMO Http://goo.gl/aysRP

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

Installation d'une application avec privilège

Installation d'une autre application sans privilège

Pourtant...

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

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

Les sources http://goo.gl/GFpZr

Plus d'informations Dans HS Linux Mag ( http://goo.gl/keMmy )

Contact pprados@octo.com