- PVSM.RU - https://www.pvsm.ru -
Как-то обошли на Хабре недавнюю Magellan [1]-ошибку и связанные с ней уязвимости, попробую исправить это упущение.
Ошибка связана с переполнением суммы целых чисел aka integer overflow, которая может быть вызвана в подсистеме FTS3/4 изменением индекса FTS таблицы, что в свою очередь может привести к переписыванию памяти или завершению с исключением.
Целевое искусственное применение этого целочисленного переполнения, посредством грамотного "обрезания" буферов записи, приводит к переполнению памяти, и может использоваться в дальнейшем специально созданными SQL-запросами.
В результате, в теории могут быть уязвимы многие приложения [5], использующие SQLite (с виртуальными FTS таблицами) и в частности популярные браузеры, поддерживающие WebSQL на базе SQLite с включенным FTS (например Google Chrome, Chromium, Opera, Slimjet Browser, SRWare Iron, Torch, Comodo Dragon, CoolNovo, Yandex Browser, Vivaldi и т.д.).
Базы данных SQLite вообще очень популярны, предоставляются средствами не одного десятка языков программирования, toolchain, фреймворков и т.д., используются приложениями как для мобильных устройств, так и полноценных компьютеров, и нередко встречаются даже в серверных решениях. Так, например, в этом формате хранят данные популярные веб-браузеры, такие как Google Chrome, Mozilla Firefox и Yandex Browser, множество мессенджеров (например, WhatsApp, Viber, WeChat и другие), и т.д. и т.п.
Тот же Fossil SCM [6], например, использует базу данных SQLite для хранения истории ревизий и позволяет использовать полнотекстовое индексирование через FTS (и предоставляет доступ к ней из UI/веб-морды, где например есть возможность создания собственных SQL-запросов, к примеру custom ticket reports и т.п.).
Такое "предсказуемое" переполнение и само по себе не очень приятная штука, а если вспомнить, что конкретно может храниться и в самой банке (от содержимого журналов до собственно таблиц)…
Так-что не ленимся товарищи..., и обновляемся, обновляемся.
Исправление [940f2adc8541a838] [2] предоставляется в рамках обновления SQLite 3.25.3 (до которого также обновились Chromium и ко., например Chrome в версии 71.0.3578.80).
Версия SQLite 3.26 предоставляет также дополнительные возможности защиты FTS-контейнеров, например:
support for read-only shadow tables when the SQLITE_DBCONFIG_DEFENSIVE option is enabled
Это кстати уже не первая ошибка вида overflow & buffer overrun в SQLite конкретно и в FTS модуле в частности (например [56be976859294027] [7]), однако вероятно крупнейшая в своем роде по значимости, теоретическому воздействию и относительной "масштабности" в способах возможного применения и оценке последствий этого.
Автор: sebres
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/vulnerability/302639
Ссылки в тексте:
[1] Magellan: https://blade.tencent.com/magellan/index_en.html
[2] ошибку закрывают: https://www.sqlite.org/src/vinfo/940f2adc8541a838?diff=1
[3] Chromium: https://chromium.googlesource.com/chromium/src/+/c368e30ae55600a1c3c9cb1710a54f9c55de786e
[4] подозрения на Hacker News: https://news.ycombinator.com/item?id=18686305
[5] многие приложения: https://en.wikipedia.org/wiki/SQLite#Notable_users
[6] Fossil SCM: https://fossil-scm.org/
[7] [56be976859294027]: https://www.sqlite.org/src/info/56be976859294027
[8] Источник: https://habr.com/post/433596/?utm_campaign=433596
Нажмите здесь для печати.