Aller au contenu

Qu'est-ce que la sécurité des applications mobiles et pourquoi est-ce important ?

L'objectif principal des tests de sécurité est d'identifier et d'atténuer les vulnérabilités et les faiblesses des applications et des systèmes logiciels afin de les protéger contre les menaces et les attaques. Mais qu'est-ce que la sécurité des applications mobiles et en quoi diffère-t-elle des mesures de sécurité pour les applications de bureau et web ? Il est crucial de comprendre ce concept dans le cadre de la sécurisation de vos applications mobiles.

Sachant que 66,8 % des services des entreprises sont consommés via des applications mobiles, tester la sécurité de ces applications et établir une stratégie de sécurité devient une évidence.

Bien que les entreprises puissent être tentées de couvrir leurs tests de sécurité d'applications mobiles en utilisant des outils génériques utilisés pour les applications web ou le code source, l'approche montrera rapidement ses limites en raison de la surface d'attaque unique des mobiles (Intents, URL Schemes, Permissions, Cross App Interaction, Shared Preferences...), des classes spécifiques de vulnérabilités, des caractéristiques du système d'exploitation et du nombre de frameworks disponibles pour développer des applications mobiles (Native, Flutter, Xamarin, React Native, Cordova, Ionic...). Ainsi, pour véritablement répondre à la question « Qu'est-ce que la sécurité des applications mobiles ? », nous devons avoir une compréhension approfondie de ces défis et vulnérabilités spécifiques aux mobiles.

Le test de sécurité des applications mobiles (Mobile App Security Testing - MAST) doit comprendre l'espace des applications mobiles et de la sécurité et couvrir entièrement sa surface d'attaque dans les données stockées sur l'appareil, les données transportées vers le backend et les vulnérabilités du backend. Il doit couvrir les applications mobiles natives, hybrides et web, car chaque framework a sa propre logique pour accéder au matériel et interagir avec celui-ci, ce qui peut causer un risque réel si ce n'est pas compris correctement.

Qu'est-ce que la sécurité des applications mobiles ?

C'est le processus de protection de la surface d'attaque des applications mobiles par le biais de tests complets qui prennent en compte à la fois les applications mobiles natives, hybrides et web.

Pourquoi la sécurité des applications mobiles est-elle importante ?

La sécurité des applications mobiles est cruciale car une faille de sécurité peut entraîner le vol de données, des pertes financières et nuire à la confiance des utilisateurs, ce qui peut avoir de graves conséquences pour les individus comme pour les entreprises. Il y a eu plusieurs piratages d'applications mobiles très médiatisés ces dernières années, illustrant l'importance de la sécurité des applications mobiles. L'attaque par logiciel espion sur WhatsApp (WhatsApp Spyware Attack en 2019) a permis à des attaquants d'installer un logiciel espion sur les téléphones des utilisateurs, ou encore le cas de l'application de British Airways (British Airways App en 2018) où des attaquants ont accédé aux informations personnelles et financières d'environ 380 000 utilisateurs en exploitant une vulnérabilité dans l'application mobile et le site web de la compagnie aérienne. De plus, la sécurisation des applications mobiles aide à se protéger contre les logiciels malveillants, les accès non autorisés et d'autres vulnérabilités, garantissant ainsi le maintien de l'intégrité, de la confidentialité et de la disponibilité des données des utilisateurs.

Le Task hijacking (détournement de tâche) est l'une des multiples attaques ayant eu un fort impact sur les applications mobiles en raison d'un comportement spécifique d'Android qui amène un utilisateur à divulguer des données sensibles à une application malveillante tout en interagissant avec une application normale.

Les logiciels malveillants bancaires (Banking malware) ont massivement exploité le task hijacking en 2019 (augmentation de 45 % en 2020), permettant aux attaquants d'intercepter les données sensibles des utilisateurs et les identifiants lors de sessions bancaires en ligne.

De plus, les applications mobiles dépendent fortement de dépendances tierces ; il est donc obligatoire d'analyser ces dépendances pour éviter d'affaiblir la sécurité de l'application à cause d'une dépendance vulnérable. Par exemple, Dio, l'un des packages Dart les plus utilisés, a souffert de multiples problèmes de gravité élevée (High severity), soulignant une fois de plus l'importance de ce qu'est la sécurité des applications mobiles et pourquoi elle doit être correctement gérée.

Le processus de test de sécurité des applications mobiles peut être exécuté manuellement ou via l'utilisation d'outils automatisés qui emploient une gamme diversifiée de techniques.

  • Source: datareportal.com

Comment tester la sécurité des applications mobiles ?

Test d'intrusion (Penetration testing)

Le test d'intrusion (pentesting) est un processus d'évaluation de sécurité proactif et méthodique mené par une entité tierce, souvent vers les dernières étapes du cycle de vie du développement logiciel (SDLC). Les testeurs utilisent des outils automatisés et des techniques manuelles pour identifier les vulnérabilités, les mauvaises configurations et les faiblesses de l'application cible.

Le pentesting est couramment utilisé pour répondre aux obligations réglementaires et est souvent adapté à des objectifs spécifiques dans un délai restreint.

Bien qu'efficace, c'est un processus coûteux et chronophage qui ne capture qu'une vue limitée à un instant T. La durée d'un test d'intrusion d'application mobile est généralement d'une à quatre semaines, selon la complexité de l'application, la profondeur des tests et la portée du pentest.

Les développeurs d'applications visent à publier des mises à jour sur le store de l'application toutes les 3 à 6 semaines. Réaliser des pentests à des intervalles peu fréquents ne s'aligne pas avec la vélocité des équipes de développement, et des vulnérabilités peuvent être introduites entre les périodes de pentest.

Tests automatisés de sécurité des applications mobiles

Les tests automatisés de sécurité des applications mobiles s'appuient sur divers outils pour analyser le logiciel et identifier les vulnérabilités potentielles.

Les outils automatisés s'intègrent de manière transparente dans le cycle de vie du développement logiciel (SDLC) et s'insèrent dans le pipeline d'intégration continue et de livraison continue (CI/CD).

Ces outils offrent une solution rentable, permettant à l'équipe de développement de mener des évaluations de sécurité régulières, rapides et efficaces, et de résoudre rapidement les problèmes détectés. Ils offrent une couverture complète du code de l'application et peuvent découvrir un large éventail de résultats de sécurité, garantissant une défense robuste contre les menaces potentielles.

Les tests automatisés de sécurité des applications mobiles sont évolutifs, ce qui permet aux équipes de développement gérant de nombreuses applications ou ayant une grande vélocité de développement de tester leurs modifications sans affecter leur processus de développement.

96 % des entreprises mettant en œuvre des tests de sécurité d'applications mobiles automatisés respectent leurs exigences de sécurité pour les stores ou la conformité dans les temps, et 83 % ont confirmé avoir atteint leurs objectifs de niveau de service (SLO) pour corriger les vulnérabilités de gravité élevée (high) et moyenne (medium).

*Source Gartner

Un inconvénient majeur des outils de test de sécurité des applications mobiles automatisés est la quantité de faux positifs qu'ils signalent. C'est pourquoi la vérification du ratio de faux positifs et de la politique est importante pour éviter de submerger les développeurs avec des résultats inutiles.

Bug Bounty

Les tests de sécurité d'applications externalisés (programmes de bug bounty) présentent une voie supplémentaire pour les tests de sécurité des applications mobiles.

Les programmes de bug bounty peuvent ouvrir les tests de sécurité à divers testeurs ayant des niveaux d'expérience différents. En fonction de la popularité et de la réputation du programme, la couverture peut être exhaustive et continue puisqu'elle reste active pendant toute la durée du programme, et le testeur peut avoir différentes approches pour identifier les failles de sécurité.

Les programmes de bug bounty peuvent servir de compléments précieux aux protocoles de sécurité existants, mais ne doivent pas servir de remplacements purs et simples à un processus de sécurité interne, car le test de la sécurité de l'application doit commencer dès la phase de conception et se poursuivre jusqu'à la publication ; sinon, le processus de correction deviendra inefficace, et les attaquants pourront profiter du manque de tests de sécurité et exploiter ces vulnérabilités.

Un défi important est le potentiel afflux de rapports incorrects ou de mauvaise qualité de la part des participants. Cela peut entraîner d'importants échanges de communication entre l'organisation et les chercheurs, consommant ainsi du temps et des ressources. Trier de nombreux faux positifs ou des rapports vagues peut être frustrant et peut retarder la résolution de problèmes de sécurité légitimes.

Techniques de test de sécurité des applications mobiles

Les tests de sécurité des applications mobiles reposent sur diverses techniques, souvent classées en analyse statique, analyse dynamique, analyse interactive/comportementale et tests d'API/Backend, étant entendu que ces techniques ne s'excluent pas mutuellement et peuvent se chevaucher.

Analyse statique

L'analyse statique constitue une méthodologie de test qui analyse le code source ou binaire de l'application et les ressources supplémentaires pour identifier des problèmes de sécurité particuliers.

Ceci est accompli grâce à diverses techniques d'analyse capables d'effectuer un examen automatisé sans exécuter le code de l'application :

  • Configuration Checks (Vérifications de configuration) : Vérifications de configuration pour les paramètres non sécurisés. Ces paramètres incluent les paramètres de la plateforme tels que AndroidManifest.xml, les paramètres Info.plist, les paramètres du Cordova Framework, la configuration du réseau, etc.
  • 3rd Party Dependencies (Dépendances tierces) : Fingerprint des dépendances de l'application pour identifier celles présentant des vulnérabilités connues. Les dépendances peuvent être déclarées directement en tant que plugin ou compilées dans l'application. La dépendance OpenSSL est un cas d'utilisation courant dans les applications mobiles où elle peut être livrée avec une version vulnérable.
  • Hardcoded Secrets (Secrets codés en dur) : Extrayez toutes les informations sensibles, telles que les mots de passe, les clés d'API (API keys) ou les clés cryptographiques, qui sont directement intégrées dans le code source d'une application mobile. Les clés de Cloud provider (fournisseur de cloud) ou les certificats privés SSH constituent une vulnérabilité critique courante dans les applications mobiles.
  • Taint Analysis (Analyse de teinte) : utilisée pour identifier et suivre le flux d'informations sensibles (teintes) dans le code d'une application mobile et ses interactions avec des entités externes telles que les entrées de l'utilisateur, les ressources système ou les communications réseau. Cette analyse est essentielle pour identifier les vulnérabilités de sécurité potentielles liées aux fuites de données, aux attaques par injection ou à la mauvaise manipulation des données sensibles.

Analyse dynamique

L'analyse dynamique est une approche de test qui surveille le comportement de l'application sur un appareil réel ou un émulateur/simulateur/VM. Cette méthode s'avère particulièrement précieuse pour découvrir des vulnérabilités qui se manifestent exclusivement lorsque l'application est en cours d'exécution, par exemple lors d'interactions entre l'application et un serveur. Pendant que l'application est en cours d'exécution, l'analyse dynamique surveille toutes les interactions avec le système de fichiers (stockage, base de données), les communications inter-processus (IPC), les accès à la mémoire et le réseau pour identifier les failles de sécurité concernant les données sensibles, la gestion de session, l'authentification, le processus d'autorisation et l'analyse de la transmission de données. Selon les statistiques de Google, 20 % des applications mobiles communiquent encore avec un trafic en texte clair (clear text traffic), et 41 % ont une configuration TLS incorrecte ou non sécurisée.

Analyse interactive/comportementale

En plus de l'analyse dynamique, les tests comportementaux évaluent le comportement de l'application pendant l'exécution active des tests. Ils utilisent l'instrumentation pour suivre et analyser la façon dont les données circulent dans les applications et signalent tous les schémas dangereux qui appellent un module vulnérable ou utilisent un argument dangereux.

Il existe plusieurs techniques pour l'instrumentation des applications mobiles, et il appartient au testeur de sécurité des applications mobiles de choisir la bonne méthode pour instrumenter l'application en fonction de son framework (OS natif vs JavaScript vs .NET vs Flutter).

L'interaction avec l'appareil peut être manuelle ou entièrement automatisée, bien que l'automatisation soit préférée, et les tests doivent maximiser la couverture de l'application pour valider le maximum de chemins dans le code.

Analyse API/Backend

L'analyse de l'API/Backend est essentielle aux tests de sécurité des applications mobiles. Elle se concentre sur le scan des API, des backends et des communications externes. Cette analyse évalue la sécurité de l'échange de données et des serveurs backend communiquant avec l'appareil. L'objectif de l'analyse du backend :

  • Vérifier les failles de sécurité sur les serveurs backend. De nombreuses entreprises peuvent s'appuyer sur d'autres outils pour évaluer cette partie, car le backend est souvent commun entre les applications mobiles et web. Cependant, il est important de le valider du point de vue de l'appareil car certaines hypothèses peuvent être appliquées par le navigateur web mais pas au sein de l'application mobile. Par exemple, sur un site web accessible via un navigateur web, la politique de même origine (same-origin policy) est appliquée, ce qui limite le contenu web pour interagir uniquement avec les serveurs backend du même domaine. Cela signifie que le JavaScript s'exécutant dans une page web ne peut pas accéder directement ou manipuler les données d'un domaine différent. La politique fournit une couche de sécurité pour prévenir les attaques de cross-site scripting (XSS) et les violations de données. Cependant, dans le contexte des applications mobiles, cette hypothèse ne s'applique pas toujours. Les applications mobiles disposent de moyens plus flexibles pour partager et accéder aux données. Par exemple, elles peuvent utiliser des interfaces JavaScript natives, des schémas d'URL personnalisés (custom URL schemes) ou des API spécifiques qui leur permettent de contourner les restrictions de la same-origin policy. Cette flexibilité peut être avantageuse pour les fonctionnalités de l'application, mais elle introduit également des risques potentiels pour la sécurité.

  • Vérifier la confidentialité des données envoyées depuis l'application, car les applications dépendent fortement de tiers pour la publicité, l'analytique (analytics), le monitoring, etc. Les données extraites de l'appareil de l'utilisateur peuvent être trop intrusives et pourraient être illégales. Un cas d'utilisation courant est celui des bibliothèques d'analytics qui collectent les ID d'appareils (device IDs), les localisations des appareils et les IP, qui sont considérés comme des Informations Personnellement Identifiables (PII) et que plusieurs législations sur la confidentialité protègent contre ces pratiques.

Types d'outils pour les tests automatisés de sécurité des applications mobiles

Outils de test Open Source

Les outils open source offrent un point de départ précieux pour initier les tests de sécurité des applications mobiles. Leur rentabilité, leur transparence et leur développement collaboratif permettent aux organisations de soutenir efficacement leurs défenses numériques. Ces outils, entretenus par une communauté mondiale de profils en cybersécurité, offrent polyvalence et personnalisation, couvrant un large éventail de besoins en matière de tests de sécurité.

Bien que les outils de test de sécurité open source présentent de nombreux avantages, il est essentiel de reconnaître les inconvénients potentiels. Ceux-ci peuvent inclure :

  • Support limité : Les outils open source peuvent ne pas offrir le même niveau de support client que leurs homologues commerciaux. Les utilisateurs dépendent souvent des forums communautaires et de la documentation pour obtenir de l'aide.
  • Courbe d'apprentissage abrupte : Certains outils open source peuvent être complexes à configurer et à utiliser, nécessitant une courbe d'apprentissage importante pour les utilisateurs.
  • Manque de fonctionnalités d'entreprise : Les outils commerciaux peuvent offrir des fonctionnalités avancées et des options d'intégration conçues pour les environnements d'entreprise, ce que les outils open source pourraient ne pas fournir.
  • Qualité variable : La qualité des outils open source peut varier considérablement, et tous ne conviennent pas aux évaluations de sécurité critiques.
  • Défis de maintenance : Les organisations doivent s'assurer que les outils open source sont régulièrement mis à jour et corrigés pour remédier aux vulnérabilités de sécurité.
  • Travail manuel : Les outils open source de test de sécurité des applications mobiles ont tendance à nécessiter beaucoup de travail manuel pour préparer l'environnement de test et l'appareil et pour exécuter les tests.
  • Problèmes juridiques et de licence : Les utilisateurs doivent connaître les conditions de licence et les considérations juridiques potentielles lors de l'utilisation d'outils open source.

Outils d'analyse du code source

De nombreuses entreprises s'appuient sur l'analyse du code source (SAST) pour couvrir les tests de sécurité de leurs applications mobiles. L'outil d'analyse du code source fournit un examen approfondi et complet du code source de l'application, permettant la détection précoce des vulnérabilités potentielles et des faiblesses de sécurité. Ils peuvent identifier des problèmes tels que le stockage de données non sécurisé (insecure data storage), la validation d'entrée incorrecte (improper input validation) et les mécanismes d'authentification faibles, aidant les développeurs à résoudre ces problèmes avant de déployer l'application. De plus, les outils d'analyse du code source s'intègrent souvent aux environnements de développement, ce qui permet aux développeurs d'incorporer facilement des contrôles de sécurité dans leur workflow. Cependant, ces outils peuvent ne pas détecter toutes les vulnérabilités, en particulier celles liées aux comportements d'exécution (runtime behaviors) ou aux dépendances tierces. Pour maximiser les avantages des outils d'analyse du code source, les organisations doivent les combiner avec d'autres techniques de test, telles que l'analyse dynamique et les tests d'analyse d'API, pour des tests de sécurité d'applications mobiles complets.

Outils de test de sécurité spécifiques aux applications mobiles

Pour couvrir la surface d'attaque unique des applications mobiles et assurer la prise en charge de l'OS et des caractéristiques du framework. Il est recommandé d'opter pour un scanner de sécurité spécialisé pour applications mobiles qui exécute les trois principaux types d'analyse sur l'application pendant son cycle de vie de développement et de publication. Les scanners de sécurité d'applications mobiles offrent une interface intuitive accessible à la fois aux experts en sécurité et aux développeurs. Ils peuvent analyser rapidement les applications mobiles à la recherche de diverses vulnérabilités connues, aidant ainsi les organisations à identifier et à corriger efficacement les problèmes. Ils offrent une intégration transparente avec les pipelines CI/CD pour réduire les frictions d'utilisation. De plus, ils fournissent généralement des mises à jour régulières pour faire face aux menaces émergentes, gardant les applications protégées contre l'évolution des risques de sécurité. Cependant, les scanners peuvent ne pas découvrir de vulnérabilités uniques ou personnalisées spécifiques à une application, et ils peuvent produire des faux négatifs, manquant ainsi certains problèmes de sécurité. Le coût de ces outils peut également être un inconvénient, en particulier pour les petites organisations.

Comment Ostorlab peut-il vous aider à mettre en œuvre une méthodologie efficace de test de sécurité des applications mobiles ?

Ostorlab peut jouer un rôle central dans la mise en œuvre d'une méthodologie efficace de Mobile Application Security Testing en proposant une suite complète de fonctionnalités et de services adaptés aux besoins uniques de la sécurité des applications mobiles.

  • Spécialisation dans la sécurité des applications mobiles : Ostorlab se spécialise dans la sécurité des applications mobiles, en se concentrant sur les défis des plateformes mobiles. Cette spécialisation garantit que les fonctionnalités et les services sont finement ajustés pour faire face aux menaces axées sur les mobiles.

  • Tests de sécurité automatisés : Ostorlab fournit des capacités de tests de sécurité automatisés, permettant aux organisations d'intégrer de manière transparente les évaluations de sécurité dans leurs pipelines de développement. Cette automatisation garantit que les contrôles de sécurité sont appliqués de manière cohérente tout au long du SDLC.

  • Informations rapides et exploitables : Les outils d'Ostorlab offrent une évaluation rapide de la sécurité des applications mobiles, fournissant des informations et des recommandations exploitables. Cette rapidité et cette clarté permettent aux équipes de développement d'identifier et de résoudre rapidement les vulnérabilités de sécurité.

  • Intégration au SDLC : Ostorlab facilite l'intégration directe au SDLC, en veillant à ce que les tests de sécurité deviennent une partie intégrante du processus de développement. Cette intégration minimise les perturbations des workflows des développeurs.

  • Surveillance continue : Ostorlab permet une surveillance continue du profil de sécurité d'une application. Cette capacité permet aux équipes de suivre l'évolution du statut de sécurité entre les différents builds, en localisant et en corrigeant rapidement les vulnérabilités introduites pendant le développement.

  • Couverture exhaustive : Les solutions d'Ostorlab couvrent un large éventail de techniques de tests de sécurité, assurant un examen approfondi des applications mobiles à la recherche de vulnérabilités potentielles.

  • Facilité d'utilisation : L'interface et les outils conviviaux d'Ostorlab les rendent accessibles aux experts en sécurité et aux développeurs, favorisant la collaboration et des tests de sécurité efficaces.

  • Support de haute qualité : L'équipe de support d'Ostorlab est disponible pour aider, corriger et conseiller pour tous les problèmes et demandes que les utilisateurs peuvent rencontrer pendant n'importe quelle phase de développement de l'application mobile.

En tirant parti de l'expertise et des outils d'Ostorlab, les organisations peuvent établir une méthodologie robuste de Mobile Application Security Testing qui protège leurs applications mobiles contre l'évolution des menaces tout en s'intégrant de manière transparente à leurs processus de développement.