В СУБД SQLite нашли уязвимость, которой 22 года

Специалисты Trail of Bits выявили в СУБД SQLite серьёзную уязвимость, которая оказалась в коде ещё в октябре 2000 года. Она позволяла злоумышленникам вызывать сбои в работе программ или управлять ими.

49834598d132ebe8198862846b2e4852.jpg

Проблеме присвоили идентификатор CVE-2022–35737, её серьёзность оценили в 7,5 баллов по шкале CVSS. 

Как отметили исследователи, баг можно эксплуатировать в 64-разрядных системах, и «возможность использования зависит от того, как скомпилирована программа». По их словам, выполнение произвольного кода возможно, когда «библиотека скомпилирована без стековых «канареек», но невозможно в случае их присутствия».

Проблема связана с целочисленным переполнением. Оно возникает, если чрезвычайно большой input строки передаётся в качестве параметров SQLite-имплементациям функций printf, которая, в свою очередь, использует другую функцию для обработки форматирования строки (sqlite3_str_vappendf). 

Однако атака осуществима лишь при условии, что строка формата содержит подстановки %Q, %q или %w.

«Если строка формата содержит специальный символ '!' для включения сканирования на символы Unicode, то в худшем случае можно добиться выполнения произвольного кода или заставить программу зависнуть и зациклиться на (почти) неопределённый срок», — разъяснили эксперты.

Проблема затрагивала SQLite версий от 1.0.12 до 3.39.1 и была устранена с релизом версии 3.39.2 в июле 2022 года.

© Habrahabr.ru