Даследнікі з кампаніі Check Point
Для паспяховага нападу неабходна наяўнасць магчымасці мадыфікацыі файлаў БД атакаваных прыкладанняў, што абмяжоўвае метад нападам на прыкладанні, якія выкарыстоўваюць БД SQLite у якасці фармату для транзітных і ўваходных дадзеных. Метад таксама можа ўжывацца для пашырэння ўжо атрыманага лакальнага доступу, напрыклад, для інтэграцыі утоеных бэкдораў у выкарыстоўваныя прыкладанні, а таксама для абыходу даследнікамі бяспекі механізмаў абароны пры аналізе шкоднаснага ПА. Эксплуатацыя пасля падмены файла ажыццяўляецца ў момант выканання дадаткам першага SELECT-запыту да табліцы ў мадыфікаванай БД.
У якасці прыкладу прадэманстравана магчымасць запуску кода ў iOS пры адкрыцці адраснай кнігі, файл з БД "AddressBook.sqlitedb" якой быў зменены з выкарыстаннем прапанаванага метаду. Для нападу выкарыстоўвалася ўразлівасць у функцыі fts3_tokenizer (CVE-2019-8602, магчымасць разнаймення паказальніка), выпраўленая ў красавіцкім абнаўленні SQLite 2.28, нараўне з іншай
Метад нападу заснаваны на выкарыстанні двух тэхнік "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, якія прыводзяць да пашкоджання памяці. Тэхніка нагадвае зваротна-арыентаванае праграмаванне (
Крыніца: opennet.ru