Une faille d'exécution de commande découverte sur le serveur de messagerie électronique Exim

Date de publication :

Une équipe en charge du développement de Qualys a découvert une vulnérabilité critique sur le serveur de messagerie électronique Exim. Un attaquant local ou un attaquant à distance non authentifié avec de faibles privilèges pourrait l’exploiter et exécuter des commandes arbitraires avec les privilèges d'un administrateur. Cette attaque serait simple à mettre en œuvre et l'impact estimé sur la confidentialité et l'intégrité des données serait important.

Exim est un serveur de messagerie électronique libre utilisé sur de nombreux systèmes de type UNIX. Il est très déployé dans des environnements où il est nécessaire de traiter plusieurs milliers de messages chaque heure. Il a été conçu pour délivrer les messages sans les mettre en file d'attente.

Une recherche sur BinaryEdge (un service qui indexe les périphériques connectés à Internet) a montré que plus de 4,7 millions de machines utilisent une version d'Exim vulnérable, configurée avec les paramètres par défaut.

Détails techniques:

Cette vulnérabilité a fait l’objet de deux démonstrations de faisabilité. Cependant, en raison de l'extrême complexité du code d'Exim, Qualys ne peut garantir que ces méthodes d'exploitations sont uniques, des méthodes plus rapides pouvant exister.

CVE-2019-10149 [CVSS : 9,8] : Cette vulnérabilité peut être exploitée :

  • Localement : l’exploitation de la vulnérabilité se fait en envoyant un email à "${run{...}}}@localhost", où "localhost" est un domaine local existant sur une installation Exim vulnérable. Avec cela, les attaquants peuvent exécuter les commandes de leur choix qui s'exécutent avec les privilèges d'un administrateur. La faille réside dans le fait que la méthode expand_string() reconnaît la commande "${run{<command> <args>}}" .

Cette méthode n’est pas valable à distance dans la configuration par défaut car une politique d’accès n’autorise que les connexions possédant une adresse du même domaine que le serveur Exim. Les chercheurs ont trouvé cependant d’autres moyens.

  • A distance : L’exploitation à distance de cette vulnérabilité dépend de la configuration du serveur. Dans la configuration par défaut, un attaquant doit garder une connexion au serveur vulnérable ouverte pendant 7 jours (en transmettant un octet toutes les quelques minutes). Si la politique d’accès a été supprimée alors la méthode locale fonctionne également à distance. D’autres cas d’injections de code sont possibles pour masquer le fait que l’adresse source n’est pas locale (voir la démonstration de faisabilité).

Plusieurs distributions de Linux n’ont pas encore mis à jour leurs systèmes. Néanmoins, la version 4.92 publiée par EXIM n’est pas impactée par cette vulnérabilité. Elle est disponible ici au téléchargement depuis le 10 février 2019. Du fait de la criticité, les utilisateurs sont invités à appliquer la mise à jour le plus rapidement possible. 

Informations

La faille est activement exploitée :

Un correctif existe :

Une mesure de contournement existe :

Risques

Risques

  • Exécution de code arbitraire ;
  • Exécution de code arbitraire à distance.

Criticité

  • Score CVSS : 9.80 (Score de la vulnérabilité la plus critique)

Existence d’un code d’exploitation de la vulnérabilité

  • Un code d’exploitation est disponible (voir Liens).

Composants & versions vulnérables

  • Les versions vulnérables sont celles comprises entre 4.87 et 4.91.

CVE

  • CVE-2019-10149

Solutions ou recommandations

Mise en place de correctif de sécurité

  • Il est conseillé aux utilisateurs de déployer Exim 4.92 pour remédier à cette vulnérabilité.

Solution de contournement

  • Aucune solution de contournement n’est proposée.