wiki android par frandroid

Penser la sécurité de ses applications mobiles

De FrAndroid - Android docs.

Cette page existe pour référencer les problématiques de sécurité sur une application mobile en général. Cette page pose les questions en termes de sécurité. Il sera ensuite le temps d'émettre des réponses pour Android. Certaine questions ne sont pas d'actualité pour Android, d'autre sont capitales.

Ce n'est pour l'instant qu'un brouillon - DRAFT

Sommaire

L'application mobile

Intégrité

  • Peut-on modifier le code de l'application mobile ?
    • Avant l'installation de celle ci sur le terminal ?
    • Après l'installation de celle ci sur le terminal ?
    • Quels sont les risques ?
      • Pour l'utilisateur ?
      • Pour le système ? (Serveurs, image de marque etc.)
  • Peut-on modifier les paramètres de l'application mobile ? (url server, clé API etc.)
    • Quels sont les risques ?
      • Pour l'utilisateur ? (données privées)
      • Pour le système ? (Serveurs, image de marque etc.)

Confidentialité et intégrité des échanges

Réseaux et server side

  • L'application mobile utilise t'elle les moyens de communication du terminal ?
    • Activement ? (L'application se connecte aux serveurs)
    • Passivement ? (L'application reçoit des connections d'autres éléments réseaux - Serveurs, mais aussi autres terminaux)
  • L'application utilisent-elle des API ou un backend disant ? (Serveurs)
  • Intégrité des échanges
    • Depuis le téléphone
      • Est-il possible d'intercepter les communications depuis le téléphone?
        • Risques ?
      • Est-il possible de modifier les communications depuis le téléphone?
        • Risques ?
    • Depuis un élément réseaux
      • Est-il possible d'intercepter les communications?
        • Risques ?
      • Est-il possible de modifier les communications?
        • Risques ?
  • Confidentialité des échanges
    • De quel façon est sécurisé la transmission d'information sur le réseau?
    • Quel cryptage l'application met-elle en oeuvre ?
    • Le cryptage est-il adapté ?
      • En terme de performance ?
      • En terme de confidentialité ?
      • En terme de fonctionnalités et de fonctionnement ?
    • Est-ce que les données transitant sur le réseau contiennent:
      • des donnée privé de l'utilisateur ? (mot de passe, code carte, email, fichiers)
      • des donnée sensible pour le système ? (clé d'API)
  • Quel sont les types de réseaux utilisé par l'application
    • Bluetooth
    • Wifi
    • 3G
    • GPS
  • Quel est le degrés de confidentialité de chacun de ces réseaux ?
  • Est-ce que l'application prend en compte ces niveaux différent de confidentialité?

Client side / Sur le terminal lui même

Sur le terminal, l'application peut utiliser des fonctions pour communiquer avec d'autre application du téléphone, ou entre différentes partie de la même applications.

  • Est-ce que l'application est découpé en plusieurs parties qui communiquent ?
    • Est-ce qu'il est possible d'intercepter ces communications ? de modifier ces communications ? (broadcast d'Intents pouvant être interceptés)
  • Est-ce que l'application communique avec d'autre applications sur le terminal ?
    • Est-ce que ces communications contiennent des données sensibles ?
      • Pour le systèmes ?
      • pour l'utilisateur (Données privées) ?

Confidentialité et intégrité des données locales

Les systèmes mobiles ont différent niveaux de sécurité. Les SDK offrent généralement un moyen de cloisonner les applications. Jusqu'ou vas se cloisonnent.

  • Est-ce que l'application stock des données localement?
  • Fichier plat ? Base de donnée SQLITE, format propriétaire ou fermé?

Confidentialité

  • Accès
    • Est-ce que l'utilisateur peut accéder à ces données locales ? Depuis le terminal ? En connectant le terminal ? En ligne ?
    • Est-ce qu'un programme peut accéder à ces données locales ?
  • Sensibilité
    • Donnée privé de l'utilisateur ? (mot de passe, code carte, email)
    • Donnée sensible pour le système ? (clé d'API)

Intégrité

  • Est-ce que l'utilisateur peut modifier ces données (et par quel moyens ?) ?
  • Un autre programme peut-il modifier ces données?
  • La modification des données locales présent-elle un risque pour le système ?

Disponibilité

Sur le terminal

  • Est-il possible de bloquer l'installation de l'application sur le terminal ?
    • Depuis une autre applications ?
  • Est-il possible de bloquer l'execution de l'application sur le terminal ?
  • Est-il possible d'empêcher l'exécution de l'application sur le terminal ?
    • En supprimant certains fichiers local ?
    • En modifiant les permissions de l'application ?
  • Est-il possible de supprimer/désinstaller l'application sur le terminal ?
    • Depuis une autre application ? Depuis le PC ? Online ?

Server side

  • Quel garanties en terme de disponibilité le système distant offre t-il ?

Network side

  • Peut-on bloquer les moyens de communications de l'application ?
    • A partir d'une application ?
    • Depuis un élément réseau ?

Authentification

De l'utilisateur sur le terminal/sur le système

  • Quel système d'authentification l'application utilise t'elle (PIM, login/mot de passe, anonyme)
    • Ce système d'authentification est-il adapté ? (Enjeu, performance, confidentialité)

Des services distants

  • Le server a-t-il un moyen d'authentifier le client (Cette authentification est-elle nécessaire) ?
  • Le client a-t-il un moyen d'authentifier le serveur ?
    • Quel système d'authentification le système distant offre t-il?
    • Ce système d'authentification est-il adapté ? (Enjeu, performance, confidentialité)

L'environnement mobile - Risques et moyens

Un terminal mobile évolue dans différent environnement qui présentent chacun des risques différent pour la sécurité.

Accès temporaire au terminal

  • Vol du terminal
    • Quels risque l'application fait-elle courir ?
      • à l'utilisateur ? (confidentialités des données)
      • à l'application elle-même ?
  • Accès temporaire au terminal ? (emprunt momentané)
    • Quel sont les risques ?
      • Pour l'utilisateur ? (confidentialités des données)
      • Pour l'application ?

Environnement domestique

  • Le terminal connecté à un élément réseau domestique (USB)
    • PC
      • Quels sont les moyens d'un attaquant utilisant le terminal connecté via USB
        • Via un programme malveillant ?
        • En terme de disponibilité (désinstallation ?)
        • En terme de confidentialité
        • En terme d'intégrité ? (modification de l'application, remplacement de l'application par une malveillante)
    • Chaine hifi (lol)

Environnement ouvert

  • Quel sont les risques pour l'application utilisé dans la rue ?
    • Confidentialité des données affichées à l'écran ?
  • Sécurité du terminal et de l'application utilisant le bluetooth ?

Wifi - Hotspot - Office/LAN

  • Moyen d'un attaquant utilisant un élément réseau en wifi ?

Liens internet