В предустановленных на многих дистрибутивах Linux версиях Vim и NeoVim найдена критическая уязвимость, которая позволяет злоумышленнику получить контроль над компьютером жертвы, если она откроет заражённый текстовый файл. Проблема так же касается и последней версии macOS, хотя атака сработает только если была включена опция `modelines`.

Как пояснил Armin Razmjou — исследователь, открывший уязвимость, хотя режим `modelines` и должен запускать команды исключительно в песочнице, команда :source! полностью обходит это ограничение и, таким образом, способна исполнить произвольные команды, как если бы они были вводились вручную.

В качестве конкретного примера приводится текстовый файл, который сразу же после открытия запускает бекконнект шелл и перезаписывает своё содержимое, чтобы скрыть факт атаки:



Проблема актуальна для Vim до 8.1.1365 и Neovim до 0.3.6. Debian и Fedora уже начали выпуск патченных версий. А вот macOS всё ещё предлагает уязвимую восьмую версию редактора.

Так что если обновление вам пока не доступно, а `modelines` включены, вероятно, стоит эту опцию временно отключить.

[ источник ]

Комментарии (8)


  1. saipr
    16.06.2019 00:32
    -2

    В предустановленных на многих дистрибутивах Linux версиях Vim и NeoVim найдена критическая уязвимость, которая позволяет злоумышленнику получить контроль над компьютером жертвы, если она откроет заражённый текстовый файл.

    Интересно а что думают по этому поводу наши импортозамещатели (и не выговоришь)?
    Я что-то не слышал, чтобы они исправляли плюхи или, как в данном случае, готовили патч. Скорее всего они дождутся патча от своего прородителя:


    Debian и Fedora уже начали выпуск патченных версий.


    1. balsoft
      16.06.2019 11:53
      +4

      Патчить должны мейнтейнеры Vim, а дистростроителям нужно просто этот патч применить при сборке новых версий.


      1. saipr
        16.06.2019 11:57
        -4

        А что же тогда Debian и Fedora делают? А Базальт когда начнет выпуск патченных версий?


        1. chupasaurus
          16.06.2019 17:08

          Либо берут патч из апстрима (кода проекта), либо накладывают сами с указанием этого в версии (Debian такие апдейты обычно помечает -dfsg-число).


  1. razielvamp
    17.06.2019 08:12

    А как можно сделать файл который в теле содержит обычный текст, а на самом деле там там строки кода, которые даже cat не отображает?


    1. vladkorotnev
      17.06.2019 09:30

      В данном случае при помощи escape-кодов терминала.


      1. razielvamp
        17.06.2019 14:51
        +1

        Можно ли тогда говорить, что у cat и bash если не уязвимость, то по-крайней мере баг?
        cat должен отображать текст как есть, или форматирование спецсимволами это фича?


        1. vladkorotnev
          17.06.2019 15:10
          +1

          Они в этом случае ни при чём. Баш это просто оболочка, а cat выдаёт просто поток байтов из файла в терминал (вообще в другой поток, но упрощённо скажем, что в терминал).
          Форматирование спецсимволами — именно что фича самого терминала, обусловленная стандартом ещё из далёких времён, когда терминалы были отдельными устройствами.