В популярнейшей СУБД нашлась «дыра», через которую можно захватить чужой компьютер

Безопасность Пользователю
мобильная версия
, Текст: Роман Георгиев 3365

Баг в SQLite позволяет запускать произвольный код на уязвимых устройствах. SQLite - сверхпопулярный движок для баз данных SQL, используемый в ряде операционных систем и множестве программных пакетов, что повышает степень проблематичности этой уязвимости.


Обращение после освобождения

Эксперты Cisco Talos выявили серьёзную уязвимость в популярном движке баз данных SQLite, которая позволяет злоумышленникам удалённо запускать вредоносный код.

Речь идёт об уязвимости класса use-after-free() - «обращение к освобождённой области памяти», которую злоумышленник может использовать, отправляя специальные SQL-команды на устройства, на которых работают базы данных на основе уязвимых версий SQLite. В теории это может приводить к запуску произвольного кода на уязвимом устройстве и к последующему захвату контроля над ним.

Как установили эксперты, проблема кроется в реализации функции SQL Window Functions в SQLite. После обработки выражения SELECT с функцией окна, это выражение преобразуется с помощью функции sqlite3WindowRewrite. И этот процесс включает повторное использование уже удалённого раздела памяти, что может приводить к серьёзному сбою, а в случае, если потенциальный злоумышленник имеет возможность контролировать освобождённый участок памяти, то есть возможность и запуска вредоносного кода.

sqllite600.jpg
Баг в сверхпопулярной СУБД SQLite позволяет запускать произвольный код на уязвимых устройствах

Уязвимость, получившая индекс CVE-2019-5018, затрагивает версии SQLite 3.26.0, 3.27.0. Степень её угрозы по регламенту CVSS 3.0 оценили в 8,1 балла. Исправления внесены в версии SQLite 3.28.

Один из самых популярных движков

SQLite представляет собой библиотеку, написанную на C; это функциональный, быстродействующий, высоконадёжный «движок» для баз данных SQL, считающийся одним из самых популярных в мире. Он используется в огромном количестве всевозможных программных пакетов, включая браузер и почтовый клиент Mozilla (Firefox и Thunderbird соответственно), фреймворки Bugzilla, Drupa, Ruby on Rails, Django; операционные системы Windows 10, Android, FreeBSD.

SQLite также нашёл применение в Adobe Photoshop Lightroom, Adobe AIR и Adobe Reader; Evernote, Skype. Как ни парадоксально, вредоносный фреймворк Flame также использует SQLite.

SQLite также поддерживается во множестве языков программирования, включая C, C++, C#, Java, JavaScript, MATLAB, Perl, Pascal, PHP, Python, Ruby и т.д.

«Наиболее проблематичным моментом в данном случае является то, что ошибка найдена в движке - то есть, в базовой платформе, а не в какой-то конечной разработке, - указывает Олег Галушкин, директор по информационной безопасности компании SEC Consult Services. - Это означает, что затронуто огромное количество программных пакетов, и все они теперь нуждаются в интеграции обновлений SQLite. Это займёт время, в течение которого у злоумышленников есть масса возможностей воспользоваться этой «брешью». Радует лишь то, что уязвимость критической не является».