觀點 · 資訊分享
Vim 週末連發 4 個安全公告:開 zip 檔、用 Python 補全都可能中招,請升到 9.2.0699
Vim 在 6 月 20 日與 21 日公開四個中等嚴重度的安全公告,包含 zip 檔的 PowerShell 指令注入與 Python 補全執行程式碼。四項都在 9.2.0699 之前修完,一週內共有九個公告。
- 發布
- 2026-06-21
- 篇幅
- 約 5 分鐘 · 2,171 字
- 結構
- 7 節 + 4 題常見問題
- 標籤

一句話看懂:Vim 在 6 月 20 日與 21 日連發四個中等嚴重度的安全公告,開惡意 zip 檔、用 Python 補全等操作,在特定條件下可能被塞進指令執行,升級到 9.2.0699 以上就全部修完。

先用白話講:編輯器為什麼會有漏洞?
想像你有一把很萬用的瑞士刀(Vim),它不只能「編輯文字」,還附了解壓縮、拼字檢查、程式碼補全等好幾種小工具。每個小工具都要處理「別人給的檔案」,只要其中一個處理得不夠小心,惡意檔案就可能趁機搞怪。
這次的四個漏洞就是這種情況:不是 Vim 主體,而是旁邊附帶的小工具,在處理特殊內容時沒有好好檢查。
發生什麼事
Vim 專案的維護者在 6 月 20 日與 21 日,於 oss-security 與 GitHub 公開四個安全公告,嚴重度都是中等:
| 公告 | 問題 | 觸發條件 | 修補版本 |
|---|---|---|---|
| CVE-2026-57453 | zip.vim 用 PowerShell 處理壓縮檔時,檔名可被注入指令 | 系統找不到 unzip 或 zip 才會走備援路徑;官方確認的情境是 Windows | 9.2.0678 |
| CVE-2026-57454 | 惡意的復原檔或交換檔造成越界讀取,可能當機或洩漏相鄰記憶體 | 受害者要載入或復原惡意檔案 | 9.2.0679 |
| CVE-2026-57455 | 拼字檢查的音節折疊功能,過長單字造成越界寫入而當機 | 要用 8 位元編碼、啟用有 SOFO 表的拼字語言,並對過長單字呼叫 soundfold() | 9.2.0698 |
| CVE-2026-57456 | Python 全能補全把檔案內容組成程式碼執行,可跳出去執行任意 Python | 要有 Python 支援,並主動觸發補全,只開檔不會中 | 9.2.0699 |
上表整理自 Vim 專案的公告。oss-security 的信件發出時,CVE 編號還在申請中;後來 GitHub 公告頁已標上 CVE-2026-57453 到 57456。
另外,從 6 月 15 日到 21 日,Vim 在 GitHub 上共公開九個安全公告,這四個是最新的一批。
條件有多寬鬆?
- zip.vim:官方說明,正常安裝裡通常有外部的 unzip 或 zip,備援路徑不容易走到;但在 Windows 上因為預設的 shell 是 cmd.exe,確認可以成功利用,其他用 PowerShell 當 shell 的環境也可能受影響
- 復原檔:官方說攻擊複雜度高,要有人去開惡意檔案
- 音節折疊:官方說明預設的 UTF-8 編碼走的是已有長度限制的路徑,所以要刻意改成 8 位元編碼才會碰到
- Python 補全:官方說明沒有 Python 支援的 Vim 不受影響,只開啟檔案也不足以觸發
給開發者的技術細節
- 看版本:終端機執行
vim --version,確認 patch 號碼;或在 Vim 內輸入:version - 升級:Vim 9.2.0699 以上包含四個修正。用發行版套件的人,要看發行版有沒有已回補這些修正
- 復原檔的暫時做法:公告建議不要載入(
:rundo)或復原來路不明的復原檔與交換檔 - 補全的暫時做法(我的建議):不要對不信任的 Python 檔案使用全能補全
- 這四項的修補:9.2.0678、9.2.0679、9.2.0698、9.2.0699,升到最新版就會一併包含,不必逐項套用
我的看法
很多人(包含自架服務的人)都習慣 SSH 進主機後用 Vim 改設定,這類編輯器的漏洞很容易被當成「個人工具,不用管」。但它的特色是:我們每天都在開來自別人的檔案,例如客戶給的壓縮檔、從網路下載的範例程式碼。工具越萬用,附帶的小功能越多,需要檢查的面向就越廣。
不過這四個的條件都不算寬鬆,我不認為需要恐慌。比較實際的做法是:把 Vim 加進定期更新的清單,不要用「個人電腦」當成不更新的理由;另外養成習慣,不明來源的壓縮檔與程式碼,先看再開,不要直接用編輯器的壓縮檔瀏覽功能打開。
名詞小辭典
- CVE:公開漏洞的統一編號,方便各方對照同一個問題。
- 越界讀取/寫入(Out-of-bounds):程式讀寫了超出該用的記憶體範圍,輕則當機,重則可能被利用。
- 全能補全(Omni-completion):Vim 依據檔案內容與語言,提供進階補全建議的功能,需要用快速鍵觸發。
- 指令注入:攻擊者把惡意指令藏進程式要處理的文字(例如檔名),讓程式當成指令執行。