The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

11.08.2019 07:57

Исследователи из компании 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.



  1. Главная ссылка к новости (https://research.checkpoint.co...)
  2. OpenNews: Уязвимость в СУБД SQLite
  3. OpenNews: Удалённо эксплуатируемая уязвимость в SQLite, затрагивающая браузеры на базе Chromium
  4. OpenNews: Релиз СУБД SQLite 3.29
  5. OpenNews: В состав OpenBSD-Current добавлен механизм защиты RETGUARD
  6. OpenNews: Релиз СУБД SQLite 3.28
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/51259-sqlite
Ключевые слова: sqlite
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (24) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 09:30, 11/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > приложения, использующие БД SQLite в качестве формата
    > для транзитных и входных данных.

    кароче, "не будем говорить кто, хотя это был Слон...прекрасный браузер Чроме"

     
     
  • 2.3, Аноним (3), 09:33, 11/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Иногда лучше жевать. Чроме уже давно использует свой велосипед https://github.com/google/leveldb для локального хранилища.
     
     
  • 3.4, Аноним (4), 09:35, 11/08/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А, ну значит если ты пройдешь по этой ссылке, то получишь 404 Not Found.

    https://chromium.googlesource.com/chromium/src/+/refs/heads/master/third_party

     
     
  • 4.12, Аноним (12), 17:47, 11/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Хорошая попытка гугл но нет.
     
  • 3.6, Аноним (6), 12:03, 11/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Хаха тебя дурят по чем зря а ты и рад верить.
     
     
  • 4.8, Аноним (1), 12:30, 11/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    ну зачем же дурят? Действительно, используют наколенную поделку для "своих данных" (видимо, не все гуглообезьянки шмагли в полноценный sql), а
    > в качестве формата
    > для транзитных и входных данных.

    доступного через распрекрасный ненужно-sql-api - sqlite ;-)

     

  • 1.2, Аноним (4), 09:32, 11/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Для успешной атаки необходимо наличие возможности модификации файлов БД атакуемых приложений

    А, ну значит пол-интернета будут атакованы. Доподлинно известно, что любой чувак с улицы может напрямую править БД-файлы практически 98.1854% приложений в интернете, в смартфонах других людей на той же или другой улице, или где-либо еще. (Процент получен научным путем.)

     
     
  • 2.7, Аноним (6), 12:05, 11/08/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нормальные интернет сервисы sqlite редко используют. А вот во встроенных приложениях sqlite много где используется.
     
     
  • 3.9, Онаним (?), 12:50, 11/08/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    И чего? Для эксплуатации нужен доступ к файлам SQLite.
     
     
  • 4.22, Michael Shigorin (ok), 19:03, 13/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Что характерно, нигде не сказано "непосредственный" или там "локальный" ;-)
     
     
  • 5.23, Онаним (?), 19:45, 13/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Что характерно, нигде не сказано "непосредственный" или там "локальный" ;-)

    Да, ещё нужно значение каждой буквы в каждом слове расписать. А то не поймут.

     
  • 3.10, Отражение луны (ok), 14:53, 11/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    SQLite изначально пользуют там, где этот великий хакинг не вперся. Для хранения настроечек, да кеше
     
     
  • 4.11, Аноним (12), 17:46, 11/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Для оскрытия присутствия самое то что нужно.
     
     
  • 5.13, A.Stahl (ok), 17:56, 11/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот сам и скрывай своё присутствие в пасьянсе или видеоплеере.
     
     
  • 6.20, InuYasha (?), 15:08, 13/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я бы на ствоём месте после таких слов стал почаще проверять свой плеер и пасьянс...
     
  • 3.14, пох. (?), 18:17, 11/08/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    да, веб-макакам middleware вообще плохо дается (см эпикфэйл забиксоидов, запутавшихся в двух процессах аж до порчи базы - хотя, казалось бы...)

    они предпочитают "контроллеры" и прочий шлак.

     

  • 1.5, Онаним (?), 09:36, 11/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    Короче, около 0.01% приложений, которые используют SQLite3 для импорта-экспорта. Ещё 1% серверов с криворукими девляпсами. К остальным настолько близко не подобраться.
     
     
  • 2.15, пох. (?), 18:29, 11/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    да лана? Тут же ж даже не injection нужен (хотя и он сработает) а просто пописать в файл с базкой. Как будто это так сложно...

     
     
  • 3.16, Аноним (16), 00:02, 12/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну попиши чего-нибудь сюда, например: https://mirror.yandex.ru/centos/7/updates/x86_64/repodata/65b728bb44786c3cfb7b
     
     
  • 4.19, яндексоадмин (?), 11:43, 12/08/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ну давай я попишу - а ты потом при установке обновлений от рута-то этот файлик и почитаешь, ага.

    и заметь - ни https, ни gpg подписи пакетов тебе уже не помогут.

     

  • 1.17, ыы (?), 00:45, 12/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    "наличие возможности модификации файлов БД"

    Если вы получили root-доступ к системе - галактеко в опасносте.

     
     
  • 2.21, Michael Shigorin (ok), 17:25, 13/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Предпологаемое отсутствие возможности модификации лог-файлов Вас оставит в такой же безмятежности?  А тут рассказывали рядом, как ещё на БЭСМ шутили над админами, хотя прямого доступа к логам вроде бы как не было.
     

  • 1.18, anonymous (??), 09:09, 12/08/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Нормальная уязвимость, не понятно чего аноним нос воротит. Представьте что видеоплеер выполняет произвольный код при открытии специально подготовленного файла. Опасно? Вполне. Даже уже было несколько таких уязвимостей опубликовано.

    А теперь замените видеоплеер на некоторую программу, использующую sqlite. А видеофайл замените на файл базы данных. Получится то же самое. Вполне обоснованные опасения.

    По схожим причинам я боюсь пользоваться pyspread - мало ли какого кода туда запихают, внутри ведь полноценный интерпретатор питона. Ну и org-mode-овские таблички тоже страшные, ибо туда можно произвольный elisp вставлять.

     
     
  • 2.24, Онаним (?), 19:47, 13/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Из большого пока только yum виднеется.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру