Истражувачите од Check Point
За успешен напад, неопходно е да може да се менуваат датотеките на базата на податоци на нападнатите апликации, што го ограничува методот на напади врз апликации кои ја користат базата на податоци SQLite како формат за транзит и внесување податоци. Методот може да се користи и за проширување на постоечкиот локален пристап, на пример, за интегрирање на скриените задни врати во користените апликации, како и за заобиколување на безбедносните механизми при анализа на малициозен софтвер од страна на безбедносните истражувачи. Операцијата по замена на датотека се изведува во моментот кога апликацијата го извршува првото барање SELECT против табела во изменетата база на податоци.
Како пример, ја демонстриравме способноста да се изврши код во iOS при отворање на адресар, датотеката со базата на податоци „AddressBook.sqlitedb“ беше изменета со помош на предложениот метод. Нападот користеше ранливост во функцијата fts3_tokenizer (CVE-2019-8602, можност за дереференција на покажувачот), фиксирана во априлското ажурирање SQLite 2.28, заедно со друго
Методот на напад се заснова на употребата на две техники „Киднапирање на прашања“ и „Програмирање ориентирано кон прашања“, кои овозможуваат искористување на произволни проблеми што доведуваат до оштетување на меморијата во моторот SQLite. Суштината на „Киднапирање на прашања“ е да се замени содржината на полето „sql“ во табелата за услуги sqlite_master, што ја одредува структурата на базата на податоци. Наведеното поле содржи блок DDL (Јазик за дефиниција на податоци) што се користи за опишување на структурата на објектите во базата на податоци. Описот е наведен со користење на стандардна SQL синтакса, т.е. се користи конструкцијата „CREATE TABLE“,
што се извршува за време на процесот на иницијализација на базата на податоци (при првото лансирање
sqlite3LocateTable функционира за создавање внатрешни структури поврзани со табелите во меморијата.
Идејата е дека, како резултат на замена на „CREATE TABLE“ со „CREATE VIEW“, станува возможно да се контролира секој пристап до базата на податоци преку дефинирање на сопствен приказ. Користејќи „CREATE VIEW“ операцијата „SELECT“ е врзана за табелата, која ќе биде повикана наместо „CREATE TABLE“ и ви овозможува пристап до различни делови од SQLite преведувачот. Следно, наједноставниот метод на напад би бил да ја повикате функцијата „load_extension“, која ви овозможува да вчитате произволна библиотека со екстензија, но оваа функција е стандардно оневозможена.
За да се изврши напад кога е можно да се изврши операцијата „SELECT“, предложена е техниката „Програмирање ориентирано со барање“, што овозможува да се искористат проблемите во SQLite што доведуваат до оштетување на меморијата. Техниката потсетува на програмирање насочено кон враќање (
Извор: opennet.ru