- PVSM.RU - https://www.pvsm.ru -
Уязвимость и ошибка логического разделения поселились в плеере gstreamer [1] версий 0.10.x для музыкальных файлов [2] Nintendo Entertainment System, сообщил [3] Крис Эванс в своем блоге о кибербезопасности. Уязвимость системы позволяет получить стабильный доступ к использованию и обхождению 64-битных ASLR [4], DEP [5] и так далее. Такое стало возможным благодаря наличию поддержки тьюринг-полного скриптования музыкальных файлов внутри плеера. Уязвимость кроется в поддержке обратной совместимости.
Уязвимости подвержена Ubuntu старой, все еще поддерживаемой LTS-версии 12.04.5. В последующих версиях используется новый glibc, и эксплойт в системе уже не работает.
Автор анализа приводит скриншот вызова эксплойта.
Процесс активации происходит без инициализации зараженного файла, для этого достаточно зайти в папку с ним.
Находится баг в файле звукового декодера libgstnsf.so
из дистрибутива gstreamer-0.10
, который используется в системе по умолчанию для всех задач, связанных со звуком. В Ubuntu 14.04 тоже есть этот декодер, но по умолчанию в большинстве случаев используется gstreamer-1.0
.
В процессе инсталляции Ubuntu система как бы между прочим задает вопрос, хочет ли пользователь работать с mp3-файлами. Множество дополнительных пакетов устанавливаются после положительного ответа, включая плагины из пакета Bad — те, которые не всегда радуют качеством: у них нет ревью кода, мейнтейнера, документации и так далее.
Эксплойт злоупотребляет уязвимостью плагина для воспроизведения музыкальных файлов NSF. Эти аудиотреки не похожи на обычные дорожки, которые воспроизводит персональный компьютер.
Файлы формата NSF проигрывает эмулятор процессора консоли NES и звуковое аппаратное обеспечение в реальном времени. Кроме этого внутри NSF-файла может быть набор инструкций. Чтобы проиграть его, уязвимый аудиоплеер эмулировал процессор сорокалетней давности. В подверженной уязвимости версии Ubuntu два плеера, но во втором libgme
ошибки нет.
Плагин gstreamer
создает виртуальное аппаратное окружение процессора 6502 и проигрывает музыку, запуская часть кода на эмуляторе. Затем он считывает результирующие значения из виртуальных звуковых регистрах и рендерит звуковые сэмплы на их основе.
Формат звука NES — стандарт музыкального файла, который сжимает музыку к игре NES для воспроизведения. Он содержит язык скрипта, который используется для запуска уязвимости. Когда вы открываете файл NSF на зараженной системе Ubuntu, он находит свой путь к файлу libgstnsf.so
через музыкальный плеер и мультимедийный фреймворк gstreamer.
Интересующиеся примером могут скачать файл аудио из Castlevania 2 cv2.nsf [6]. Если ваша Linux поддерживает данный формат, звук проиграется командой вроде totem cv2.nsf
. Это крохотный файл в 17264 байта содержит небольшую программу — сэмплы в таком на поместятся. Если система не распознает такой формат, она предложит скачать недостающий плагин.
Плагин работает в процессе эмуляции реального 6502, как в NES для получения музыки на выходе и где-то здесь и находится уязвимость. Так что дело не только в многослойной обратной совместимости для проигрывания непонятных форматов музыкальных файлов, но и эмуляции программы для «восьмибитки» из 1970-х годов.
Какими способами можно использовать такую уязвимость:
gstreamer
проигнорируют расширение файла и применят автоматическое определение формата для загрузки соответствующего декодера к нему.Этот эксплойт работает одинаково хорошо при запуске в следующих программах:
Подробности описаны в соответствующих разделах поста Криса [3]: обзор самого эксплойта, возможные варианты уязвимостей, детали эксплойта.
Также он пишет о том, что найденная ошибка формально относится к 0-day уязвимостям, но поражает только старую Ubuntu 12.04, которая вышла в апреле 2012 года и является long-term support-версией. Ее будут поддерживать [13] до 26 апреля 2017 года. Проблема скорее minor, чем major. Факт того, что она пришла через процессор 1975 года, остается забавным.
P.S. Уязвимость уже была исправлена [14] членами команды Ubuntu.
Автор: Nuteralie
Источник [15]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/210858
Ссылки в тексте:
[1] gstreamer: https://ru.wikipedia.org/wiki/GStreamer
[2] музыкальных файлов : https://ru.wikipedia.org/wiki/NES_Sound_Format
[3] сообщил: https://scarybeastsecurity.blogspot.ru/2016/11/0day-exploit-compromising-linux-desktop.html
[4] ASLR: https://ru.wikipedia.org/wiki/ASLR
[5] DEP: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%B4%D0%BE%D1%82%D0%B2%D1%80%D0%B0%D1%89%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85
[6] cv2.nsf: http://security.appspot.com/security/nsf/cv2.nsf
[7] drive-by download: https://en.wikipedia.org/wiki/Drive-by_download
[8] блога.: https://scarybeastsecurity.blogspot.ru/
[9] Totem: https://ru.wikipedia.org/wiki/Totem
[10] Rhythmbox: https://ru.wikipedia.org/wiki/Rhythmbox
[11] gst-launch-0.10: https://linux.die.net/man/1/gst-launch-0.10
[12] Nautilus: https://ru.wikipedia.org/wiki/Nautilus_(%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D1%8B%D0%B9_%D0%BC%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%B5%D1%80)
[13] будут поддерживать: https://en.wikipedia.org/wiki/Ubuntu_version_history#Ubuntu_12.04_LTS_.28Precise_Pangolin.29
[14] исправлена: http://changelogs.ubuntu.com/changelogs/pool/universe/g/gst-plugins-bad0.10/gst-plugins-bad0.10_0.10.23-7.2ubuntu1.2/changelog
[15] Источник: https://habrahabr.ru/post/315378/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.