各種發行版中預安裝的文本編輯器中修復了一個新漏洞 找到Linux 在Vim和Neovim文本編輯器中 (CVE-2019-12735)。
在這些編輯器中發現的錯誤 當用戶打開惡意文本文件時,允許黑客控制計算機。 默認情況下啟用了modeline活動(“:set modeline”)就可以顯示該問題,它使您可以在正在處理的文件中定義編輯選項。
Vim及其NeoVim分支包含一個存在於模式行中的缺陷。 此功能允許用戶在文本文件的開頭或結尾附近指定窗口尺寸和其他自定義選項。
在Vim 8.1.1365 Neovim 0.3.6之前的版本中,默認情況下啟用此功能,並且適用於所有文件類型,包括.txt文件。
關於Vim中的漏洞
通過Modeline, 只允許有限數量的選項。 小號如果將表達式指定為選項值,則它將在沙盒模式下運行,該模式僅允許使用最簡單的安全操作。
同時 命令“:source”是允許使用的命令之一,可以在其中使用修飾符“!”。 從指定文件運行任意命令。
因此,要執行該代碼,只需在modeline行中以“ set foldexpr = execute('\:source!Some_file'):”形式構造即可。 在Neovim中,禁止執行調用,但是可以使用assert_fails代替。
另一方面,在沙箱中,它旨在防止出現以下副作用:
選項“ foldexpr”,“ formatexpr”,“ includeexpr”,“ indentexpr”,“ statusline”和“ foldtext”都可以在沙箱中進行評估。 這意味著您可以免受這些表達式的困擾,並具有令人不快的副作用。 從模型定義這些選項時,這提供了一定的安全性。
雖然模型限制了可用命令並在與操作系統隔離的環境中執行它們, 研究人員Armin Razmjou注意到命令:字體! 規避了此保護措施:
研究人員在本月初發布的消息中寫道:“她讀取並執行給定文件中的命令,就像手動輸入命令一樣,一旦離開沙箱就執行它們。” -ci。
因此,可以輕鬆構建一條模型行,該模型行在沙箱外部執行代碼。
帖子包括兩個原則證明文本文件,其中之一以圖形方式說明了威脅。
其中之一在運行Vim或NeoVim的計算機上打開一個反向外殼。 從那裡,攻擊者可以在被請求的計算機上啟動他們選擇的命令。
Razmjou寫道:“此PoC描述了一種真正的攻擊方法,其中當用戶打開文件時啟動反向Shell。” «要隱藏攻擊,打開文件後將立即將其重寫。 同樣,當內容用cat打印時,PoC使用終端轉義序列來隱藏模型線。 (cat -v顯示實際內容)。 «
命令執行漏洞需要激活標準建模功能,默認情況下在某些Linux發行版中。 在8.1.1365版之前的Vim和0.3.6版之前的Neovim中發現了該缺陷。
美國國家標準技術研究院國家漏洞數據庫的此諮詢表明,Debian和Fedora Linux發行版已開始發布固定版本。
在發行版中,此問題已解決 RHEL,SUSE / openSUSE,Fedora,FreeBSD,Ubuntu,Arch Linux和ALT。
該漏洞在Debian中仍未得到糾正 (在Debian modeline中默認情況下將其禁用,因此該漏洞不會以默認狀態顯示)。
MacOS的最新版本繼續使用易受攻擊的版本,儘管攻擊僅在用戶更改了啟用了舉報功能的默認設置後才起作用。