Представлено нову техніку експлуатації вразливостей у SQLite

Дослідники із компанії Check Point розкрили на конференції DEF CON деталі нової техніки атак на програми, що використовують уразливі версії SQLite. Метод Check Point розглядає файли з БД як можливість для інтеграції сценаріїв експлуатації вразливостей у різних внутрішніх підсистем SQLite, недоступних для експлуатації в лоб. Дослідниками також підготовлено техніку експлуатації уразливостей з кодуванням експлоїту у формі ланцюжка SELECT-запитів у БД SQLite, що дозволяє обійти ASLR.

Для успішної атаки необхідна наявність можливості модифікації файлів БД атакованих додатків, що обмежує метод атакою на додатки, що використовують БД SQLite як формат для транзитних та вхідних даних. Метод також може застосовуватися для розширення вже отриманого локального доступу, наприклад, для інтеграції прихованих бекдорів у використовувані додатки, а також для обходу дослідниками безпеки механізмів захисту під час аналізу шкідливого програмного забезпечення. Експлуатація після заміни файлу здійснюється в момент виконання програмою першого SELECT-запиту до таблиці в модифікованій БД.

Як приклад продемонстрована можливість запуску коду в iOS при відкритті адресної книги, файл з БД AddressBook.sqlitedb якої був змінений з використанням запропонованого методу. Для атаки використовувалася вразливість функції fts3_tokenizer (CVE-2019-8602, можливість розіменування покажчика), виправлена ​​в квітневому оновленні SQLite 2.28, поряд з іншою вразливістю у реалізації віконних функцій. Крім того, продемонстровано застосування методу для віддаленого захоплення управління за написаним на PHP бекенд-сервером зловмисників, що здійснює накопичення паролів, перехоплених під час роботи шкідливого коду (перехоплені паролі передавалися у формі БД SQLite).

Метод атаки заснований на використанні двох технік Query Hijacking і Query Oriented Programming, що дозволяють експлуатувати довільні проблеми, що призводять до пошкодження пам'яті в движку SQLite. Суть Query Hijacking у заміні вмісту поля sql в службовій таблиці sqlite_master, що визначає структуру БД. Вказане поле містить блок DDL (Data Definition Language), який використовується для опису структури об'єктів у БД. Опис задається з допомогою штатного синтаксису SQL, тобто. використовується конструкція "CREATE TABLE",
яка виконується у процесі ініціалізації БД (під час першого запуску
функції sqlite3LocateTable) для створення пов'язаних з таблицею внутрішніх структур пам'яті.

Ідея в тому, що в результаті заміни CREATE TABLE на CREATE VIEW з'являється можливість через визначення свого уявлення контролювати будь-яке звернення до БД. За допомогою CREATE VIEW до таблиці прив'язується операція SELECT, яка буде викликана замість CREATE TABLE і дозволяє звертатися до різних частин інтерпретатора SQLite. Далі найпростішим способом атаки був виклик функції «load_extension», що дозволяє завантажити довільну бібліотеку з розширенням, але дана функція відключена за замовчуванням.

Для здійснення атаки в умовах можливості виконання операції SELECT запропонована техніка Query Oriented Programming, що дає можливість експлуатувати проблеми в SQLite, що призводять до пошкодження пам'яті. Техніка нагадує зворотно-орієнтоване програмування (ROP, Return-Oriented Programming), але використовує для побудови ланцюжка викликів («гаджетів») не існуючі уривки машинного коду, а вставки в наборі підзапитів усередині SELECT.

Представлено нову техніку експлуатації вразливостей у SQLite

Представлено нову техніку експлуатації вразливостей у SQLite

Джерело: opennet.ru

Додати коментар або відгук