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.