觀點 · 資訊分享

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#資安漏洞#CVE-2026-57456#編輯器安全
Vim 週末連發 4 個安全公告:開 zip 檔、用 Python 補全都可能中招,請升到 9.2.0699

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

Vim 週末再修 4 個漏洞資訊圖卡:開惡意 zip、用 Python 補全,都可能被塞進指令執行

先用白話講:編輯器為什麼會有漏洞?

想像你有一把很萬用的瑞士刀(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 不受影響,只開啟檔案也不足以觸發

給開發者的技術細節

  1. 看版本:終端機執行 vim --version,確認 patch 號碼;或在 Vim 內輸入 :version
  2. 升級:Vim 9.2.0699 以上包含四個修正。用發行版套件的人,要看發行版有沒有已回補這些修正
  3. 復原檔的暫時做法:公告建議不要載入(:rundo)或復原來路不明的復原檔與交換檔
  4. 補全的暫時做法(我的建議):不要對不信任的 Python 檔案使用全能補全
  5. 這四項的修補:9.2.0678、9.2.0679、9.2.0698、9.2.0699,升到最新版就會一併包含,不必逐項套用

我的看法

很多人(包含自架服務的人)都習慣 SSH 進主機後用 Vim 改設定,這類編輯器的漏洞很容易被當成「個人工具,不用管」。但它的特色是:我們每天都在開來自別人的檔案,例如客戶給的壓縮檔、從網路下載的範例程式碼。工具越萬用,附帶的小功能越多,需要檢查的面向就越廣。

不過這四個的條件都不算寬鬆,我不認為需要恐慌。比較實際的做法是:把 Vim 加進定期更新的清單,不要用「個人電腦」當成不更新的理由;另外養成習慣,不明來源的壓縮檔與程式碼,先看再開,不要直接用編輯器的壓縮檔瀏覽功能打開。

名詞小辭典

  • CVE:公開漏洞的統一編號,方便各方對照同一個問題。
  • 越界讀取/寫入(Out-of-bounds):程式讀寫了超出該用的記憶體範圍,輕則當機,重則可能被利用。
  • 全能補全(Omni-completion):Vim 依據檔案內容與語言,提供進階補全建議的功能,需要用快速鍵觸發。
  • 指令注入:攻擊者把惡意指令藏進程式要處理的文字(例如檔名),讓程式當成指令執行。

資料來源

常見問題

Vim 這四個漏洞嚴重嗎?
Vim 專案把四個都評為中等。它們都需要特定條件,例如要用到 PowerShell 備援、要有 Python 支援、要載入惡意的復原檔,不是單純打開 Vim 就會中。
什麼叫做「Python 全能補全」被利用?
在寫 Python 時按補全快速鍵,Vim 會把檔案裡的函式與類別說明組成一段程式碼,再交給 Python 執行來取得補全資料。如果說明文字裡藏了特製內容,就可能跳出去執行程式。官方說明只打開檔案不會觸發,必須觸發補全才會。
我該怎麼知道自己的 Vim 版本?
在終端機執行 vim --version,看最前面的版本與「Included patches」的範圍;或在 Vim 裡輸入 :version。要確認 patch 號碼已到 0699 以上。如果是用發行版的套件,也要留意發行版有沒有已經回補這些修正。
在升級之前可以怎麼降低風險?
公告針對復原檔那項建議:不要載入或復原來路不明的復原檔與交換檔。其他項目的共通做法是別用 Vim 開啟不明來源的 zip 與程式碼檔案,也不要對不信任的檔案按補全。
LINE