Extensions Firefox malicieuses
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Extensions Firefox malicieuses Philippe Beaucamps, Daniel Reynaud Loria - Nancy, France 5 juin 2008 L’objet de cet article est d’avertir les utilisateurs de Mozilla Firefox sur les risques liés à l’usage des extensions et notamment, que les extensions Fire- fox sont nettement plus dangereuses que les contrôles ActiveX sous Internet Explorer, que chacun s’accorde à décrier tout en restant neutre à propos des extensions sous Firefox. Il faut également noter que ce danger est indépendant de la plateforme : il concerne autant Microsoft Windows que Mac OS et Linux, pour peu que Firefox soit utilisé. Enfin, nous considérons le cas de Firefox, mais toute application Mozilla utilisant des extensions est en réalité concernée, comme Thunderbird. 1 Introduction Les extensions sont l’équivalent des contrôles ActiveX et des Browser Helper Objects (BHO) sous Microsoft Internet Explorer : elles permettent d’interagir à différents niveaux avec le navigateur et de contrôler et modifier son comporte- ment. Elles se décomposent en : • Extensions classiques • Language Packs • Thèmes Elles ont par ailleurs les caractéristiques suivantes : • Elles peuvent être codées en langage de script (Javascript), en langage de haut niveau (Java, Python) ou en langage de bas niveau (C/C++). • Elles peuvent contenir des libraires dynamiques natives (DLL sous Win- dows) et appeler les fonctions qu’elles exposent, mais aussi contenir des exécutables et les lancer. • Elles sont la plupart du temps cross-platform (seul l’usage de librairies peut éventuellement, mais pas nécessairement, les rendre dépendantes d’une plateforme). 1
L’installation d’une extension peut se faire par l’un des moyens suivants : • À partir du navigateur, dans le gestionnaire d’extensions, ou bien sur une page, automatiquement (dans le cas de pages malicieuses, notamment) ou en cliquant sur un lien ; • Par un programme extérieur (un dropper), i.e. à l’insu de l’utilisateur : l’extension est alors installé dans le répertoire d’extensions par défaut (il faut généralement des droits administrateur) ou dans les différents réper- toires de profil de l’utilisateur. Ces mécanismes d’infection sont donc en tous points similaires au cas de con- trôles ActiveX sous MSIE. 2 Mécanismes de furtivité Plusieurs mécanismes sont à la disposition d’une extension malicieuse, permet- tant de cacher sa présence : 2.1 Gestionnaire d’extensions Il existe plusieurs méthodes permettant à une extension de disparaître du ges- tionnaire d’extensions : • Si elle est installée dans le répertoire d’extensions du système, il existe une propriété hidden à activer dans le manifeste d’installation de l’extension install.rdf ; • Dans un répertoire de profil, le fichier extensions.rdf est un document XML contenant la liste des extensions installées à afficher dans le gestion- naire d’extensions ; • L’extension peut modifier le code du gestionnaire d’extensions (overlay), et se cacher en modifiant simplement le style CSS du gestionnaire ; • ... 2.2 Protection contre la détection L’extension peut évidemment muter son propre code et se réinstaller avec ce nouveau code, devenant ainsi polymorphe, ou bien cette extension peut avoir été mutée avant infection initiale. En plus de ces capacités de polymorphisme, une extension peut également utiliser des techniques de packing, en profitant notamment des API proposées par Firefox. Toutes les techniques utilisées par les malware actuels sont toujours valides pour les extensions Firefox, comme elles le sont pour les contrôles ActiveX, etc. 2
2.3 Virulence Comme indiqué, une extension peut se répliquer, en infectant notamment d’autres extensions du système ou du profil de l’utilisateur. En particulier, lors de la pre- mière infection, l’extension peut tout de suite infecter une extension existante et se supprimer aussitôt du répertoire d’extensions. De plus, Firefox propose un mécanisme de signature des extensions mais la signature n’est vérifiée qu’au moment de l’installation ou de la mise à jour de l’extension : elle peut ensuite être modifiée sans générer d’alerte. Typiquement, une extension malicieuse infectera plusieurs extensions pour résister à toute suppression ou mise à jour. 2.4 Installation Comme indiqué en introduction, une extension peut être installée silencieuse- ment par du code natif. Sous Firefox 2, l’utilisateur n’en est pas informé. Sous Firefox 3, le gestionnaire d’extensions est ouvert au lancement de Firefox et indique “1 extension installée” sans plus de détails. 2.5 Activité malicieuse L’un des principaux défis des malware est de masquer leur activité dans le système et de passer les frontières des parefeux et des antivirus. Dans le cas des extensions Firefox, l’activité malicieuse est intégralement interprétée comme faisant partie de l’activité de Firefox : la fuite de données confidentielles sera interprétée comme Firefox contactant un serveur Web avec des paramètres de requête. De plus, l’extension malicieuse peut étendre son activité dans le temps. 3 Interfaces de programmation Firefox met à la disposition une couche API appelée XPCOM (Cross Plat- form Component Object Model). Cette API est relativement puissante et a l’avantage d’être cross-platform. Elle peut notamment être appelée directement depuis du code Javascript. Le code source de Firefox contient plusieurs exem- ples d’utilisation de cette API. Par exemple, il suffit juste de quelques lignes de Javascript pour ouvrir un port en écoute sur le système. Les fonctionnalités accessibles se répartissent en deux types : celles perme- ttant d’interagir avec Firefox lui-même et celles permettant d’interagir avec le système. Notamment, elles permettent : • Un accès en lecture et écriture au Document Object Model (DOM) des doc- uments ouverts par Firefox. L’interaction peut avoir lieu avant l’affichage du document, durant l’interaction avec l’utilisateur, ou après cette inter- action (pour modifier par exemple des champs, ou en extirper le contenu). Ainsi, une extension peut faire du keylogging en détournant les mots de 3
passe et autres informations confidentielles entrées par l’utilisateur dans les formulaires. Elle peut altérer les données de l’utilisateur. Elle peut aussi modifier son expérience, comme certains malwares bancaires sous IE. • Les mots de passe peuvent également être accédés en clair. • L’extension peut lire et modifier des fichiers du système, dès lors que l’utilisateur a les droits suffisants. Elle peut accéder au réseau (ouver- ture de sockets client ou serveur ). Par exemple, une extension malicieuse peut récupérer les listes de contact de Thunderbird, Outlook et des web- mails accédés par l’utilisateur, et s’envoyer en pièce jointe ou avec un lien malicieux, ou bien leur envoyer des spams, etc. • L’extension peut appeler des librairies natives du système et accéder ainsi à n’importe quelle fonctionnalité disponible pour les applications utilisa- teur. 4 Conclusion En résumé, le danger des extensions Firefox se mesure par les considérations suivantes : • Simplicité du Javascript, accessible à tout le monde et permettant de créer des extensions malicieuses sans avoir besoin d’expertise ; • Ubiquité des navigateurs : d’une part, ils représentent une partie con- séquente de l’activité d’un utilisateur, d’autre part, même non utilisés, ils restent souvent ouvert en tâche de fond ; • Usage des navigateurs pour tous types d’applications, critiques no- tamment : gestion de comptes bancaires, virements bancaires, mails, achats en ligne, etc. • Indépendance de plateforme : une extension malicieuse développée sous Firefox est automatiquement fonctionnelle sur toutes les plateformes supportées par Firefox ; • Politique de sécurité inexistante : une fois l’extension installée, elle bénéficie d’une “full trust” et aucun mécanisme de sécurité ne la contrôle. La découverte récente d’un language pack compromis a d’ailleurs initié une prise de conscience, mais sans plus de réactions. Ces fonctionnalités définissent en quelque sorte une plateforme de développe- ment de malware, ayant l’avantage de la simplicité, de l’indépendance de plate- forme et de la furtivité puisque l’activité malicieuse est imputée à Firefox. Notons toutefois qu’il ne s’agit pas d’une faille de Firefox mais d’une fonc- tionnalité dont l’impact sur la sécurité est conséquent, notamment en raison de 4
l’inexistence d’un modèle de sécurité approprié. Bien que ce problème ait déjà été évoqué et étudié de manière approfondie dans un article de fin 2007 (Louw, Lim, Venkatakrishnan - Enhancing web browser security against malware ex- tensions), il faudra sans doute attendre un électrochoc, lié à une prolifération soudaine d’extensions malicieuses ou à la médiatisation d’une extension à impact critique, pour assister à une réelle prise de conscience. 5
Vous pouvez aussi lire