Угроза безопасности из-за автоматической обработки мультимедийных файлов
Крис Эванс (Chris Evans), известный эксперт по компьютерной безопасности и автор сверхзащищенного FTP-сервера vsftpd, обратил внимание на фундаментальные проблемы в организации работы с новыми файлами в GNOME и продемонстрировал на практике возможность их эксплуатации, показав как просто загрузив специально оформленный файл в систему можно добиться выполнения своего кода.
Сама по себе проблема с автоматической обработкой новых файлов в системе не нова и уже давно применяется для эксплуатации уязвимостей в библиотеках для обработки изображений (при открытии нового носителя в некоторых файловых менеджерах, для создания пиктограмм с эскизами автоматически обрабатываются файлы с изображениями). Исследование Криса Эванса показывает, что проблема остается недооцененной и представляет большую угрозу для безопасности на пользовательских Linux-системах.
В современных дистрибутивах Linux (исследование проведено на примере Fedora Linux) поставляется достаточно обширный набор плагинов Gstreamer для обработки различных форматов видео и изображений. При этом огромная доля из этих плагинов написана без оглядки на обеспечение безопасности и изобилует ошибками. В то же время в Fedora настроено автоматическая индексация загружаемых пользователем файлов при помощи ПО GNOME Tracker, которое извлекает из файлов метаданные при помощи имеющихся в системе сторонних библиотек. Кроме того, браузер Chrome настроен для сохранения загружаемых файлов на рабочий стол без подтверждения операции пользователем, что также приводит к автоматическому разбору данных файлов.
Обилие проблемных декодировщиков контента в сочетании с автоматически обрабатывающим их приложением Tracker, которое запускается без применения изоляции SELinux, создает прекрасные условия для проведения атак c задействованием 0-day уязвимостей в плагинах Gstreamer. Чтобы показать, что подобные атаки вполне реальны, а не умозрительны, Крис Эванс опубликовал примеры эксплоитов, работающих в полностью обновленном окружении с Fedora Linux 24 (при желании эксплоиты легко могут быть адаптированы для Ubuntu и любых других дистрибутивов). Первый пример манипулирует уязвиомстью в gst-plugins-bad1.0/gst/vmnc/vmncdec.c и приводит к краху процесса tracker-extract при открытии в Chrome специально оформленной страницы, перенаправляющей пользователя на avi-файл с эксплоитом.
Второй пример затрагивает уязвимость в gst-plugins-good/gst/flx/gstflxdec.c и содержит специально оформленный файл в формате FLAC, открытие которого в Rhythmbox приводит к запуску калькулятора. Эксплоит не является универсальным и завязан на конкретные сборки Rhythmbox, Totem, tracker-extract или любого другого приложения, использующего GStreamer, поэтому представленный способ подходит только для совершение целевых атак на отдельные дистрибутивы (т. е. представленный FLAC-эксплоит будет работать только в Fedora 24 при обработке файлов в Rhythmbox, а для Ubuntu 16.04 и других программ потребуется создание другого FLAC-эксплоита).
Для обхода механизмов защиты ASLR (Address Space Layout Randomization) и DEP (Data Execution Prevention) в эксплоите не используются методы манипулирования раскладкой памяти и вычисления указателей во время эксплуатации на основе данных из дополнительных источников. Вместо этого точечная подстановка кода осуществляется в цикле декодирования мультимедийного потока, используя для определения структуры кучи данные от периодически выполняемых операций выделения и очистки памяти для буферов декодирования. Определив структуру кучи осуществляется подмена данных в вызове system (в качестве альтернативы можно подменить код в буфере JIT).
Проблема уже устранена в Ubuntu и ожидает исправления в остальных дистрибутивах(Debian (усранена только первая проблема), RHEL, Fedora, CentOS, SUSE, openSUSE).