Воведена е нова техника за искористување на пропусти во SQLite

Истражувачите од Check Point непокриен на конференцијата DEF CON, детали за нова техника за напад на апликации користејќи ранливи верзии на SQLite. Методот Check Point ги разгледува датотеките со бази на податоци како можност за интегрирање на сценарија за искористување на пропусти во различни внатрешни SQLite потсистеми кои не се директно експлоатирани. Истражувачите подготвија и техника за искористување на пропустите со кодирање на експлоатот во форма на синџир од SELECT прашања во базата на податоци SQLite, што ви овозможува да го заобиколите ASLR.

За успешен напад, неопходно е да може да се менуваат датотеките на базата на податоци на нападнатите апликации, што го ограничува методот на напади врз апликации кои ја користат базата на податоци SQLite како формат за транзит и внесување податоци. Методот може да се користи и за проширување на постоечкиот локален пристап, на пример, за интегрирање на скриените задни врати во користените апликации, како и за заобиколување на безбедносните механизми при анализа на малициозен софтвер од страна на безбедносните истражувачи. Операцијата по замена на датотека се изведува во моментот кога апликацијата го извршува првото барање SELECT против табела во изменетата база на податоци.

Како пример, ја демонстриравме способноста да се изврши код во iOS при отворање на адресар, датотеката со базата на податоци „AddressBook.sqlitedb“ беше изменета со помош на предложениот метод. Нападот користеше ранливост во функцијата fts3_tokenizer (CVE-2019-8602, можност за дереференција на покажувачот), фиксирана во априлското ажурирање SQLite 2.28, заедно со друго ранливост при имплементација на прозорските функции. Дополнително, беше демонстрирана употребата на метод за далечинско запленување на задниот сервер на напаѓачот напишан во PHP, кој акумулира лозинки пресретнати за време на операцијата на малициозен код (пресретнатите лозинки беа пренесени во форма на база на податоци SQLite).

Методот на напад се заснова на употребата на две техники „Киднапирање на прашања“ и „Програмирање ориентирано кон прашања“, кои овозможуваат искористување на произволни проблеми што доведуваат до оштетување на меморијата во моторот SQLite. Суштината на „Киднапирање на прашања“ е да се замени содржината на полето „sql“ во табелата за услуги sqlite_master, што ја одредува структурата на базата на податоци. Наведеното поле содржи блок DDL (Јазик за дефиниција на податоци) што се користи за опишување на структурата на објектите во базата на податоци. Описот е наведен со користење на стандардна SQL синтакса, т.е. се користи конструкцијата „CREATE TABLE“,
што се извршува за време на процесот на иницијализација на базата на податоци (при првото лансирање
sqlite3LocateTable функционира за создавање внатрешни структури поврзани со табелите во меморијата.

Идејата е дека, како резултат на замена на „CREATE TABLE“ со „CREATE VIEW“, станува возможно да се контролира секој пристап до базата на податоци преку дефинирање на сопствен приказ. Користејќи „CREATE VIEW“ операцијата „SELECT“ е врзана за табелата, која ќе биде повикана наместо „CREATE TABLE“ и ви овозможува пристап до различни делови од SQLite преведувачот. Следно, наједноставниот метод на напад би бил да ја повикате функцијата „load_extension“, која ви овозможува да вчитате произволна библиотека со екстензија, но оваа функција е стандардно оневозможена.

За да се изврши напад кога е можно да се изврши операцијата „SELECT“, предложена е техниката „Програмирање ориентирано со барање“, што овозможува да се искористат проблемите во SQLite што доведуваат до оштетување на меморијата. Техниката потсетува на програмирање насочено кон враќање (ROP, програмирање ориентирано кон враќање), но користи не постоечки фрагменти од машински код за да изгради синџир на повици („гаџети“), туку вметнува во збир на подпрашања во SELECT.

Воведена е нова техника за искористување на пропусти во SQLite

Воведена е нова техника за искористување на пропусти во SQLite

Извор: opennet.ru

Додадете коментар