В операционной системе Qubes обнаружена брешь, способная разрушить её главный козырь — жёсткую изоляцию. Используя её, злоумышленник может вырваться за пределы виртуального окружения и захватить полный контроль над хостом.
Проблема затрагивает фирменную функцию обмена файлами. Специфика ОС в том, что каждое приложение и системный сервис крутится в собственном мини-окружении (изолированных виртуальных машинах). Киска безопасности гласит: компрометация одной «песочницы» не должна вести к взлому всей системы, однако найденная уязвимость этот принцип нарушает.
Корень зла обнаружен в утилите `qvm-copy-to-vm`, которая как раз и выполняет копирование данных между изолированными средами. Патч, закрывающий дыру, распространяется через обновление пакета `qubes-core-dom0-linux` версии 4.3.22. Атака строится на ошибочной логике обработки нештатных ситуаций: когда операция копирования завершается сбоем, утилита на хосте (Dom0) вызывает системную функцию `system()`, чтобы визуально показать ошибку через стандартные оверлеи `kdialog` или `zenity`.
Фокус в том, что в текст этого уведомления без должной очистки подставляется имя отправляемого файла. Разработчики фильтровали лишь не-ASCII символы и убирали двойные кавычки, но совершенно проигнорировали спецсимволы командной оболочки, вроде восклицательного знака или знака доллара. Этим и воспользовались исследователи
Злонамеренная виртуальная машина имитирует ответ «файл не скопирован» и в качестве имени проблемного файла передаёт строку, содержащую, к примеру, такую конструкцию: *file`id`*. Хостовый обработчик, доверяя полученным данным, вставляет эту строку в аргументы командной строки диалогового окна. В результате операционная система молча исполняет вложенную команду `id` уже от имени Dom0 — привилегированного окружения с полным доступом. Это открывает неограниченные возможности для установки вредоносного ПО и полного перехвата контроля над всей ОС.
