Failles de longue date dans des applications mobiles Android
La plupart des utilisateurs mobiles s’inquiètent des vulnérabilités connues du système d’exploitation de leurs appareils, qui peuvent fournir à un pirate un contrôle total sur leurs téléphones mobiles, ainsi que des vulnérabilités zero-day qui n’ont pas encore été corrigées par les éditeurs de logiciels. On a souvent l’impression que dès qu’une vulnérabilité est découverte dans un composant logiciel, elle est immédiatement corrigée. Par conséquent, en maintenant à jour les versions du système d’exploitation mobile et de toutes les applications, vous pouvez sécuriser votre appareil mobile. Une société spécialisée dans la cybersécurité a cependant démontré que même les vulnérabilités corrigées depuis longtemps peuvent revêtir une importance capitale, car du code obsolète peut se retrouver même dans les applications les plus populaires.
Les applications mobiles populaires utilisent généralement des dizaines de composants réutilisables écrits dans un langage de bas niveau tel que le langage C. Ces composants, appelés bibliothèques natives, sont souvent dérivés de projets open source ou incorporent des fragments de code issus de projets open source. Lorsqu’une vulnérabilité est découverte et corrigée dans un projet open source, ses responsables n’ont généralement aucun contrôle sur les bibliothèques natives susceptibles d’être affectées par la vulnérabilité, ni sur les applications utilisant ces bibliothèques natives. C’est ainsi qu’une application peut continuer à utiliser des bibliothèques obsolètes même des années après la découverte d’une vulnérabilité. Il peut sembler un peu exagéré de déclarer que l’application est vulnérable, car son utilisation risque de ne jamais activer le code de la bibliothèque concernée, mais cela mérite certainement une enquête approfondie de la part des responsables de l’application. C’est un peu si vous fabriquiez un site web immobilier comme celui d’Alfa Concept et que vous vous retrouviez avec un porte d’accès accessible en raison d’un plug-in obsolète, oublié… mais prêt à être exploité par le malveillant qui connaîtrait le « tour » de passe-passe.
Vulnérabilité du 3ème age !
Pour vérifier notre hypothèse selon laquelle des vulnérabilités connues depuis longtemps pourraient persister même dans les applications récemment publiées sur Google Play, nous les avons analysées pour y rechercher des schémas connus associés à des versions vulnérables de code open source. Les tableaux suivants résument nos résultats, en date de juin 2019, concernant trois vulnérabilités de gravité critique (exécution de code arbitraire) de 2014, 2015 et 2016. La liste comprend des centaines d’applications Android populaires, notamment Yahoo Browser, Facebook, Instagram et WeChat.
Une vulnérabilité CVE-2016-3062 supplémentaire a été identifiée durant nos tests de l’application Instagram (com.instagram.android). Lors d’une correspondance avec Instagram, nous avons été informés que
Deux correctifs différents ont été créés par erreur pour ce problème : un pour FFmpeg il y a 7 ans (qui n’était pas un CVE) et un pour libav il y a 3 ans (qui était un CVE), puis il semble que FFmpeg ait intégré le second correctif de libav, qui comprend donc les deux correctifs, alors que l’un ou l’autre suffirait.
Il est important de noter, comme indiqué précédemment, que notre étude portait principalement sur l’état de la sécurité des applications sur Google Play et non sur des vulnérabilités spécifiques dans des applications spécifiques. Ceci s’applique également à l’exemple Instagram mentionné ci-dessus.
Corrigées… mais …
Trois vulnérabilités seulement, toutes corrigées il y a plus de deux ans, rendent des centaines d’applications potentiellement vulnérables à une exécution de code à distance. Imaginez le nombre d’applications populaires qu’un pirate pourrait cibler s’il recherchait une centaine de vulnérabilités connues dans Google Play.
La démo suivante montre l’exemplaire de fichier vidéo du rapport CVE-2016-3062 d’origine provoquant le crash de la dernière version de l’application VivaVideo (com.quvideo.xiaoying, avec plus de 100 millions de téléchargements).
En conclusion, si vous disposez d’un appareil mobile, vous savez à quel point il est important de maintenir à jour le système d’exploitation et toutes les applications installées. Il est choquant de constater que ces précautions ne sont d’aucune aide lorsque les auteurs d’applications négligent d’intégrer des correctifs de sécurité dans les composants courants qu’ils utilisent. Effectuer toutes les mises à jour de sécurité de tous les composants externes d’une application mobile sophistiquée est une tâche fastidieuse, et il n’est pas surprenant que peu de développeurs soient disposés à le faire. Les app stores mobiles et les chercheurs en sécurité analysent les applications de manière proactive à la recherche de logiciels malveillants, mais accordent moins d’attention aux vulnérabilités critiques connues de longue date. Malheureusement, cela signifie que l’utilisateur final ne peut pas faire grand-chose pour protéger son appareil mobile. (Une étude menée par : Artyom Skrobov, Slava Makkaveev de chez Check Point).
Bon article!
Les applications développées pour IOS, ne fonctionnent-elles pas de la même façon (utilisations de bibliothèques) et par conséquent seraient potentiellement soumises aux mêmes risques ?
La gestion des dépendances dans un projet reste compliqué.
Certains langages ont de bon gestionnaire de dépendances et des outils permettant la vérification des vulnérabilités connues dans les dépendances utilisées. Mais pour certains langages (C, C++, Java…) il faut tout faire à la main.