さまざまなディストリビューションにプリインストールされているテキストエディタの新しい脆弱性が修正されました Linuxが見つかりました VimおよびNeovimテキストエディタで (CVE-2019-12735)。
これらのエディターで見つかったバグ ユーザーが悪意のあるテキストファイルを開いたときに、ハッカーがコンピューターを制御できるようにします。 この問題は、デフォルトで有効になっているモードラインのアクティビティ( ":set modeline")で明らかになります。これにより、処理中のファイルで編集オプションを定義できます。
VimとそのNeoVimフォークには、モードラインに存在する欠陥が含まれていました。 この機能により、ユーザーはテキストファイルの最初または最後の近くにウィンドウのサイズやその他のカスタムオプションを指定できます。
この機能は、Vim 8.1.1365 Neovim 0.3.6より前のバージョンではデフォルトで有効になっており、.txtファイルを含むすべてのファイルタイプに適用されます。
Vimの脆弱性について
Modelineを通じて、 限られた数のオプションのみが許可されます。 S式がオプション値として指定されている場合、その式はサンドボックスモードで実行されます。これにより、最も単純で安全な操作のみを使用できます。
同時に、 コマンド「:source」は許可されているコマンドのXNUMXつであり、修飾子「!」を使用できます。 指定されたファイルから任意のコマンドを実行します。
したがって、コードを実行するには、モードライン行に「set foldexpr = execute( '\:source!some_file'):」という形式の構文を示すだけで十分です。 Neovimでは、実行呼び出しは禁止されていますが、代わりにassert_failsを使用できます。
一方、サンドボックスでは、副作用を防ぐように設計されています。
オプション「foldexpr」、「formatexpr」、「includeexpr」、「indentexpr」、「statusline」、および「foldtext」はすべてサンドボックスで評価できます。 これは、不快な副作用を伴うこれらの表現から保護されていることを意味します。 これらのオプションがモデルから定義されている場合、これによりある程度のセキュリティが提供されます。
モデルは使用可能なコマンドを制限し、オペレーティングシステムから分離された環境でそれらを実行しますが、 研究者のArminRazmjouは、コマンド:font! この保護を回避しました:
「彼女は、与えられたファイルのコマンドを手動で入力したかのように読み取って実行し、サンドボックスが残されたら実行します」と、今月初めに公開されたメッセージで研究者は書いています。 -ci。
したがって、サンドボックスの外部でコードを実行するモデル行を簡単に作成できます。
投稿には、XNUMXつの原理実証テキストファイルが含まれています、そのうちのXNUMXつは脅威をグラフィカルに示しています。
それらのXNUMXつは、VimまたはNeoVimを実行しているコンピューターでリバースシェルを開きます。 そこから、攻撃者は要求されたマシンで選択したコマンドを起動する可能性があります。
「このPoCは、ユーザーがファイルを開いたときにリバースシェルが起動される実際の攻撃アプローチを説明しています」とRazmjou氏は書いています。 «攻撃を隠すために、ファイルを開くとすぐに書き換えられます。 また、PoCは、コンテンツがcatで印刷されるときに、ターミナルエスケープシーケンスを使用してモデル行を非表示にします。 (cat -vは実際のコンテンツを明らかにします)。 «
コマンド実行の脆弱性には、標準のモデリング機能のアクティブ化が必要です、デフォルトで一部のLinuxディストリビューションのように。 この欠陥は、バージョン8.1.1365より前のVimおよびバージョン0.3.6より前のNeovimに見られます。
米国国立標準技術研究所のNationalVulnerability Databaseからのこのアドバイザリは、DebianおよびFedoraLinuxディストリビューションが修正バージョンのリリースを開始したことを示しています。
ディストリビューションでは、問題はで解決されます RHEL、SUSE / openSUSE、Fedora、FreeBSD、Ubuntu、Arch Linux、およびALT。
Debianでは脆弱性は修正されていません (Debianモードラインでは、デフォルトで無効になっているため、脆弱性はデフォルトの状態では現れません)。
MacOSの最新バージョンは引き続き脆弱なバージョンを使用しますが、攻撃は、ユーザーがモードライン機能が有効になっているデフォルト設定を変更した場合にのみ機能します。