Extensions Firefox malicieuses

 
CONTINUER À LIRE
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