Kerentanan di Vim menyebabkan eksekusi kode ketika file berbahaya dibuka

Di editor teks semangat ΠΈ neovim tidak kerentanan (CVE-2019-12735) yang memungkinkan kode arbitrer dieksekusi ketika file yang dibuat khusus dibuka. Masalahnya muncul ketika mode modeline default (":set modeline") aktif, yang memungkinkan Anda menentukan opsi pengeditan dalam file yang diproses. Kerentanan diperbaiki dalam rilis
Vim 8.1.1365 ΠΈ Neovim 0.3.6.

Hanya sejumlah opsi terbatas yang dapat diatur melalui modeline. Jika suatu ekspresi ditentukan sebagai nilai opsi, maka ekspresi tersebut dieksekusi dalam mode kotak pasir, yang hanya mengizinkan operasi aman yang paling sederhana untuk digunakan. Pada saat yang sama, perintah β€œ: source” termasuk yang valid, di mana Anda dapat menggunakan pengubah β€œ!”. untuk menjalankan perintah sewenang-wenang dari file yang ditentukan. Jadi, untuk mengeksekusi kode, cukup menentukan konstruksi seperti "setfoldexpr=execute('\:source! some_file'):" di baris modeline. Neovim tidak mengizinkan panggilan eksekusi, tetapi Anda dapat menggunakan menegaskan_fails sebagai gantinya.

Misalnya, untuk menjalankan perintah "uname -a", cukup buka file di Vim atau Neovim yang baris pertama atau terakhirnya berbunyi:

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

Sumber! %" akan membaca perintah dari file saat ini dan menjalankan ":!uname -a" sesuai dengan itu. Utilitas cat dapat menggunakan urutan escape untuk menyembunyikan string tertentu dari output. Misalnya saja dalam hal ini mengeksploitasi prototipe saat membuka file di vim, koneksi jaringan dibuat dengan akses shell ke sistem korban, tetapi file ini tidak akan menimbulkan kecurigaan saat dikeluarkan ke terminal dengan utilitas cat.

Anda dapat memeriksa apakah mode modeline aktif dengan perintah ":set modeline?". Untuk menonaktifkannya, Anda dapat menambahkan baris "set nomodeline" ke vimrc. Dalam distribusi, masalahnya telah diperbaiki RHEL, SUSE/bukaSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux ΠΈ ALT. Kerentanannya masih belum diperbaiki Debian (di Debian, modeline dinonaktifkan secara default, sehingga kerentanan tidak muncul dalam keadaan default).

Sumber: opennet.ru

Tambah komentar