Teknîkek nû ji bo îstismarkirina qelsiyan di SQLite de hate destnîşan kirin.

Lêkolînerên ji Check Point eşkere kirin di konferansa DEF CON de, hûrguliyên teknîkek nû ya ji bo êrîşa ser sepanan bi karanîna guhertoyên xedar ên SQLite bikar tînin. Rêbaza Check Point pelên databasê wekî derfetek ji bo yekkirina senaryoyên ji bo îstismarkirina qelsiyên di bine pergalên SQLite yên navxweyî yên ku rasterast nayên bikar anîn de dihesibîne. Lekolînwanan di heman demê de teknîkek ji bo îstismarkirina qelsiyan amade kirine bi şîfrekirina kemînê di şiklê zincîreyek ji pirsên SELECT de di databasa SQLite de, ku destûrê dide te ku hûn ASLR derbas bikin.

Ji bo êrîşek serketî, pêdivî ye ku meriv bikaribe pelên databasê yên serîlêdanên êrîşkirî biguhezîne, ku vê rêbazê bi êrişên ser sepanên ku databasa SQLite wekî formatek ji bo veguhastin û daneya têketinê bikar tînin sînordar dike. Rêbaz dikare di heman demê de ji bo berfirehkirina gihîştina herêmî ya heyî jî were bikar anîn, mînakî, ji bo entegrekirina dergehên paşde yên veşartî di nav sepanên hatî bikar anîn de, û her weha ji bo derbaskirina mekanîzmayên ewlehiyê dema ku malware ji hêla lêkolînerên ewlehiyê ve analîz dike. Operasyona piştî guheztina pelê di dema ku serîlêdan yekem lêpirsîna SELECT li hember tabloyek di databasa guhertî de pêk tîne.

Mînakî, me dema vekirina pirtûkek navnîşan de kapasîteya xebitandina kodê di iOS-ê de destnîşan kir, pelê bi databasa "AddressBook.sqlitedb" bi karanîna rêbaza pêşniyarkirî hate guherandin. Êrîşê di fonksiyona fts3_tokenizer (CVE-2019-8602, kapasîteya dereferansê ya nîşankerê) de qelsiyek bikar anî, di nûvekirina SQLite 2.28-ê ya Nîsanê de, digel yekî din lawazbûn di pêkanîna fonksiyonên pencereyê de. Wekî din, karanîna rêbazek ji bo ji dûr ve desteserkirina servera paşverû ya êrîşkar a ku di PHP-ê de hatî nivîsandin, ku şîfreyên ku di dema xebitandina koda xirab de hatine girtin berhev dike (şîfreyên ku hatine girtin di forma databasa SQLite de hatine şandin), hate destnîşan kirin.

Rêbaza êrîşê li ser bingeha karanîna du teknolojiyên "Query Hijacking" û "Query Oriented Programming" ye, ku destûrê dide îstismarkirina pirsgirêkên kêfî yên ku di motora SQLite de dibe sedema xerabûna bîranînê. Esasê "Query Hijacking" ev e ku meriv naveroka qada "sql" di tabloya karûbarê sqlite_master de biguhezîne, ku avahiya databasê diyar dike. Qada diyarkirî bloka DDL (Zimanê pênasekirina daneyan) dihewîne ku ji bo danasîna avahiya tiştên di databasê de tê bikar anîn. Danasîn bi karanîna hevoksaziya standard SQL tête diyar kirin, ango. avakirina "CREATE TABLE" tê bikaranîn,
ku di pêvajoya destpêkirina databasê de (di dema destpêkirina yekem de
Fonksiyonên sqlite3LocateTable ku di bîranînê de strukturên hundurîn ên girêdayî tabloyê biafirîne.

Fikir ev e ku, di encama şûna "CREATE TABLE" bi "CREATE VIEW" re, bi destnîşankirina dîtina xwe ve kontrolkirina her gihîştina databasê gengaz dibe. Bi karanîna "CREATE VIEW" operasyonek "SELECT" bi tabloyê ve girêdayî ye, ku dê li şûna "CREATE TABLE" were gazî kirin û dihêle hûn xwe bigihînin beşên cihêreng ên wergêra SQLite. Dûv re, rêbaza êrîşê ya herî hêsan dê bangkirina fonksiyona "load_extension" be, ku dihêle hûn pirtûkxaneyek keyfî bi dirêjkirinê bar bikin, lê ev fonksiyon ji hêla xwerû ve hatî asteng kirin.

Ji bo pêkanîna êrîşek dema ku gengaz e ku operasyona "SELECT" pêk were, teknîka "Bernameya Bernamekirina Oriented Query" tê pêşniyar kirin, ku ev gengaz dike ku pirsgirêkên di SQLite-ê de ku dibin sedema xerabûna bîranînê bikar bînin. Teknîkî bernamesaziya vegerê tîne bîra xwe (ROP, Bernameya Veger-Oriented), lê ne perçeyên heyî yên koda makîneyê bikar tîne da ku zincîrek bangan ("gadgets") ava bike, lê di nav komek jêpirsînan de di hundurê SELECT de dixe.

Teknîkek nû ji bo îstismarkirina qelsiyan di SQLite de hate destnîşan kirin.

Teknîkek nû ji bo îstismarkirina qelsiyan di SQLite de hate destnîşan kirin.

Source: opennet.ru

Add a comment