Прадстаўлена новая тэхніка эксплуатацыі ўразлівасцяў у 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).

Метад нападу заснаваны на выкарыстанні двух тэхнік "Query Hijacking" і "Query Oriented Programming", якія дазваляюць эксплуатаваць адвольныя праблемы, якія прыводзяць да пашкоджання памяці ў рухавічку SQLite. Сутнасць "Query Hijacking" у падмене змесціва поля "sql" у службовай табліцы sqlite_master, вызначальнай структуру БД. Указанае поле змяшчае блок DDL (Data Definition Language), які выкарыстоўваецца для апісання структуры аб'ектаў у БД. Апісанне задаецца з выкарыстаннем штатнага сінтаксісу SQL, г.зн. выкарыстоўваецца канструкцыя "CREATE TABLE",
якая выконваецца ў працэсе ініцыялізацыі БД (падчас першага запуску
функцыі sqlite3LocateTable) для стварэння злучаных з табліцай унутраных структур у памяці.

Ідэя ў тым, што, у выніку замены "CREATE TABLE" на "CREATE VIEW" з'яўляецца магчымасць праз вызначэнне свайго ўяўлення кантраляваць любы зварот да БД. Пры дапамозе "CREATE VIEW" да табліцы прывязваецца аперацыя "SELECT", якая будзе выклікана замест "CREATE TABLE" і дазваляе звяртацца да розных частак інтэрпрэтатара SQLite. Далей самым простым спосабам нападу быў бы выклік функцыі "load_extension", якая дазваляе загрузіць адвольную бібліятэку з пашырэннем, але дадзеная функцыя адключаная па змаўчанні.

Для здзяйснення нападу ва ўмовах магчымасці выканання аперацыі "SELECT" прапанавана тэхніка "Query Oriented Programming", якая дае магчымасць эксплуатаваць праблемы ў SQLite, якія прыводзяць да пашкоджання памяці. Тэхніка нагадвае зваротна-арыентаванае праграмаванне (ROP, Return-Oriented Programming), але выкарыстоўвае для пабудовы ланцужкі выклікаў («гаджэтаў») не існуючыя ўрыўкі машыннага кода, а ўстаўкі ў наборы подзапросов ўнутры SELECT.

Прадстаўлена новая тэхніка эксплуатацыі ўразлівасцяў у SQLite

Прадстаўлена новая тэхніка эксплуатацыі ўразлівасцяў у SQLite

Крыніца: opennet.ru

Дадаць каментар