Новая критическая уязвимость в GraphicsMagick и ImageMagick

Новая критическая уязвимость в GraphicsMagick и ImageMagick

Новая критическая уязвимость в GraphicsMagick и ImageMagick

В пакетах ImageMagick и GraphicsMagick выявлена ещё одна опасная уязвимость (CVE-2016-5118), позволяющая выполнить произвольные команды shell при обработке специально оформленного имени файла. Проблема связана с передачей в вызов popen имени файла.

Без его проверки на наличие спецсимволов, что позволяет использовать модификатор "|", отвечающий за ответвление процесса для создания канала ввода-вывода. Передав вместо имени файла аргумент "|имя" можно выполнить произвольный код, например:

   convert '|echo Hello > hello.txt;' null:

Кроме эксплуатации приложений, для преобразования форматов изображений вызывающих утилиту convert, атака может быть проведена при обработке специально оформленных SVG- или MVG-файлов, в которых вместо ссылки на изображение может применяться конструкция:

SVG:

   xlink:href="|echo Hello > hello.txt; cat /usr/lib/firefox/browser/icons/mozicon128.png"

MVG:

  push graphic-context

  viewbox 0 0 640 480

  image copy 200,200 100,100 "|echo Hello > hello.txt; cat /usr/lib/firefox/browser/icons/mozicon128.png"

  pop graphic-context

Проблема присутствует в функции OpenBlob() из состава blob.c. Не исключено, что кроме утилиты convert и обработчиков SVG/MVG, уязвимость может проявляться и в других областях применения GraphicsMagick и ImageMagick. В качестве решения проблемы рекомендуется отключить использование функции popen, убрав флаг HAVE_POPEN в файле magick/blob.c ("#undef HAVE_POPEN"). На момент написания новости исправление доступно лишь в виде патча. Обновления пакетов для дистрибутивов еще не сформированы: Debian, Ubuntu, RHEL/CentOS, SUSE, openSUSE, FreeBSD, Fedora. 

Уязвимость переполнения глобального буфера в zlib грозит DoS и даже RCE

В широко используемой библиотеке zlib выявлена критическая уязвимость, позволяющая через порчу памяти вызвать сбой программы (DoS). Ее также потенциально можно использовать для удаленного выполнения стороннего кода в системе.

Пока не решенной проблеме, классифицируемой как переполнение буфера в глобальной памяти, присвоен идентификатор CVE-2026-22184. Поскольку эксплойт тривиален, степень опасности уязвимости была оценена в 9,3 балла по шкале CVSS.

Катастрофическая ошибка возникает при запуске утилиты untgz, а точнее, при выполнении функции TGZfname(), отвечающей за обработку имен архивных файлов, вводимых через консоль.

Как оказалось, уязвимый код не проверяет длину ввода перед копированием. Когда она превышает 1024 байт, происходит запись за границей буфера, что приводит к нарушению целостности памяти.

Проблему усугубляет тот факт, что untgz отрабатывает до парсинга и валидации архива. Эксплойт в данном случае не требует создания вредоносного файла со сложной структурой, достаточно лишь передать длинное имя в качестве аргумента командной строки.

Уязвимости подвержены все сборки zlib до 1.3.1.2 включительно. В качестве временной меры защиты админам и разработчикам рекомендуется ограничить использование untgz либо вовсе удалить соответствующий пакет до появления пропатченной версии.

RSS: Новости на портале Anti-Malware.ru