Tehnografi.com - Технологические новости, обзоры и советы

Была обнаружена новая методика использования уязвимостей в SQLite.

Исследователи Check Point недавно показали в конференции DEF с деталями новой техники, которая была обнаружена, это используется рДля атаки приложений, которые используют уязвимые версии SQLite.

Метод Check Point рассматривает файлы базы данных как возможность интеграции сценариев эксплуатации уязвимостей в нескольких внутренних подсистемах SQLite, которые недоступны для использования на лбу. Исследователи также подготовили методику использования уязвимостей с помощью эксплойта в виде строки запросов SELECT в базе данных SQLite, которая позволяет избежать ASLR.

Об уязвимости

Исследователи Check Point подробно рассказывают, что для успешной атаки злоумышленник должен иметь возможность изменять файлы базы данных атакованных приложений, что ограничивает метод атаки приложений, которые используют базы данных SQLite в качестве формата для передачи и ввода данных.

Хотя они также объявляют, что метод может также использоваться для расширения уже полученного локального доступа, например, чтобы интегрировать скрытые бэкдоры в используемые приложения, а также чтобы избежать анализа безопасности при анализе вредоносных программ.

Операция после олицетворения файлов выполняется в тот момент, когда приложение выполняет первый запрос SELECT к таблице в измененной базе данных.

В качестве примера, способность выполнять код на iOS была продемонстрирована открытием адресной книги, файл с базой данныхAddressBook.sqlitedbКоторый был модифицирован с использованием предложенного способа.

Для атаки в функции fts3_tokenizer была использована уязвимость (CVE-2019-8602, возможность разыменования указателя), исправлено в обновлении SQLite, апрель 2.28, наряду с еще одной уязвимостью в реализации оконных функций.

Кроме того, демонстрирует использование метода удаленного захвата внутреннего сервера злоумышленника, написанного на PHP, который накапливает перехваченные пароли во время работы вредоносного кода (перехваченные пароли были переданы в виде базы данных SQLite).

Метод атаки основан на использовании двух методов: перехват запросов и программирование, ориентированное на запросы, которые позволяют использовать произвольные проблемы, приводящие к повреждению памяти в механизме 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 была предложена методика ориентированного на запросы программирования, позволяющая использовать проблемы в SQLite, приводящие к повреждению памяти.

Этот метод напоминает возвратно-ориентированное программирование (ROP), но он использует несуществующие фрагменты машинного кода, но он вставляется в набор подзапросов в SELECT для построения цепочки вызовов («гаджетов»).

Источник: https://threatpost.com/