Guide de test de sécurité des applications mobiles OWASP (MSTG) Expliqué

OWASP Mobile Security Testing Guide (MSTG) Explained

OWASP Mobile Testing Guide

Bien que les applications mobiles et les systèmes d’exploitation soient plus sécurisés que leurs homologues de bureau, ils nécessitent également des plans de test réguliers et des fonctionnalités de sécurité solides. Cela devient encore plus évident lorsque nous parlons de la phase de développement des applications mobiles. Plusieurs domaines doivent être protégés : le stockage local des données, les informations sensibles, la communication des points de terminaison, l’authentification et l’autorisation, la qualité du code, les connexions réseau, etc. C’est là que le guide de test de sécurité des applications mobiles de l’OWASP fournit des lignes directrices aux développeurs pour protéger leurs applications.

Le guide de test de sécurité des applications mobiles de l’OWASP est un manuel complet qui énumère les lignes directrices pour le développement, les tests et l’ingénierie inverse de la sécurité des applications mobiles iOS et Android. Jetons un coup d’œil rapide aux facteurs importants, aux concepts et aux techniques du test de sécurité des applications mobiles.

Exigences et vérification du guide de test des applications mobiles OWASP

Le standard de vérification de la sécurité des applications mobiles de l’OWASP (MASVS) est un standard suivi par les architectes logiciels, les testeurs et les développeurs pour créer des applications mobiles sécurisées. Différents scénarios sont couverts par différents membres de l’équipe lors des différentes phases d’un projet. Les développeurs suivent les exigences de sécurité définies pour le développement, les testeurs suivent les meilleures pratiques et les cas de test pour effectuer des tests de pénétration d’applications mobiles, et les équipes peuvent également se conformer aux directives et assurer un respect strict des lignes directrices lorsqu’elles travaillent avec des fournisseurs.

Taxonomie des applications mobiles

Le terme “application mobile” désigne tout programme qui s’exécute sur un appareil mobile. Il existe certains types spécifiques d’applications mobiles :

Application native

Ces applications sont spécifiques au système pour lequel elles sont développées. Elles interagissent étroitement avec le système d’exploitation du dispositif mobile. Par conséquent, elles peuvent presque toujours accéder directement à d’autres composants d’un appareil, comme l’appareil photo, les capteurs, etc. Elles sont livrées avec leur propre kit de développement logiciel (SDK).

Application native
Source: CleverTap

Application web

Il s’agit d’applications web mobiles qui s’exécutent sur le navigateur d’un appareil et qui ressemblent presque à une application native. Elles n’interagissent pas beaucoup avec les composants de l’appareil et sont dans une certaine mesure isolées.

Application web
Source: CleverTap

Application hybride

Il s’agit d’un mélange d’applications natives et web. Elles s’exécutent comme une application native, mais une partie de l’application s’exécute dans un navigateur web intégré. Dans ce cas, une couche d’abstraction web-vers-natif aide à gérer les contrôles d’accès pertinents.

Application hybride
Source: CleverTap

Application web progressive

Elles ressemblent à des pages web classiques, mais elles offrent l’avantage supplémentaire de permettre aux développeurs de travailler hors ligne et d’accéder au matériel du dispositif mobile. Elles combinent différentes normes ouvertes disponibles sur le web pour offrir une meilleure expérience utilisateur.

Application web progressive
Source: DEV

Test de sécurité des applications mobiles

Le test de sécurité des applications mobiles doit être effectué tout au long de la phase de développement, jusqu’à sa sortie. Différents types de tests sont réalisés. Examions-les :

Test de boîte noire

Le testeur se comporte comme un véritable attaquant et explore toutes les combinaisons possibles et tous les cas d’utilisation pour les informations accessibles au public et découvrables. On l’appelle aussi “test de connaissance zéro”.

Test de boîte blanche

Exactement l’opposé du précédent, ici le testeur effectue des tests plus sophistiqués avec une connaissance des vulnérabilités, des corrections, du code source, de la documentation et des diagrammes. On l’appelle aussi “test complet de connaissance”.

Test de boîte grise

Intermédiaire entre les deux types mentionnés ci-dessus, ici le testeur reçoit certaines informations (comme des identifiants) tandis que les autres domaines sont généralement masqués.

Analyse des vulnérabilités

Ici, les testeurs recherchent les vulnérabilités dans une application. L’analyse statique implique une analyse détaillée du code source. Cela peut être fait manuellement ou automatiquement. L’analyse dynamique est plus avancée car elle est effectuée pendant l’exécution. Elle permet aux testeurs de se concentrer sur des éléments spécifiques, tels que les points d’entrée vulnérables, les fonctionnalités faibles, les failles, etc.

Analyse des vulnérabilités
Source: Zero2Infynite

Test de pénétration

Ce test est effectué à la fin ou près de la fin du développement. Il implique une planification minutieuse, allant de la préparation à la collecte d’informations et à la cartographie de l’application, jusqu’aux tests proprement dits et à la rédaction du rapport.

Architectures d’authentification des applications mobiles

L’authentification pour les applications mobiles est importante et entre en jeu lorsque l’on parle de scénarios tels que les informations d’identification de l’utilisateur (mot de passe, code PIN), les informations sensibles (SIM, générateur de mots de passe, jeton matériel), la biométrie (empreinte digitale, voix, rétine), etc. Voici quelques exigences d’authentification spécifiques :

  • L’authentification nom d’utilisateur/mot de passe doit être effectuée au niveau de l’extrémité distante.
  • Une politique de mot de passe doit être appliquée.
  • Le deuxième facteur d’authentification doit être appliqué aux applications sensibles.
  • L’utilisateur doit être informé des activités récentes de son compte.

En ce qui concerne les architectures d’authentification, deux méthodes importantes sont observées :

Authentification étatique

Un identifiant de session unique est généré pour chaque session. Pour toutes les nouvelles demandes qui arrivent, cet identifiant de session est utilisé comme référence. Ici, des identifiants de session aléatoires sont créés.

Authentification étatique
Source: Kenenth Choi – Medium.com

Authentification sans état

Toutes les informations sur un utilisateur sont stockées dans un jeton côté client qui est envoyé à un serveur. Il n’est donc pas nécessaire de maintenir un état de session côté serveur. Cela améliore la scalabilité et les performances.

Authentification sans état
Source: Kenenth Choi – Medium.com

Test de la communication réseau

Toutes les applications mobiles connectées au réseau utilisent le protocole de transfert hypertexte (HTTP) ou le protocole HTTP avec sécurité de la couche de transport (TLS) ou HTTPS pour transmettre des données entre des points de terminaison distants. C’est là que les attaques basées sur le réseau peuvent se produire. Une stratégie importante consiste à intercepter le trafic HTTP(S) en configurant un proxy système sur l’appareil mobile.

Cryptographie dans les applications mobiles

La cryptographie aide à sécuriser les données des applications mobiles en se concentrant sur la confidentialité, l’intégrité des données et l’authenticité. La confidentialité utilise le chiffrement et le déchiffrement pour sécuriser les données. L’intégrité des données garantit la cohérence des données et l’identification des abus ou de la manipulation des données. L’authenticité se concentre sur la validation des sources et des utilisateurs. Les principales méthodes utilisées pour assurer la sécurité des données sont les algorithmes de chiffrement à clé symétrique, les algorithmes de chiffrement à clé publique, la technologie de hachage, les codes d’authentification des messages, les signatures et les fonctions de dérivation de clé.

Test de la qualité du code

Étant donné que les développeurs utilisent différents langages de programmation et frameworks, la qualité du code est importante. Avec plusieurs versions et mises à jour sur le marché, tester la qualité du code aide à garantir la sécurité dès le départ. Les vulnérabilités courantes qui peuvent être examinées sont l’injection SQL, l’injection XML, les vecteurs d’attaque par injection, les failles XSS, les dépassements de tampon, entre autres.

Altérations et ingénierie inverse

Avec les attaquants devenant de plus en plus intelligents, les tests des applications mobiles sont également devenus plus sophistiqués. Désassembler les applications compilées, appliquer régulièrement des correctifs de sécurité et altérer les processus et les codes en direct sont devenus monnaie courante. L’altération consiste à modifier l’environnement ou le comportement d’une application mobile pour tester certains points d’arrêt et failles de sécurité. L’ingénierie inverse se concentre sur l’extraction d’informations spécifiques à partir d’un code source et permet ainsi d’effectuer une analyse approfondie des applications compilées. Ces deux méthodes sont importantes pour les tests de boîte noire et une sécurité renforcée.

Guides de test Android et iOS

Un guide de test pour Android et iOS couvre les principaux composants tels que les détails de la plateforme mobile, les détails sur les différentes étapes de développement du cycle de vie de l’application, les tests statiques et dynamiques, l’ingénierie inverse et l’altération, les guides de protection logicielle et des cas de test détaillés. Les développeurs et les testeurs peuvent se référer à ce guide pour développer des applications robustes, les tester en profondeur et également vérifier les éventuelles attaques telles que l’ingénierie inverse. Étant donné que plusieurs étapes de développement sont couvertes, il est possible de détecter et de corriger les problèmes de manière plus proactive afin d’obtenir une meilleure couverture. Les cas de test détaillés fournis aident également à reproduire des scénarios réels et à réfléchir comme un pirate informatique.

Approches et bonnes pratiques

La sécurité des applications mobiles est importante, mais de nombreuses options sont disponibles pour renforcer la posture de sécurité. Voici quelques-unes des meilleures pratiques :

  • Évaluation approfondie : tout test commence par une bonne compréhension de l’environnement.
  • Analyse de la qualité du code/sécurité : cela aide à se concentrer sur la sécurité en examinant la racine des problèmes.
  • Tests de pénétration : ici, des cas de test sont exécutés pour représenter les vulnérabilités réelles auxquelles les attaquants peuvent s’attaquer pour accéder aux données.
  • Tests de périphériques de bout en bout : tous les principaux périphériques et systèmes d’exploitation sont couverts ici.
  • Planification et exécution complètes : toutes les étapes, de la préparation et de l’exécution à la rédaction du rapport, à la résolution et aux nouveaux tests, sont prises en compte.

Être prêt pour l’avenir

Des technologies émergentes telles que l’Internet des objets (IoT) et l’intelligence artificielle (IA) ont élargi le champ d’action des cyberattaquants. À mesure que de plus en plus d’entreprises se connectent à Internet, le champ d’action s’élargit davantage. L’automatisation signifie que de nouveaux systèmes interagiront entre eux et accéderont aux informations en déplacement. Cette complexité et cette connectivité peuvent avoir un impact sur les niveaux de vulnérabilité. Les bots ont également fait leur apparition, ce qui signifie que les attaques seront plus rapides, plus sophistiquées et beaucoup plus difficiles à détecter et à contrôler. Il a récemment été découvert des sites de logiciels malveillants déguisés avec des certificats SSL, pouvant facilement tromper les utilisateurs en leur faisant croire qu’ils naviguent en toute sécurité. Au nom de la personnalisation, les entreprises collectent des données sur les utilisateurs, ce qui est particulièrement vrai pour les utilisateurs de mobiles qui sont toujours en déplacement pour converser et effectuer des transactions. Les entreprises doivent renforcer leur sécurité pour satisfaire leurs clients tout en offrant une expérience d’achat personnalisée. Les attaques de phishing sont également en hausse.

Mais la technologie évolue également pour faire face aux problèmes émergents. La sécurité des applications mobiles basée sur l’apprentissage automatique pourrait être un sauveur en ces temps. Elle pourrait aider à surveiller toutes les activités en temps réel et à analyser les données de l’entreprise avec une plus grande efficacité, précision et rapidité.

La protection en temps réel des applications en cours d’exécution (RASP) est également utile ici en effectuant une analyse en temps réel des applications. L’analyse avancée des menaces d’une bonne solution comme AppSealing peut garantir une meilleure couverture des vecteurs d’attaque, de sorte que des mesures appropriées puissent être prises rapidement. Cela signifie que les entreprises peuvent désormais avoir une longueur d’avance sur les attaquants.