Vulnérabilité dans Vim qui conduit à l'exécution de code lors de l'ouverture d'un fichier malveillant

Dans les éditeurs de texte Vim и Néovim trouvé vulnérabilité (CVE-2019-12735), qui permet d'exécuter du code arbitraire lors de l'ouverture d'un fichier spécialement conçu. Le problème survient lorsque le mode modeline par défaut (« :set modeline ») est actif, ce qui vous permet de définir des options d'édition dans le fichier traité. Vulnérabilité corrigée dans les versions
Vim 8.1.1365 и Néovim 0.3.6.

Seul un nombre limité d'options peut être installé via modeline. Si une expression est spécifiée comme valeur d’option, elle est exécutée en mode sandbox, ce qui autorise uniquement les opérations sécurisées les plus simples. Dans ce cas, la commande valide inclut la commande « :source », dans laquelle vous pouvez utiliser le modificateur « ! ». pour exécuter des commandes arbitraires à partir du fichier spécifié. Ainsi, pour exécuter le code, il suffit d'indiquer dans la ligne modeline une construction du type "setfoldexpr=execute('\:source! some_file'):". Dans Neovim, l'appel d'execute est interdit, mais assert_fails peut être utilisé à la place.

Par exemple, pour exécuter la commande « uname -a », ouvrez simplement un fichier dans Vim ou Neovim dont la première ou la dernière ligne dit :

:!uname -a||» vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="

Entreprise « source ! %" lira les commandes du fichier actuel et exécutera en conséquence ":!uname -a". Les séquences d'échappement peuvent être utilisées pour masquer une ligne donnée de la sortie de l'utilitaire cat. Par exemple, dans ce exploiter un prototype lors de l'ouverture d'un fichier dans vim, une connexion réseau est créée avec un accès shell au système de la victime, mais ce fichier n'éveillera pas de soupçons lorsqu'il sera envoyé au terminal à l'aide de l'utilitaire cat.

Vous pouvez vérifier l'activité du mode modeline avec la commande « :set modeline ? ». Pour le désactiver, vous pouvez ajouter la ligne « set nomodeline » à vimrc. Dans les distributions, le problème est résolu dans RHEL, SUSE / openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. La vulnérabilité reste non corrigée dans Debian (dans Debian, modeline est désactivé par défaut, donc la vulnérabilité n'apparaît pas dans l'état par défaut).

Source: opennet.ru

Ajouter un commentaire