Vim に細工されたファイルを開くだけで任意のOSコマンドが実行されるという脆弱性が報告されています(CVSS 8.2、高危険度)。 Vim のコア部分(tabpanelオプションのセキュリティフラグ欠落 + sandboxエスケープ)の欠陥です。 Vim 9.2.0272未満のバージョンが該当します。
まだ一報が出たばかりなので、この記事を書いた(2026/03/31 10時07分)時点では、この脆弱性にCVE番号は割り当てられていないようです。
その後、CVE-2026-34714が振られました。
以下の記事にあるように、アップストリームではv9.2.0272というバージョンを提供しています。 とは言え、多くの人はOSのパッケージで提供されるVimを直接的(もしくは間接的)に使っていると思います。
- https://github.com/vim/vim/releases/tag/v9.2.0272
- https://securityonline.info/vim-critical-rce-modeline-tabpanel-bug-chain-patch/
PoC
現時点では確認されていません。
対処方法
ディストリビューションによりますが、通常版(vim-enhanced)とMinimal(vim-minimal)版で対処方法が異なります。
通常版(vim-enhanced)を使っている場合
vimrcに設定を書き込みます。
sudo sh -c 'echo "set nomodeline" >> /etc/vim/vimrc'
ソフトウェアアップデートを実行して、vimのバージョンを更新してください。現時点ではどのディストリビューションもパッチを提供していないと思います。
Minimal(vim-minimal)を使っている場合
vim-minimalの場合、設定を書くパスが異なるようです。
sudo sh -c 'echo "set nomodeline" >> /etc/virc'
ソフトウェアアップデートを実行して、vimのバージョンを更新してください。現時点ではどのディストリビューションもパッチを提供していないと思います。
設定が有効になったかの確認
設定後、viを開いて、:set modeline?と入力してEnterを押したときに、次のように表示されれば有効化されていると判断できるようです。
nomodeline
modelineは、セキュリティリスクとみなされることがあります。その理由は、modelineは実質的に他のファイルに埋め込まれたvimscriptであるため、あらゆる可能性を秘めているからです。信頼できないソースからvimでファイルを編集する場合、理論的には誰かが悪意のあるvimscriptをファイルに埋め込んでいる可能性があります。これを防ぐためにnomodelineという設定は有効になるようです。
ちなみにすでにつぎのような設定が書かれている場合がありますが、set modelines=0とset nomodelineについて効果は異なるようです。併用しても支障は無いとのことです。
" Configuration file for vim set modelines=0 " CVE-2007-2438
ただし暫定的な対処であるため、この問題のパッチリリースがあった場合はそれをインストールすべきです。 この設定変更でシステムの何かが動かなくなるということは無いとは思いますが、この機能を使っていた場合は動作しなくなるためご注意ください。 また、この変更によって起きた問題について、当方は責任をいっさい責任を負いません。