Vim Modeline の脆弱性が任意の OS コマンド実行を可能に

概要

Vim は広く使用されている、非常に柔軟なテキストエディタですが、最近公開された脆弱性により、そのファイル解析機能に関連するリスクが明らかになりました。この脆弱性は CVE-2026-34982 と呼ばれ、高 severity の脆弱性で、攻撃者が巧妙に作成したファイルを開くことで任意の OS コマンドを実行できる可能性があります。

脆弱性の詳細

Vim の modeline 功能は、テキストファイルの先頭や末尾近くで特定の設定や構成変数を指定することができます。これらのコマンドは通常、制限付きのセンドボックス内で実行されますが、CVE-2026-34982 により攻撃者がこの保護層から逃れることが可能です。

脆弱性の原因

この脆弱性は以下のオプションに存在するセキュリティフラグの欠如が原因です:

  • complete オプション: コールバック関数を受けることができますが、必要な P_SECURE または P_MLE フラグがないため、セキュリティチェックを回避し任意の lambda 表現を受け入れることが可能です。
  • guitabtooltip オプションと printheader オプション: modeline を介して操作すると同様の脆弱性が存在します。
  • mapset() 関数: 必要な check_secure() 呼び出しを欠いているため、攻撃者は任意のキーマッピングに悪意のあるコードを実行する可能性があります。

影響と対策

この脆弱性は OS コマンドインジェクション(CWE-78)であり、実際の影響は深刻です。攻撃者はターゲットに巧妙なファイルを配布するだけであり、被害者が脆弱なバージョンの Vim を使用してそのファイルを開くと、モデルライン命令が自動的にトリガーされ、任意のコマンドがユーザーと同じシステム権限で実行されます。

対応

セキュリティ研究者 “dfwjj x” と Avishay Matayev によりこの脆弱性が特定され、原因分析と再現手順をメンテナに提供しました。Vim プロジェクトは迅速に対応し、パッチ 9.2.0276 をリリースして問題を解決しています。

開発者やシステム管理者はすぐに Vim のインストールをバージョン 9.2.0276 またはそれ以降に更新することをお勧めします。直ちに更新できない場合は、vimrc 設定ファイルで set nomodeline コマンドを追加してモデルライン機能を無効にするという一時的な対策が可能です。


元記事: https://gbhackers.com/vim-modeline-vulnerability-arbitrary-os-command-execution/