Исследователи безопасности из китайской компании Tencent представили новый вариант уязвимости Magellan (CVE-2019-13734), позволяющей добиться выполнения кода при обработке в СУБД SQLite определённым образом оформленных SQL-конструкций. Похожая уязвимость была опубликована теми же исследователями год назад. Уязвимость примечательна тем, что позволяет удалённо атаковать браузер Chrome и добиться получения контроля над системой пользователя при открытии подконтрольных злоумышленнику web-страниц.
Атака на Chrome/Chromium осуществляется через API WebSQL, обработчик которого основывается на коде SQLite. Атака на другие приложения возможна только если они допускают передачу в SQLite SQL-конструкций, поступающих извне, например, используют SQLite в качестве формата для обмена данными. Firefox уязвимости не подвержен, так как компания Mozilla отказались от реализации WebSQL в пользу API IndexedDB. SQLite используется в Firefox для хранения внутренних БД на диске, которые недоступны для отправки в них произвольных SQL-запросов из Web (для атаки на Firefox требуется внести изменения во внутренние БД, имея доступ на запись в локальной файловой системе).
Google устранил проблему в выпуске Chrome 79. В кодовой базе SQLite проблема была исправлена 17 ноября, а в кодовой базе Chromium - 21 ноября.
Проблема присутствует в коде движка полнотекстового поиска FTS3 и через манипуляцию с теневыми таблицами (shadow tables, особый вид виртуальных таблиц с возможностью записи) может привести к повреждению индекса и переполнению буфера. Детальная информация о технике эксплуатации будет опубликована через 90 дней.
Новый релиз SQLite с исправлением пока не сформирован (ожидается 31 декабря). В качестве обходного пути защиты начиная с SQLite 3.26.0 может использоваться режим SQLITE_DBCONFIG_DEFENSIVE, который запрещает запись в теневые таблицы и рекомендован для включения при обработке внешних SQL-запросов в SQLite. В дистрибутивах уязвимость в библиотеке SQLite пока остаётся неисправленной в Debian, Ubuntu, RHEL, openSUSE/SUSE, Arch Linux, Fedora, FreeBSD. Chromium во всех дистрибутивах уже обновлён и не подвержен уязвимости, но проблема может охватывать различные сторонние браузеры и приложения, использующие движок Chromium, а также Android-приложения на базе Webview.
Дополнительно в SQLite также выявлены 4 менее опасные проблемы (CVE-2019-13750, CVE-2019-13751, CVE-2019-13752, CVE-2019-13753), которые могут привести к утечке информации и обходу ограничений (могут использоваться как сопутствующие факторы для атаки на Chrome). Указанные проблемы устранены в коде SQLite 13 декабря. В совокупности проблемы позволили исследователям подготовить рабочий эксплоит, позволяющий выполнить код в контексте процесса Chromium, отвечающего за отрисовку.
|