Вразливість старої Ubuntu через аудіофайл, відтворюватися емуляцією процесора 1975 року



Вразливість і помилка логічного поділу оселилися в плеєрі gstreamer версій 0.10.x музичних файлів Nintendo Entertainment System, сообщил Кріс Еванс в своєму блозі про кібербезпеки. Уразливість системи дозволяє отримати стабільний доступ до використання і обходженню 64-бітних ASLR, DEP і так далі. Таке стало можливим завдяки наявності підтримки тьюринг-повного скриптования музичних файлів всередині плеєра. Уразливість криється підтримки зворотної сумісності.

Уразливості схильна 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. Якщо ваша Linux підтримує даний формат, звук буде програне командою зразок
totem cv2.nsf
. Це крихітний файл в 17264 байта містить невелику програму — семпли в такому на помістяться. Якщо система не розпізнає такий формат, вона запропонує скачати відсутній плагін.

Плагін працює у процесі емуляції реального 6502, як NES для отримання музики на виході і десь тут і знаходиться вразливість. Так що справа не лише в багатошаровій зворотної сумісності для програвання незрозумілих форматів музичних файлів, але і емуляції програми для «восьмибитки» з 1970-х років.

Якими способами можна використовувати таку вразливість:

  • Переслати експлойт як додаток до листа. Якщо жертва завантажує і відкриває файли, її система під загрозою. Багато конфігурації Linux не знають, як працювати з файлом NSF — так що ви можете перейменувати його в mp3. Більшість медіа-плеєрів на основі
    gstreamer
    проігнорують розширення файлу і застосують автоматичне визначення формату для завантаження відповідного декодера до нього.
  • Часткова drive-by download. Використовуючи, в деякому сенсі ризиковану, завантаження файлів через Google Chrome, можливо звалити файли в папку завантажень системи жертви, коли користувач відвідує «неправильні» веб-сторінки. Коли пізніше директорія завантажень відкривається файловим менеджером, то ЗА намагається показати іконки файлів зрозумілими системі розширеннями.
  • Повна drive-by download. При аналогічній небезпечною завантаженні через браузер Google Chrome існує шлях можливої повної попутного завантаження. Кріс обіцяв розповісти про це в наступній статті свого блогу.
  • Атака на основі USB-накопичувача. Якщо відкрити флешку в файловому менеджері, він знову ж таки спробує промалювати іконки файлів.
Додаткові пояснення
Цей експлойт працює однаково добре при запуску в наступних програмах:

Подробиці описані у відповідних розділах поста Кріса: огляд самого експлойта, можливі варіанти вразливостей, деталі експлойта.

Також він пише про те, що знайдена помилка формально відноситься до 0-day вразливостей, але вражає тільки стару Ubuntu 12.04, яка вийшла в квітні 2012 року і є long-term support-версією. Її будуть підтримувати до 26 квітня 2017 року. Проблема швидше minor, ніж major. Факт того, що вона прийшла через процесор 1975 року, залишається забавним.

p.s. Уразливість вже була исправлена членами команди Ubuntu.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.