The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимость в Vim, приводящая к выполнению кода при открытии вредоносного файла

12.06.2019 23:24

В текстовых редакторах Vim и Neovim найдена уязвимость (CVE-2019-12735), позволяющая выполнить произвольный код при открытии специально оформленного файла. Проблема проявляется при активности включенного по умолчанию режима modeline (":set modeline"), который позволяет определить в обрабатываемом файле опции редактирования. Уязвимость устранена в выпусках Vim 8.1.1365 и Neovim 0.3.6.

Через modeline допускается установка только ограниченного числа опций. Если в качестве значения опции указывается выражение, то оно выполняется в режиме sandbox, допускающем применение только простейших безопасных операций. При этом в число допустимых входит команда ":source", в которой можно использовать модификатор "!" для запуска произвольных команд из указанного файла. Таким образом для выполнения кода достаточно указать в строке modeline конструкцию вида "set foldexpr=execute('\:source! some_file'):". В Neovim вызов execute запрещён, но вместо него можно использовать assert_fails.

Например, для выполнения команды "uname -a" достаточно просто открыть в Vim или Neovim файл, в первой или последней строке которого указано:


   :!uname -a||" vi:fen:fdm=expr:fde=assert_fails("source\!\ \%"):fdl=0:fdt="

Компанда "source! %" прочитает команды из текущего файла и, соответственно, выполнит ":!uname -a". Для скрытия данной строки от вывода утилитой cat могут использоваться escape-последовательности. Например, в данном прототипе эксплоита при открытии файла в vim создаётся сетевое соединение с shell-доступом на систему жертвы, но при этом данный файл не вызовет подозрений при выводе в терминал утилитой cat.

Проверить активность режима modeline можно командой ":set modeline?". Для отключения в vimrc можно добавить строку "set nomodeline". В дистрибутивах проблема устранена в RHEL, SUSE/openSUSE, Fedora, FreeBSD, Ubuntu, Arch Linux и ALT. Уязвимость остаётся неисправленной в Debian (в Debian modeline по умолчанию отключен, поэтому в состоянии по умолчанию уязвимость не проявляется).

  1. Главная ссылка к новости (https://nvd.nist.gov/vuln/deta...)
  2. OpenNews: Доступен Neovim 0.2, модернизированный вариант редактора Vim
  3. OpenNews: Найден способ обхода патча, устраняющего уязвимость в bash
  4. OpenNews: Критическая уязвимость в bash, которая может привести к удалённому запуску команд (дополнено)
  5. OpenNews: Фонд СПО указал, что процесс устранения уязвимости в bash подчеркнул достоинства СПО
  6. OpenNews: В Bash выявлено ещё четыре уязвимости, эксплуатируемые через переменные окружения
Лицензия: CC BY 3.0
Наводку на новость прислал pripolz
Короткая ссылка: https://opennet.ru/50857-vim
Ключевые слова: vim, neovim
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (55) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, zzz (??), 23:40, 12/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Докатились, уже для текстовых редакторов начали писать эксплоиты. ee спасет мир.
     
     
  • 2.2, Аноним (2), 23:54, 12/06/2019 [^] [^^] [^^^] [ответить]  
  • +9 +/
    С разморозкой. Ты просто remote code execution в Atom пропустил.
     
     
  • 3.8, Аноним Анонимович Анонимов (?), 00:15, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Менее двух недель назад windows сообщество обсуждало уязвимость notepad.exe.

    https://www.securitylab.ru/news/499294.php
    https://habr.com/ru/news/t/454118/

     
     
  • 4.25, Лапчатый девляпс бубунтёнак (?), 08:38, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > windows сообщество обсуждало

    Так вот оно как называется большая часть аудитории опеннета...

     
     
  • 5.52, Ганделябры (?), 18:48, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ещё раз повторяю, никакого windows сообщества не существует. Это как если бы было сообщество едящих ртом или слушающих ушами.
     
     
  • 6.54, Лапчатый девляпс бубунтёнак (?), 09:42, 14/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда можешь повторить ещё раз...

    Просто мне, как человеку, активно пользовавшемуся некрософт-вантузом где-то с 2003 по 2007 год, немножко странно читать твой бреад.

     
  • 2.28, Аноним (28), 10:24, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > для текстовых редакторов начали писать эксплоиты

    См. CVE-2002-1377, CVE-2004-1138, CVE-2007-2438, CVE-2016-1248…

     

  • 1.3, Аноним (3), 23:56, 12/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    У меня vim - симлинк на nano. Я всё правильно сделал?
     
     
     
    Часть нити удалена модератором

  • 3.22, bergentroll (ok), 06:04, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это у вас симлинк на /dev/ass.
     
     
  • 4.35, Аноним (28), 12:31, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не туда посмотрел. Это вместо /dev/head у него симлинк на /dev/ass.
     
  • 2.11, segesg (?), 00:32, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    да
     
  • 2.33, Аноним (33), 12:10, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Спасибо за идею.
     
  • 2.34, anon342532 (?), 12:18, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Фу таким быть! 😡
     
  • 2.43, IRASoldier_registered (ok), 15:41, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем, если можно просто иcпользовать nano?
     
  • 2.57, Junior frontend developer (?), 01:18, 15/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Если все равно через задницу работает, почему же не вим сразу? Кто эти люди, которым не впадлу изучать нано?
     

  • 1.5, Канделябры (?), 00:09, 13/06/2019 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –13 +/
     

     ....ответы скрыты (2)

  • 1.7, RNZ (ok), 00:15, 13/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На 8.1.320 не воспроизводится
    Вместо cat использую less
     
     
  • 2.10, Канделябры (?), 00:18, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Это на бобине? А на SSD?
     
     
  • 3.19, RNZ (ok), 03:39, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    без разницы
     
  • 2.45, anon342532 (?), 16:07, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > использую less

    смотри v случайно не нажми)

     
  • 2.47, Аноним (47), 16:12, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    NVIM v0.3.1
    Не воспроизвожу
     

  • 1.13, InuYasha (?), 01:32, 13/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Такова проблема всех "комбайнов". Что поделать.
     
  • 1.14, Аноним (14), 02:12, 13/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    пользую ed уже как лет 20
     
     
  • 2.18, Sw00p aka Jerom (?), 03:26, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    mcedit) ну на крайняк ee
     
     
  • 3.27, Ананнимас (?), 09:25, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ее не дружит с ютф к сожалению
     
     
  • 4.39, Sw00p aka Jerom (?), 15:04, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > ее не дружит с ютф к сожалению

    это беда бсд, даже mcedit не дружит

     
     
  • 5.55, Ананнимас (?), 12:30, 14/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    mcedit лне себе дружит. по-крайней мере с русскими буквами.
     
  • 3.53, Аноним (53), 07:47, 14/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Нее... mceditor и ee слишком продвинуты.
     

  • 1.16, souryogurt (ok), 02:41, 13/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    У большинства престарелых вимеров модлайн отключен в конфиге, по-моему?
     
     
  • 2.20, KonstantinB (ok), 03:59, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Я вроде еще не престарелый, но отключил вот.
     
  • 2.30, Аноним (30), 10:52, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Йеп, уже давно в vimrc, всегда считал странной функцией.
     
  • 2.32, Аноним (32), 12:10, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, при установке (в "некоторых" дистрах) до поры до времени месссадж честно выводился, что "modeline штука специфическая и потенциально опасная, вы бы выключили её от греха подальше".

    Так-то можно включить set exrc и уууух что начнётся. Но порой бывает удобно, да:(

     
  • 2.38, Аноним84701 (ok), 14:08, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > У большинства престарелых вимеров модлайн отключен в конфиге, по-моему?

    Вот тут пишут, что оно массово отключено по умолчанию:
    https://vim.fandom.com/wiki/Modeline_magic
    > Debian, Ubuntu, Gentoo, OSX, etc. by default disable modelines for security reasons.
    > To enable modelines, edit your vimrc file (for example, in Vim enter :e $MYVIMRC) and check you have lines like the following.

    А вообще, нужно было сразу переходить на единственно верный и правильный  редактор (Emacs) и не страдать фигней!

     

  • 1.21, Аноним (21), 04:51, 13/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Великий Vim настолько могущественный, что даже может разрушать компьютер владельца. Не каждый текстовый редактор может похвастаться этим!
     
     
  • 2.50, vimgovno (?), 17:13, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    vim - это отменное говно, странно что им еще пользуются/
     
     
  • 3.51, Аноним (21), 18:34, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Не каждый редактор может похвастаться таким количеством хейтеров. Vim и тут превосходен!
     
  • 2.56, АнонимГоним (?), 16:37, 14/06/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    При этом бибикая в дьявольской тональности.
     

  • 1.23, Пряникё (?), 06:25, 13/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Каким нужно быть упоротым, чтобы использовать эту фичу...
    (Я про опции редактирования внутри самого файла)
     
     
  • 2.24, A.Stahl (ok), 06:45, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    От вимеров всякого можно ожидать...
     

  • 1.26, Аноним (28), 09:22, 13/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    В Debian по умолчанию modeline отключён с 2007 года.

    >  * debian/runtime/debian.vim.in
    >    - set 'nomodeline' by default since modelines have historically been a
    >      source of security/resource vulnerabilities.  Users should have to
    >      explicitly enable the option to assume the associated risks.

     
     
  • 2.29, little Bobby tables (?), 10:35, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    да и в генте:
    /etc/vim/vimrc
    " We don't allow modelines by default. See bug #14088 and bug #73715.
    " basis by adding "set modeline" to your ~/.vimrc file.
     
  • 2.59, пох. (?), 17:05, 19/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    у _старых_ opensuse та же фигня:
    " Changed default required by SuSE security team--be aware if enabling this
    " that it potentially can open for malicious users to do harmful things.
    set nomodeline

    но ведь модные-современные без фигни жить не могут, так что в ляпах, наверное, уже удалено.

     

  • 1.31, Аноним (31), 11:50, 13/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Киип ит симпл, стьупид!

    Напуркуя в текст. редакторе такие функции.

    При религии головного мозга молчать в ответ!!!

     
  • 1.36, Nicknnn (ok), 12:55, 13/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Debian testing, приехали обновления vim
     
  • 1.37, Аноним (37), 13:57, 13/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я обновился, потом новость прочитал.
     
  • 1.40, vjkarbo (?), 15:21, 13/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    FreeBSD:12:i386. В пакетах - vim-8.1.0985 (уязвим), в портах - 8.1.1439.
     
     
  • 2.41, анонн (?), 15:33, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > FreeBSD:12:i386. В пакетах - vim-8.1.0985 (уязвим), в портах - 8.1.1439.

    Сделай уже pkg update
    % pkg rquery %n-%v neovim vim
    neovim-0.3.7
    vim-8.1.1439
    % uname -mrs
    FreeBSD 12.0-STABLE amd64


     
     
  • 3.42, анонн (?), 15:37, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >> FreeBSD:12:i386.
    > FreeBSD 12.0-STABLE amd64

    http://pkg.freebsd.org/FreeBSD:12:i386/latest/All/vim-8.1.1439.txz

     
  • 3.44, vjkarbo (?), 15:54, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Странно. pkg update автоматом перед инсталлом же. Может с базой что.
     
     
  • 4.46, vjkarbo (?), 16:07, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Да, и
    % uname -r
    12.0-RELEASE-p5
     
     
  • 5.48, анонн (?), 16:37, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Да, и
    > % uname -r
    > 12.0-RELEASE-p5

    pkg -vv | grep url
    "pkg+http://pkg.FreeBSD.org/FreeBSD:12:amd64/latest"

    вангую, что в релизе репы квартальные (quarterly), а туда или еще не завезли или уже не завезут.

     
     
  • 6.49, vjkarbo (?), 16:51, 13/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Да, вы правы ( "pkg+http://pkg.FreeBSD.org/FreeBSD:12:i386/quarterly"
     

  • 1.58, burjui (ok), 15:52, 15/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Более позитивный заголовок: "Vim научился открывать вредоносные файлы".
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру