Selon une étude récente, les services back-end dans le cloud sur lesquels s’appuient des milliers d’apps mobiles, dont certaines très populaires, exposent à tout vent des masses de données sensibles créées par les utilisateurs. Tel est le constat fait par des chercheurs de l'Université Technique et de l'Institut Fraunhofer SIT pour les technologies de l'information sécurisées de Darmstadt, en Allemagne, qui ont présenté leurs résultats vendredi dernier lors de la conférence sur la sécurité Black Hat Europe qui s’est tenue à Amsterdam du 10 au 13 novembre.

Leur étude s’est intéressée aux applications qui utilisent les frameworks Backend-as-a-Service (BaaS) de fournisseurs comme Facebook, Parse, CloudMine ou encore Amazon Web Services. Les frameworks BaaS tournant dans le cloud prennent en charge le stockage des bases de données, les notifications push, l'administration des utilisateurs et d'autres services que les développeurs peuvent facilement utiliser dans leurs applications. Grâce à ces frameworks, ils n’ont pas besoin d’avoir les connaissances nécessaires pour maintenir les serveurs back-end de leur application. La seule chose qu’ils ont à faire est de s’abonner à un fournisseur BaaS, d’intégrer son kit de développement logiciel (SDK) dans leurs applications, et utiliser ses services avec de simples API.

Des clefs très faciles à récupérer

C’est justement en regardant la façon dont les développeurs utilisaient les API que les chercheurs ont découvert que beaucoup d'entre eux intégraient leurs clés d'accès BaaS primaires dans leurs applications. Cette pratique est très dangereuse, parce que les applications, surtout les apps mobiles, peuvent être facilement décortiquées par ingénierie inverse pour extraire les informations d'identification et accéder aux bases de données installées dans le back-end. Pour apprécier l'ampleur du problème, les chercheurs ont mis au point un outil d'analyse statique et dynamique qui permet d’identifier le fournisseur BaaS auquel se connecte l’application et extraire les clés d'accès, même quand elles sont brouillées ou générées au moment de la mise en route de l’app. Sur plus de deux millions d'apps Android et iOS testées, les chercheurs du Fraunhofer SIT ont réussi à extraire un millier d’identifiants back-end et les noms des tables de base de données associées. Ils ont aussi remarqué que ces identifiants étaient souvent réutilisés par les développeurs dans leurs apps, si bien qu’au total, ils ont pu avoir accès à plus de 18,5 millions de données représentant 56 millions d'éléments de données.

Les chercheurs n’ont pas téléchargé ces éléments, mais ils ont pu les comptabiliser et déterminer leur type en examinant simplement les tables de base de données. Dans ces documents, ils ont trouvé des informations relatives à des accidents de voiture, des données de localisation spécifiques, des dates anniversaires, des informations de contact, des numéros de téléphone, des photos, des adresses mails valides, des données d'achats en ligne, des messages privés, des données sur la croissance des nourrissons. Ils ont également pu avoir accès à des sauvegardes complètes du serveur. Les chercheurs ont même trouvé un cheval de Troie mobile qui utilisait un service BaaS pour stocker des données et des messages SMS récupérés sur des terminaux infectés, avec les indications de commandes des attaquants et des informations sur la planification des tâches.

Des apps orphelines mais avec des données toujours sensibles

L’intégration des identifiants BaaS dans les apps présente plusieurs risques : les données peuvent être volées par une personne mal intentionnée, mais elles peuvent être aussi manipulées ou détruites. Les attaquants pourraient également utiliser les informations d'identification pour stocker des données dans ces bases de données, au détriment et à l’insu des véritables détenteurs de compte. Informés du problème depuis le mois d’avril, Google, Apple et les fournisseurs de services BaaS ont alerté les développeurs des applications concernées. Cependant, à la date du 12 novembre, les chercheurs ont constaté qu’il était toujours possible d’accéder à plus de 52 millions d'éléments de données avec les identifiants qu’ils avaient collectés.

Certaines de ces données sont vraiment dans la nature, parce que les apps qui les ont créés n’existent même plus et que leurs développeurs ont cessé de les suivre. Les fournisseurs de services ne peuvent pas non plus supprimer ces données, parce que les comptes sont toujours actifs. Cela signifie soit que les développeurs ne se soucient pas du problème, soit qu’ils ne savent pas comment le résoudre. Certains fournisseurs de services back-end, comme Amazon et Parse, permettent un contrôle d'accès plus avancé et offrent la possibilité d'authentifier les utilisateurs d’apps au niveau des services back-end et non de l'application elle-même. Mais ces contrôles sont plus difficiles à mettre en œuvre pour les développeurs.

La facilité au détriment de la sécurité

Dans certains cas, la gestion d'identité est tellement compliquée qu'elle va à l’encontre de l'objectif principal des frameworks BaaS, qui est de simplifier le travail des développeurs. Selon les chercheurs, « il n’est pas très surprenant de voir les développeurs aller vers la facilité, même si ce choix se fait au détriment de la sécurité ». Cependant, même s’il incombe aux développeurs de résoudre ce problème, ils estiment que les fournisseurs BaaS devraient améliorer leur documentation pour permettre aux créateurs d’apps qui n’ont pas les connaissances de sécurité nécessaires de comprendre comment utiliser la technologie et de connaître les risques auxquels ils exposent leurs utilisateurs s’ils ne réalisent pas ce travail correctement. Selon les chercheurs, les fournisseurs pourraient aussi obliger les développeurs à prendre des mesures quand leurs apps accèdent à leurs services avec des clefs d’accès primaires.