web-dev-qa-db-ja.com

Vim Modelineの脆弱性

私はvimを使用し、 モードラインの使用例 を使用しています。モードラインは、vimが次のような行についてテキストファイルを解析することを意味します。

# vim: set someoption=somevalue

これらのオプションを設定します。これは、私がモードラインを書いている人にとっては素晴らしいことですが、信頼できないテキストファイルをテキストエディターで問題なく開くことができるという想定が崩れる可能性もあります。

更新されたバージョンのvimを実行しているとします。誰かが、タブの幅をいじるなど、見た目を悪くする迷惑なオプションを設定できるかどうかは気にしていません。悪意のあるテキストファイルで何ができますか?

ありがとう!

19
Sam King

理論的にはモードラインでは悪いことはできないはずですが、モードライン関数の入力のサニタイズは困難です。過去に、任意のコマンド実行またはDoS攻撃を可能にするいくつかのセキュリティ問題がありました。私が見つけた過去のいくつかの脆弱性を引用します:

私はそれらがすべて修正されたと信じていますが、新しい脆弱性が次々と出現し、将来的に同様の脆弱性が見つかる可能性があります。

13
Calimo

元の質問には「attack-prevention」というタグが付けられているので、軽減策として、質問者からのリクエストとして受け取ります。これでいいのですが。

公式のvim Webサイトで提供されているプラ​​グインがあります: securemodelines 。ホワイトリストの内容に応じて、vimモードラインから実行できることを制限します。 vim Webサイト上のプラグインのカルマスコアは健全で、平均評価(ダウンロードごとの評価)はThe NERD Treeプラグインの評価に匹敵します。

元の作成者であるCiaran McCreesh博士は、開発をGitHubに移しました。そこからさまざまな開発者が分岐し、独自のニーズに合わせてカスタマイズしました。これは GitHubネットワークグラフ

元のドキュメントは、上記にリンクされているように、まだvimの公式Webサイトにあります。1

1
Pete Riches

Vimモードラインには、過去に任意のコード実行バグがありました。
したがって、彼らは過去に多くの害を及ぼす可能性があります。

6.3で最初に気づいた、修正済み、後で見つかったいくつかの同様の脆弱性。

リスクは固有であるため(データとコードの混在)、ルートのモードラインは通常無効になっています。

私の理解では、以前のバグは修正されていたため、未公開の問題を除いて、最新のVimを使用すると、モードラインがオンになっている信頼できないファイルを安全に開くことができます。

1
teknopaul