Une vulnérabilité critique découverte sur les éditeurs de textes Vim et Neovim

Date de publication :

Le chercheur en sécurité informatique Armin Razmjou a récemment découvert une nouvelle vulnérabilité critique dans deux logiciels pour Linux : Vim et Neovim.

Ces deux programmes sont des éditeurs de textes très utilisés sur Linux permettant de créer, d'éditer ou encore de visualiser des fichiers au format texte.

Ainsi, à partir d’un fichier spécialement conçu par un attaquant, l’utilisateur peut être ainsi amené à exécuter des commandes à son insu dès l'ouverture du fichier et permettre à l'attaquant de prendre contrôle à distance du système.

La vulnérabilité est critique et peu complexe à mettre en œuvre, cependant son exploitation nécessite de satisfaire une condition : il faut que l’utilisateur visualise le contenu du fichier sur Vim ou Neovim.

Détails techniques :

    CVE2019-12735 [CVSSv3 8.6] : La vulnérabilité est due à la fonctionnalité “modeline” de Vim/Neovim. Cette fonctionnalité permet de définir des variables d’environnement pour le fichier (par exemple, définir la largeur maximale du texte affiché).
    Un défaut de conception permet l'exécution arbitraire des commandes systèmes via cette fonctionnalité aux dépens de l’utilisateur avec le même niveau de privilège que l'utilisateur ayant ouvert le fichier avec Vim/Neovim.
    Il est ainsi possible avec un fichier texte d'environ 75 caractères de, par exemple:  

      Supprimer ou récupérer certains fichiers ;
      Prendre possession ou bloquer le système (si l'utilisateur est root).

Informations

La faille est activement exploitée :

Un correctif existe :

Une mesure de contournement existe :

Risques

Risques

    Exécution de code arbitraire.

Criticité

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

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

    Un code d'exploitation de la vulnérabilité ainsi qu'une démonstration de faisabilité sont disponibles ici.

Composants & versions vulnérables

    Toutes les versions de Vim antérieures à la 8.1.1365 ;
    Toutes les versions de Neovim anterireures à  la 0.3.6.

CVE

    CVE2019-12735

Solutions ou recommandations

Mise en place de correctif de sécurité

  • Un correctif de sécurité a été mis en place pour Vim et Neovim.

Solution de contournement.

  • En outre, le chercheur a également recommandé aux utilisateurs de :
    • Désactiver la fonction modelines ;
    • Désactiver "modelineexpr" pour interdire les expressions dans les modelines ;
    • Utiliser le plugin "securemodelines", une alternative sécurisée aux modèles Vim.