Уязвимость в Evince, позволяющая выполнить код при построении миниатюр
В поставляемом в составе GNOME просмотрщике документов Evince выявлена уязвимость (CVE-2017-1000083), которая может привести к выполнению кода злоумышленника при открытии специально оформленного файла в формате CBT (используется для комиксов). Проблема вызвана ошибкой в реализации обработчика comic book, входящего в состав evince. Проблема также проявляется в Atril, развиваемом проектом MATE форке Evince.
Особую опасность представляет то, что уязвимость может быть эксплуатирована в процессе автоматическго построения пиктограмм с эскизами для новых файлов, т. е. достаточно просмотреть список файлов в файловом менеджере или вставить носитель. Более того, можно организовать загрузку вредоносного файла и запуск Evince thumbnailer незаметно от пользователя при открытии специально оформленной web-страницы в браузерах Chrome и Epiphany. Проблему усугубляет то, что evince-thumbnailer запускается без применения sandbox-изоляции.
CBT-файл представляет собой tar-архив, в котором размещена упорядоченная коллекция изображений. В процессе просмотра комиксов для извлечения каждого изображения запускается команда "tar -xOf $archive $filename", которая формируется кодом. Имена файлов перед запуском экранируются кавычками. Атакующий может поместить в архив картинку с именем, начинающимся с символов "--" и при запуске tar для извлечения данного файла имя этого файла будет обработано как опция командной строки. Таким образом поместив в архив файл с именем "--checkpoint-action=exec=bash -c 'touch ~/covfefe.evince;'.jpg", можно добиться выполнения команды touch. По аналогии можно организовать выполнение любого кода на shell.
Разработчики GNOME уже выпустили патчи для веток gnome-3-20, gnome-3-22 и gnome-3-24. Уязвимость пока остается неисправленной в Debian, RHEL и FreeBSD. Разработчики SUSE сформировали обновление для Tumbleweed, SLE12, SLE12 SP2, openSUSE Leap 42.2 и 42.3. Обновления также уже выпущены для Ubuntu, Fedora Linux В качестве обходного пути защиты рекомендуется временно отключить evince-thumbnailer (удалить /usr/share/thumbnailers/evince.thumbnailer) и не открывать непроверенные файлы в формате CBT.