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 до актуальной версии, в которой механизмы вызова внешних делегатов были пересмотрены.
- Обновите пакеты в операционной системе:
apt-get update && apt-get install --only-upgrade imagemagick
- Если вы используете Red Hat/CentOS:
yum update imagemagick
- Проверьте текущую версию после обновления:
convert --version
Временные меры
Если немедленное обновление невозможно, необходимо ограничить функциональность ImageMagick через файл конфигурации политик (policy.xml). Это заблокирует уязвимые кодеры.
-
Найдите файл конфигурации
policy.xml(обычно находится в/etc/ImageMagick/или/etc/ImageMagick-6/). -
Добавьте следующие строки внутрь секции
<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>
- Проверьте применение политик командой:
identify -list policy
- Дополнительно рекомендуется проверять "магические байты" (Magic Bytes) загружаемых файлов на стороне приложения, чтобы убедиться, что тип файла соответствует заявленному расширению, прежде чем передавать его в ImageMagick.