Récemment, l’Open Worldwide Application Security Project (OWASP) a mis à jour pour la première fois depuis 2016 ses 10 principaux risques pour les applications mobiles. Le risque de sécurité en tête cette fois-ci ? « Utilisation incorrecte des informations d’identification. »
Il s’agit d’un signal d’alarme pour les fournisseurs d’applications mobiles concernant le danger des informations d’identification codées en dur et de l’hygiène générale des secrets.
La mauvaise gestion des secrets que votre application utilise, en particulier dans les applications mobiles, peut entraîner des violations de sécurité dévastatrices. Prenons un examen plus attentif de cet aspect prioritaire pour sécuriser nos applications et voyons ce que nous pouvons faire ensemble pour aborder ces préoccupations.
L’augmentation de la menace de mauvaise gestion des secrets
L’utilisation incorrecte des informations d’identification se produit lorsque des secrets tels que des mots de passe ou des jetons ne sont pas correctement sécurisés, les rendant vulnérables au vol par des attaquants. Les applications mobiles, en particulier, sont tristement célèbres pour la divulgation de secrets. Selon les recherches de CyberNews, plus de 50% des applications mobiles sur des plateformes comme le Google Play Store contiennent des secrets codés en dur, ce qui signifie que ces informations sensibles peuvent facilement être découvertes par des acteurs malveillants.
Si nous examinons la définition fournie par l’OWASP, nous comprenons rapidement pourquoi ce risque est particulièrement préoccupant:
Lorsque les secrets sont exposés, les attaquants peuvent les utiliser pour accéder de manière non autorisée à des services, des données, voire à des systèmes entiers. Cela fait de la gestion des secrets une préoccupation primordiale pour les développeurs d’applications et les équipes de sécurité.
Pourquoi les Secrets Sont la Cible Principale
Les secrets sont des cibles attrayantes pour les attaquants car ils donnent un accès direct aux systèmes critiques. Contrairement à d’autres vulnérabilités qui nécessitent une exploitation supplémentaire, une fois qu’un attaquant obtient l’accès à une clé d’API ou un mot de passe, il a souvent un chemin clair vers des ressources précieuses.
Par exemple, les clés d’API codées en dur dans les applications mobiles peuvent être extraites à l’aide d’outils d’analyse statique et utilisées pour effectuer des requêtes d’API non autorisées. Cela compromet non seulement les données des utilisateurs, mais peut également entraîner des pertes financières, notamment si ces clés sont liées à des services qui facturent en fonction de l’utilisation.
La Confidentialité Côté Client Est Difficile
Un point clé dans la compréhension de la gestion des secrets est que la confidentialité côté client est pratiquement impossible. Peu importe à quel point les secrets sont obscurcis ou chiffrés dans une application mobile, les attaquants disposant de suffisamment de ressources peuvent rétro-ingénier l’application et les récupérer. Cela est dû au fait que les secrets doivent être disponibles à un moment donné dans la mémoire de l’application pour être utilisés. À travers l’analyse dynamique, les attaquants peuvent récupérer ces secrets et les exploiter.
Par conséquent, la seule manière sûre de gérer les secrets est de les garder entièrement hors du côté client. Au lieu d’intégrer des clés d’API ou des identifiants dans l’application, les développeurs devraient déplacer ces informations sensibles vers le backend, où ils ont plus de contrôle sur l’accès et la sécurité.
Meilleures Pratiques pour la Gestion des Secrets
Pour répondre au défi de la fuite des secrets, les équipes de développement doivent mettre en œuvre toute une série de bonnes pratiques.
1. Ne jamais intégrer les secrets directement dans le code
Les secrets ne doivent jamais être stockés directement dans le code de l’application. Cela inclut les clés API, les jetons d’authentification et tout autre donnée sensible. L’intégration des secrets dans le code est l’un des moyens les plus courants de fuite et peut entraîner des violations de sécurité importantes.
2. Utiliser des API de stockage sécurisé
Pour les secrets des utilisateurs (par exemple, les mots de passe, les jetons), les développeurs devraient utiliser des mécanismes de stockage sécurisé fournis par les systèmes d’exploitation mobiles. Par exemple, iOS propose le trousseau et Android dispose du Keystore. Ces API permettent un stockage sécurisé et un contrôle d’accès des données sensibles sur l’appareil.
3. Déplacer les secrets vers le backend
Au lieu de gérer les secrets côté client, les applications mobiles devraient utiliser une logique côté serveur pour gérer les clés API et autres données sensibles. Placer ces opérations sur le backend réduit considérablement le risque de fuite des secrets.
4. Faire tourner et invalider régulièrement les secrets
Même avec une gestion appropriée des secrets, ces derniers devraient être régulièrement renouvelés et les clés compromises invalidées immédiatement. Cela garantit que si un attaquant parvient à obtenir un secret, il ne peut pas l’utiliser indéfiniment.
5. Épinglage de certificat
Lorsque des secrets sont envoyés à l’application au moment de l’exécution, les développeurs devraient utiliser l’épinglage de certificat pour garantir que la communication est sécurisée. Cela ajoute une couche de protection supplémentaire en vérifiant l’identité du serveur lors de la connexion.
6. Mettez en œuvre la détection des secrets à travers le cycle de vie du développement
Gérer les secrets dans le cycle de vie du développement implique inévitablement des erreurs et des fuites à un moment donné. L’OWASP souligne la nécessité d’un « processus complet de test de sécurité« . Il est nécessaire de mettre en place plusieurs couches de détection aux étapes de la validation, de la publication et de la construction, et de permettre une remédiation simplifiée en cas d’incident.
Il est crucial de garder à l’esprit qu’un secret codé en dur n’a pas besoin d’atteindre la production pour constituer une vulnérabilité à haut impact.
Les conséquences des secrets divulgués
Lorsque des secrets sont divulgués, les conséquences peuvent être graves. Les attaquants peuvent utiliser des identifiants exposés pour accéder à des données sensibles, manipuler la logique métier, voire prendre le contrôle de systèmes entiers. Par exemple, si une clé API liée à un système de paiement est divulguée, les attaquants pourraient initier des transactions frauduleuses, entraînant des pertes financières tant pour l’entreprise que pour ses clients.
“Adversaries can exploit vulnerabilities in both hardcoded credentials and improper credential usage. Once these vulnerabilities are identified, an attacker can use hardcoded credentials to gain unauthorized access to sensitive functionalities of the mobile app. They can also misuse credentials, for instance, by gaining access through improperly validated or stored credentials, thereby bypassing the need for legitimate access.”
De plus, les secrets divulgués peuvent compromettre l’intégrité d’une application mobile et entraîner des dommages juridiques et de réputation coûteux. Par exemple, si une application de santé divulgue des clés API permettant l’accès aux données des patients, cela pourrait entraîner des amendes réglementaires importantes et éroder la confiance des clients.
Outils de détection des secrets
Pour aider à résoudre le problème des fuites de secrets, les outils de détection des secrets sont devenus essentiels pour le développement d’applications modernes. Ces outils analysent les dépôts de code, les pipelines CI/CD et les environnements de production à la recherche de secrets exposés, aidant les équipes à identifier les vulnérabilités avant qu’elles ne soient exploitées.
Ces outils et plateformes permettent de surveiller en temps réel les modifications de code, garantissant que les secrets ne sont pas accidentellement codés en dur lors du processus de développement. En intégrant de tels outils dans le cycle de développement, les organisations peuvent considérablement réduire le risque de fuite de secrets.
La sécurité des secrets est un parcours que nous parcourons tous
La gestion des secrets n’est pas seulement une question technique ; c’est un défi de sécurité critique qui peut avoir des conséquences importantes s’il n’est pas traité correctement. Les organisations peuvent protéger leurs données sensibles et réduire la probabilité de violations coûteuses en comprenant les risques liés à une utilisation inappropriée des identifiants, en mettant en œuvre les meilleures pratiques pour sécuriser les secrets et en utilisant des outils conçus pour détecter les fuites.
Alors que les cyberattaques et les violations continuent de faire la une des journaux, sécuriser les secrets est la stratégie protectrice la plus essentielle pour maintenir les organisations et les systèmes en sécurité. Heureusement, les bénévoles de l’OWASP sont là pour nous aider à suivre l’évolution constante du paysage de la cybersécurité.
Référence
- Top 10 Risques pour les Applications Mobiles, Projet de Sécurité Applicative Ouvert Mondial (OWASP)
Source:
https://dzone.com/articles/secrets-security-important-issue-mobile-apps