CVE-2016-3714

ImageMagick ImageMagick

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2024-09-09

Официальное описание

ImageMagick contains an improper input validation vulnerability that affects the EPHEMERAL, HTTPS, MVG, MSL, TEXT, SHOW, WIN, and PLT coders. This allows a remote attacker to execute arbitrary code via shell metacharacters in a crafted image.

🛡️
Технический анализ и план устранения

Суть уязвимости

Уязвимость CVE-2016-3714, известная как ImageTragick, связана с недостаточной фильтрацией входных данных в библиотеке ImageMagick при обработке определенных форматов файлов (кодеров), таких как MVG, MSL и других.

Проблема заключается в том, что ImageMagick передает внешние параметры (например, URL-адреса или имена файлов) системным обработчикам через командную оболочку (shell) без надлежащей очистки. Это позволяет злоумышленнику внедрить метасимволы оболочки в файл изображения, что приводит к удаленному выполнению произвольного кода (RCE) с правами пользователя, запустившего процесс обработки.

Как исправить

Наиболее эффективным и рекомендуемым способом устранения уязвимости является обновление ImageMagick до актуальной версии, в которой механизмы вызова внешних делегатов были пересмотрены.

  1. Обновите пакеты в операционной системе:
apt-get update && apt-get install --only-upgrade imagemagick

  1. Если вы используете Red Hat/CentOS:
yum update imagemagick

  1. Проверьте текущую версию после обновления:
convert --version

Временные меры

Если немедленное обновление невозможно, необходимо ограничить функциональность ImageMagick через файл конфигурации политик (policy.xml). Это заблокирует уязвимые кодеры.

  1. Найдите файл конфигурации policy.xml (обычно находится в /etc/ImageMagick/ или /etc/ImageMagick-6/).

  2. Добавьте следующие строки внутрь секции <policymap>:

<policymap>
  <policy domain="coder" rights="none" pattern="EPHEMERAL" />
  <policy domain="coder" rights="none" pattern="URL" />
  <policy domain="coder" rights="none" pattern="HTTPS" />
  <policy domain="coder" rights="none" pattern="MVG" />
  <policy domain="coder" rights="none" pattern="MSL" />
  <policy domain="coder" rights="none" pattern="TEXT" />
  <policy domain="coder" rights="none" pattern="SHOW" />
  <policy domain="coder" rights="none" pattern="WIN" />
  <policy domain="coder" rights="none" pattern="PLT" />
</policymap>

  1. Проверьте применение политик командой:
identify -list policy

  1. Дополнительно рекомендуется проверять "магические байты" (Magic Bytes) загружаемых файлов на стороне приложения, чтобы убедиться, что тип файла соответствует заявленному расширению, прежде чем передавать его в ImageMagick.