Обработка имён файлов в qvm-copy-to-vm позволяет внедрять команды в Dom0

Qubes OS

В утилите qvm-copy-to-vm, предназначенной для копирования файлов из административного домена Dom0 в изолированные виртуальные машины Qubes OS, обнаружена ошибка обработки имени файла при отображении сообщения об ошибке. Скомпрометированная виртуальная машина способна использовать эту ошибку для внедрения произвольной команды в Dom0, что означает полный захват контроля над операционной системой. Уязвимость затрагивает все версии Qubes OS. Разработчики подготовили обновление пакета qubes-core-dom0-linux для версии 4.3 и рекомендуют пользователям выполнить стандартную процедуру обновления.

Детали уязвимости

Qubes OS строится на изоляции приложений. Каждое приложение и системный сервис работают в отдельных виртуальных машинах, называемых кьюбами. Такая архитектура нужна для того, чтобы взлом одной среды не распространялся на остальные. Qubes OS часто выбирают пользователи, которым важна защита от утечек, - журналисты, активисты, разработчики и специалисты по информационной безопасности. Dom0 - управляющий домен, который имеет наибольшие привилегии. Из него администратор запускает и останавливает кьюбы, изменяет конфигурацию и управляет файлами. Если атакующий получает выполнение кода в Dom0, он может перехватить контроль над всеми виртуальными машинами и данными внутри них. Поэтому защита Dom0 играет ключевую роль для всей системы.

Утилита qvm-copy-to-vm используется, когда пользователь находится в Dom0 и передаёт файл в один из кьюбов. Команда доступна как в графическом окружении, так и в терминале. Например, это может быть документ, который необходимо открыть в среде с другой степенью доверия. Передача идёт через протокол на основе упрощённого архивного формата. После завершения приёмная виртуальная машина возвращает источнику подтверждение: код ошибки, контрольную сумму и имя последнего принятого файла. Если операция завершилась сбоем, Dom0 выводит графическое окно с пояснением. В текст сообщения попадает имя файла, переданное виртуальной машиной.

Ошибка возникает именно при обработке этого имени. Виртуальная машина, уже скомпрометированная атакующим, может вернуть код ошибки и подставить вместо имени файла произвольную строку. Фильтр, который применяет утилита, удаляет только непечатные символы, символы вне диапазона ASCII и двойные кавычки. Спецсимволы командной оболочки, например знак доллара, обратные кавычки или вертикальную черту, остаются в строке. Собранное сообщение затем передаётся в команду запуска диалоговой программы. Утилита выполняет её через вызов командного интерпретатора. В результате любые команды, встроенные в имя файла, исполняются в Dom0 до того, как пользователь увидит окно ошибки. Если в имя добавить фрагмент с обратными кавычками, интерпретатор подставит результат выполнения вложенной команды в текст сообщения. Так атакующий может выполнить произвольное действие с максимальными привилегиями.

Разработчики Qubes подчёркивают, что для атаки требуется два условия. Первое: кьюб, в который копируется файл, должен быть скомпрометирован. Второе: пользователь должен сам инициировать копирование файла из Dom0 именно в этот кьюб. Атака имеет черты социальной инженерии: пользователь должен добровольно выполнить действие, дающее злоумышленнику возможность применить уязвимость. Однако разработчики исходят из того, что пользователи могут ошибаться, поэтому программа не должна полагаться на их внимательность. Подобный сценарий учитывается в модели угроз Qubes, где любой кьюб считается потенциально недоверенным. Данные, получаемые из него, продолжают обрабатываться слишком доверчиво: утилита не проверяет имя файла на наличие командных метасимволов и не учитывает, что оно будет использовано в вызове оболочки.

Версия утилиты, работающая внутри кьюба, такой проблемы не имеет. Она отображает сообщения об ошибках безопасным способом: запускает диалоговую программу напрямую, без обращения к командному интерпретатору. Небезопасный способ обработки ошибок реализован только в версии для Dom0.

В бюллетене нет сведений об активной эксплуатации уязвимости. Тем не менее разработчики рекомендуют обновить систему незамедлительно. Для Qubes OS 4.3 выпущено исправление в пакете qubes-core-dom0-linux версии 4.3.22. Пакет помещён в репозиторий security-testing, после короткой проверки комьюнити он будет перемещён в стабильный репозиторий. Установка выполняется обычным способом через Qubes Update или его консольные аналоги. Никаких других действий от пользователей не требуется.

Ошибка напоминает о важном правиле. Любые данные из менее привилегированной среды - имена файлов, коды ошибок, метаданные - нельзя вставлять в команды без строгой фильтрации. В Qubes OS это правило приобретает особый смысл, потому что граница между Dom0 и кьюбами является основой всей модели безопасности. Пока пользователь не установит обновление, эта граница остаётся ослабленной, и даже изолированная компрометация одной виртуальной машины может привести к захвату всей системы.

Ссылки

Комментарии: 0