The OpenNET Project / Index page

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

Критическая уязвимость, позволяющая выполнить код вне гостевой системы в Xen, KVM, VirtualBox и QEMU

13.05.2015 20:34

В развиваемом проектом QEMU коде эмуляции контроллера флоппи-дисков (FDC) выявлена критическая уязвимость (CVE-2015-3456), получившая кодовое имя VENOM. Кроме QEMU драйвер также используется в системах виртуализации Xen, KVM и VirtualBox. Уязвимость позволяет выйти за пределы гостевой системы и получить управления над базовым хост-окружением.

Пользователь гостевой системы, имеющий доступ к портам ввода/вывода (привилегированный пользователь в Linux и любой пользователь в Windows), может отправить эмулятору контроллера FDC специально оформленную команду, которая приведёт к переполнению буфера и выполнению произвольного кода на стороне гостевой системы с правами сопутствующего процесса QEMU. Если данный процесс выполняется с правами root, то пользователь может обойти ограничения виртуализации и из гостевого окружения получить root-доступ к основной системе.

Проблема проявляется во всех гостевых системах на базе архитектуры x86 и x86-64, выполняемых с использованием гипервизора Xen в режиме полной виртуализации (HVM) и в системах на базе QEMU/KVM. Тип эмулируемого оборудования и настройки запуска QEMU не имеют значения, так как в режимах PIIX и ICH9 создаётся мост для шины ISA, в котором в любом случае доступен виртуальный контроллер флоппи-дисков. Также не имеет значение наличие в гостевой системе файла устройства для доступа к флоппи-диску, так как эксплуатация производится через обращение к портам ввода/вывода.

Обновления с устранением уязвимости уже выпущено для RHEL, CentOS, Ubuntu и Debian. Также доступны патчи к QEMU и Xen. Оценить появление обновлений в других дистрибутивах можно на следующих страницах: Fedora, openSUSE, SLES, Slackware, Gentoo, FreeBSD, NetBSD. В качестве обходного пути защиты в RHEL/CentOS предлагается использовать sVirt и seccomp для ограничения привилегий процесса QEMU и ограничение доступа к ресурсам. В Ubuntu в конфигурации по умолчанию при использовании QEMU с libvirt применяется дополнительная изоляция при помощи AppArmor.

Проблема присутствует с 2004 года и вызвана отсутствием проверки переполнения при записи в FIFO-буфер фиксированного размера, используемый в слое эмуляции FDC для хранения команд контроллера и их параметров. Запись в буфер ведётся побайтово, отражая запись данных в порты ввода/вывода, с последующим увеличением индекса, указывающего на текущую позицию в буфере. После выполнения команды индекс сбрасывается в ноль и для следующей команды буфер заполняется заново. Для некоторых команд, таких как FD_CMD_READ_ID и FD_CMD_DRIVE_SPECIFICATION_COMMAND, в определённых ситуациях сброс индекса не производился или производился с задержкой, что даёт возможность полностью заполнить буфер и осуществить запись за его пределы.

Дополнение: Компания Oracle объявила о наличии данной уязвимости в VirtualBox и Oracle VM.

  1. Главная ссылка к новости (https://securityblog.redhat.co...)
  2. OpenNews: Критическая уязвимость в гипервизоре Xen
  3. OpenNews: Уязвимость, позволяющая получить доступ к диску хост-системы из гостевого окружения QEMU/KVM
  4. OpenNews: Уязвимости в Xen, позволяющие из гостевого окружения получить доступ к хост-системе
  5. OpenNews: Уязвимость в SCSI-коде QEMU, позволяющая выйти за пределы гостевого окружения Xen
  6. OpenNews: Уязвимость в KVM, потенциально позволяющая поднять привилегии в гостевой системе
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/42223-qemu
Ключевые слова: qemu, xen, kvm, security
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (43) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 21:08, 13/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Тип эмулируемого оборудования и настройки запуска QEMU не имеют значения, так как в режимах PIIX и ICH9 создаётся мост для шины ISA, в котором в любом случае доступен виртуальный контроллер флоппи-дисков.

    Ну и зачем так сделали?

     
     
  • 2.10, Аноним (-), 22:11, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Я бы спросил иначе. Нафуя в 2015 году вообще таскать драйвер эмулирующий флоповод?
     
     
  • 3.24, dalco (ok), 07:45, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Те же античные окошки в принципе ничего кроме флопика не признают во время установки, если драйвера надо поставить.

    P.S. И, да, даже в 2015 году вполне актуальны виртуалки с XP/2003/2000 для каких-нибудь античных прог, написанных в 90ые (а современных аналогов нет или они стоят больше годового бюджета твоей конторы :) ).

     
     
  • 4.31, none7 (ok), 16:33, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    В случае виртуалок с XP/2003/2000 эмулируется древний IDE контроллер. Который старые системы понимают без проблем встроенным в систему драйвером.
     
     
  • 5.39, dalco (ok), 03:37, 15/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот только virtio-драйвера производительней в разы при существенно меньшем потреблении CPU (тоже в разы). При одной, слабо нагруженной, виртуалке это не столь заметно, а если этих виртуалок у тебя десяток-два на хосте крутится?
    Не, можно, конечно, инсталлировать древние окошки под эмулируемый ide-контроллер  и эмулируемый же realtek 8139, а потом все драйвера/виртуальные девайсы менять на правильные, но зачем?

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

     
  • 4.32, Аноним (-), 18:50, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Согласен. А вообще надо заметить что частенько wine тянет эти проги лучше новых версий винды.;-)
     
  • 3.44, arisu (ok), 13:21, 22/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Я бы спросил иначе. Нафуя в 2015 году вообще таскать драйвер эмулирующий
    > флоповод?

    может, потому, что виртуалки не только для запихивания в них уебсервисни используются, например?

     
  • 2.13, еуые (?), 22:14, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • –10 +/
    К сожалению в ядре всё держится на костылях, а передалать так это надо пол ядра  переписать...
     
     
  • 3.33, Аноним (-), 19:21, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Можно подумать ты в ядре хоть с пол-шишечки понимаешь Ыгспёрд :-D
     
     
  • 4.40, Аноним (-), 11:42, 15/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ну не все же такие дегенераты как ты
     

  • 1.2, Аноним (-), 21:09, 13/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    жду в тред того анонимуса, который противопоставлял "дырявый" докер "сверхнадежным" квм и пр.
     
     
  • 2.3, Аноним (-), 21:30, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Я другой ононим. Но факт в том, что в дыркере дыра на дыре, а тут вообще редчайшее явление.
     
  • 2.6, Аноним (-), 21:40, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • +9 +/
    На солнце обнаружены пятна! Ждём в тред того анонимуса, который противопоставлял "тусклые" лампы накаливания "сверхярким" звёздам и пр.
     

  • 1.4, InventoRs (ok), 21:31, 13/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Эпично, слов нету.
    Еще бы exploit.. и все.
     
  • 1.5, жабабыдлокодер (ok), 21:35, 13/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Программисты на С они такие программисты... Зная, что язык не контролирует переполнение массива, они все равно не контролируют массивы вручную...
     
     
  • 2.7, Аноним (-), 21:53, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Программисты на С они такие программисты... Зная, что язык не контролирует переполнение массива, они все равно не контролируют массивы вручную...

    Эх, а нужно то всего лишь на Go переписать...

     
     
  • 3.8, Gannet (ok), 21:59, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Зачем такая экзотика? Есть же Java!
     
     
  • 4.34, Аноним (-), 19:24, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Зачем такая экзотика? Есть же Java!

    Javascript же!

     
     
  • 5.43, Анонимус сапиенс (?), 12:30, 17/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Уже
     
  • 3.9, жабабыдлокодер (ok), 22:08, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А нужно то всего-то написать маленькую функцию для контроля и кидать данные в массив не напрямую, а через эту функцию. Или несколько таких функций, для разных случаев. Очень сложно, да?
     
     
  • 4.14, Аноним (-), 22:15, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > функций, для разных случаев. Очень сложно, да?

    Виртуализатор который выдаст 30% от скорости bare metal - никто не возьмет, даже если за это приплатить.

    Представь себе что на копирование каждого байта (или ворда) делается не только собственно копирование но еще и вызов функции проверки - а можно ли так копировать?! Ну и получится у тебя очередная ЖабаКотораяНеТормозит.

     
     
  • 5.16, жабабыдлокодер (ok), 22:21, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Во-первых, такая дырища в безопасности всяко хуже. Во-вторых, то, о чем Вы говорите, было актуально лет этак двадцать назад. Сейчас компилятор сам пересобачивает весь код, вставляя свои оптимизации. И вариант с проверкой может оказаться, в результате, даже быстрей.
     
     
  • 6.21, ананим.orig (?), 22:57, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Во-первых, такая дырища в безопасности всяко хуже.

    да флопи вставь твою дырищу.

     
  • 6.35, Аноним (-), 19:30, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Во-первых, такая дырища в безопасности всяко хуже.

    Хуже когда молчат. Когда увидев орут и фиксят - это ОТЛИЧНО!
    > Во-вторых, то, о чем Вы говорите, было актуально лет этак двадцать назад.

    Театров не будет ... будет сплошное телевидение! (С)
    > Сейчас компилятор сам пересобачивает весь код, вставляя свои оптимизации.

    Это - про оптимизацию скорости или размера. Покажи мне хоть один компилятор пересобачивающий код для устранения секурити дыр :) То что новые добавляют stack smash это немного не то ....
    > И вариант с проверкой может оказаться, в результате, даже быстрей.

    Фантастика! (С)
    Впрочем жабщики давно знают что jvm умнее их. Причем не потому что jvm такая умная :)))

     
  • 5.27, Michael Shigorin (ok), 11:45, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Виртуализатор который выдаст 30% от скорости bare metal

    bare metal шустрой 1.44M дискетки выдавал порядка 30 кб/с, помнится.

     
  • 3.18, Аноним (-), 22:27, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Эх, а нужно то всего лишь на Go переписать...

    Нужно всего лишь иметь внутреннюю дисциплину.

     
  • 2.11, Аноним (-), 22:12, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > массива, они все равно не контролируют массивы вручную...

    Судя по древности бага - про драйвер флоповода, писаный левой пяткой, все просто забыли и забили.

     
     
  • 3.38, Hile (?), 00:44, 15/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Будет повод выпилить!)
     

  • 1.12, фыва (?), 22:13, 13/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    хм...
    а если не создавал в гипервизоре флопик для гостевой?
    прокатит?
     
     
  • 2.15, Аноним (-), 22:16, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > а если не создавал в гипервизоре флопик для гостевой?
    > прокатит?

    Можно ли сломать спинку у лавочки, если она изначально без спинки? Ну вот то-то и оно - упрощение конструкции иногда дает свои результаты :)

     
     
  • 3.17, фыва (?), 22:25, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ну мало ли...
    сперва решил что, гостевой винде, создаешь эмулятор дискетки, запускаешь сплоит.. и вуаля.. гипервизор порутан..

    а так, непритяно канеш, но не так смертельно уж... сми такие сми...

     
  • 3.19, sdog (ok), 22:34, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "Также не имеет значение наличие в гостевой системе файла устройства для доступа к флоппи-диску, так как эксплуатация производится через обращение к портам ввода/вывода."

    вроде как отсутствие наличия не влияет, или таки да?

     
     
  • 4.20, Аноним (-), 22:48, 13/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > вроде как отсутствие наличия не влияет, или таки да?

    Не влияет поскольку, даже если флопи не будет бага будет работать. Потому что Тип эмулируемого оборудования и настройки запуска QEMU не имеют значения, так как в режимах PIIX и ICH9 создаётся мост для шины ISA, в котором в любом случае доступен виртуальный контроллер флоппи-дисков.

     
  • 4.36, Аноним (-), 23:54, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > even guests without floppy disk explicitly enabled in the libvirt or Xen configuration files are affected.
     
  • 2.26, Аноним (-), 10:21, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В новости же синим по зеленому написано, что нет
     
  • 2.30, Аноним (-), 13:13, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    За тебя его создали принудительно.
     
  • 2.37, Аноним (-), 23:54, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > even guests without floppy disk explicitly enabled in the libvirt or Xen configuration files are affected.
     

  • 1.23, Аноним (-), 04:57, 14/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    эксплойт опять самому копилировать без техподдержки?
     
     
  • 2.25, Аноним (-), 08:00, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • +/
    да уже написали не парься
     

  • 1.28, Аноним (-), 11:55, 14/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Я мой дискета твой сервер шатал, да!
     
     
  • 2.29, фыва (?), 12:21, 14/05/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    шлюшай... вах, как харашо сказал..красавчеГ
     

  • 1.41, Гога (?), 11:56, 15/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    citrix xen кому он нужен теперь,если с версии 6.5 платным стал?!
     
  • 1.42, Аноним (-), 09:15, 16/05/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > отправить эмулятору контроллера FDC специально оформленную команду, которая приведёт к переполнению буфера и выполнению произвольного кода на стороне гостевой системы с правами сопутствующего процесса QEMU

    Поможет всем: https://grsecurity.net/features.php

     

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



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

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