Kerentanan dalam Vim yang membawa kepada pelaksanaan kod apabila fail berniat jahat dibuka

Dalam penyunting teks Vim ΠΈ neovim dijumpai kelemahan (CVE-2019 12735-) yang membenarkan kod arbitrari dilaksanakan apabila fail yang dibuat khas dibuka. Masalah muncul dengan sendirinya apabila mod modelin lalai (":set modeline") aktif, yang membolehkan anda menentukan pilihan penyuntingan dalam fail yang diproses. Kerentanan diperbaiki dalam keluaran
Vim 8.1.1365 ΠΈ Neovim 0.3.6.

Hanya sebilangan terhad pilihan boleh ditetapkan melalui model. Jika ungkapan dinyatakan sebagai nilai pilihan, maka ia dilaksanakan dalam mod kotak pasir, yang membenarkan hanya operasi selamat yang paling mudah digunakan. Pada masa yang sama, perintah β€œ: source” adalah antara yang sah, di mana anda boleh menggunakan pengubah β€œ!”. untuk menjalankan arahan sewenang-wenang dari fail yang ditentukan. Oleh itu, untuk melaksanakan kod, cukup untuk menentukan pembinaan seperti "set foldexpr=execute('\:source! some_file'):" dalam baris model. Neovim tidak membenarkan pelaksanaan panggilan, tetapi anda boleh menggunakan assert_fails sebaliknya.

Sebagai contoh, untuk menjalankan arahan "uname -a", cuma buka fail dalam Vim atau Neovim yang baris pertama atau terakhirnya berkata:

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

Sumber! %" akan membaca arahan daripada fail semasa dan melaksanakan ":!uname -a" sewajarnya. Utiliti kucing boleh menggunakan urutan melarikan diri untuk menyembunyikan rentetan yang diberikan daripada output. Sebagai contoh, dalam ini mengeksploitasi prototaip apabila membuka fail dalam vim, sambungan rangkaian dibuat dengan akses shell ke sistem mangsa, tetapi fail ini tidak akan menimbulkan syak wasangka apabila output ke terminal dengan utiliti kucing.

Anda boleh menyemak sama ada mod modeline aktif dengan arahan ":set modeline?". Untuk melumpuhkannya, anda boleh menambah baris "set nomodeline" kepada vimrc. Dalam pengedaran, masalah diselesaikan dalam RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux ΠΈ ALT. Kerentanan masih belum dapat diatasi Debian (dalam Debian, model dilumpuhkan secara lalai, jadi kelemahan tidak nyata dalam keadaan lalai).

Sumber: opennet.ru

Tambah komen