Vim 中的漏洞導致打開惡意文件時執行代碼

在文字編輯器中 VIM и 新病毒 上一篇 脆弱性 (CVE-2019,12735),它允許在打開專門設計的文件時執行任意程式碼。 當預設模型行模式(“:set modeline”)處於活動狀態時會出現問題,該模式可讓您在處理的檔案中定義編輯選項。 版本中修復的漏洞
Vim 8.1.1365 и 新維姆 0.3.6.

透過 modeline 只能安裝有限數量的選項。 如果將表達式指定為選項值,則會在沙箱模式下執行,該模式僅允許最簡單的安全操作。 在這種情況下,有效命令包括“:source”命令,您可以在其中使用“!”修飾符。 從指定檔案運行任意命令。 因此,要執行程式碼,只需在模型行中指示類似「setfoldexpr=execute('\:source!some_file'):」的結構即可。 在 Neovim 中,禁止呼叫execute,但可以使用assert_fails 來代替。

例如,要執行「uname -a」命令,只需在 Vim 或 Neovim 中開啟一個文件,其第一行或最後一行顯示:

:!uname -a||» vi:fen:fdm=expr:fde=assert_fails(“源\!\ \%”):fdl=0:fdt=”

公司《源! %」將從目前檔案中讀取命令並相應地執行“:!uname -a”。 轉義序列可用於隱藏 cat 實用程式輸出中的給定行。 例如,在這個 開發原型 當在 vim 中開啟檔案時,會建立一個網路連接,並透過 shell 存取受害者的系統,但是當使用 cat 實用程式輸出到終端時,該檔案不會引起懷疑。

您可以使用指令“:set modeline?”檢查 modeline 模式的活動。 要停用它,您可以將“set nomodeline”行新增到 vimrc 中。 在發行版中,問題解決在 RHEL, SUSE/開放SUSE, Fedora, FreeBSD的, Ubuntu, Arch Linux и ALT。 該漏洞仍未修補 Debian (Debian中modeline預設是禁用的,所以預設狀態下不會出現該漏洞)。

來源: opennet.ru

添加評論