Vim, Neovim: Prudence en ouvrant un fichier avec ces 2 applications

Si vous n’avez pas mis à jour les éditeurs Vim et Neovim dans votre système d’exploitation Linux récemment, faites attention quand vous essayez de voir le contenu d’un fichier avec ces logiciels.

Le chercheur en sécurité, Armin Razmjou, a découvert une vulnérabilité d’exécution de commande arbitraire (CVE-2019-12735) dans Vim et Neovim— les deux applications d’édition de texte les plus populaires qui sont pré-installées sur la plupart des systèmes d’exploitation Linux.

Vim est un éditeur de texte, c’est-à-dire un logiciel permettant la manipulation de fichiers texte. Il est directement inspiré de vi (un éditeur très répandu sur les systèmes d’exploitation de type Unix), dont il est le clone le plus populaire. Son nom signifie d’ailleurs Vi IMproved, que l’on peut traduire par « VI aMélioré ».

C’est un éditeur de texte extrêmement personnalisable, que ce soit par l’ajout d’extensions, ou par la modification de son fichier de configuration, écrits dans son propre langage d’extension.

Bien qu’il ait de nombreuses fonctionnalités, il conserve un temps de démarrage court (même agrémenté d’extensions) et reste ainsi adapté pour des modifications simples et ponctuelles (de fichiers de configuration par exemple).

Il se différencie de la plupart des autres éditeurs par son fonctionnement modal, hérité de vi. En effet, il possède trois modes de base : le mode normal ou mode commande (dans lequel vous êtes lorsque l’application démarre), le mode insertion, et le mode ligne de commande.

C’est un logiciel libre. Son code source a été publié pour la première fois en 1991 par Bram Moolenaar, son principal développeur. Depuis, ce dernier a continué de l’améliorer, avec l’aide de nombreux contributeurs.

Neovim est une version améliorée, avec une meilleure expérience utilisateur, des plugins et des interfaces graphiques.

Il est directement inspiré de Vim (un éditeur très répandu sur les systèmes d’exploitation de type Unix), dont il est un clone. Il vise à améliorer l’extensibilité et la maintenabilité. Il partage la même syntaxe de configuration; par conséquent, le même fichier de configuration peut être utilisé avec les deux éditeurs (à quelques différences près). À partir de la version 0.1, sortie en décembre 2015, Neovim est compatible avec la quasi-totalité des fonctionnalités de Vim.

Le projet Neovim a été lancé en 2014, certains membres de la communauté Vim offrant un soutien précoce à l’effort de réusinage de haut niveau pour fournir de meilleurs scripts, plugins et une meilleure intégration avec les interfaces graphiques modernes. Ils ont organisé avec succès une collecte de fonds le 23 mars 2014, soutenant au moins un développeur à plein temps. Comme Vim, Neovim est prévu pour fonctionner dans un terminal, bien qu’il soit intégrable dans des fenêtres graphiques. De la même façon, il fonctionne par mode.

Faille d’exécution de code dans Vim et Neovim

Razmjou a découvert une faille dans la méthode utilisée pour manipuler les “modelines,” une fonctionnalité activée par défaut pour trouver automatiquement et appliquer un ensemble de préférences choisies par le créateur du fichier.

linux-vim-vulnerability

Bien que l’éditeur permet seulement un sous-ensemble d’options en modelines (pour des raisons de sécurité) et utilise une protection sandbox si le fichier contient une expression non-sécurisée, Razmjou a révélé qu’un point d’exclamation [!] à la fin d’une commande peut être utiliser pour contourner le sandbox.

Un hacker pourrait donc forcer votre machine Linux à exécuter des commandes arbitraires en vous faisant ouvrir un fichier.

Le chercheur a aussi publié deux preuves de concept, l’un d’entre elle démontre un scénario ou un pirate obtient l’accès au reverse shell du système de la victime dès que celle-ci ouvre le fichier.

Les développeurs ont distribué des mises à jour pour adresser le problème. Il est donc recommandé de les installer le plus vite possible.

Pour se protéger, le chercheur recommande aussi de:

  • désactiver la fonctionnalité modelines,
  • désactiver “modelineexpr” pour empêcher les expressions en modelines,
  • utiliser le plugin “securemodelines,” une alternative sécurisée au modelines.

Si cet article vous a plu, jetez un œil à notre précédent article.

S’abonner
Notifier de
guest
0 Commentaires
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x