Ymchwilwyr o Check Point yng nghynhadledd DEF CON, manylion techneg newydd ar gyfer ymosod ar geisiadau gan ddefnyddio fersiynau bregus o SQLite. Mae dull Check Point yn ystyried ffeiliau cronfa ddata fel cyfle i integreiddio senarios ar gyfer manteisio ar wendidau mewn amrywiol is-systemau SQLite mewnol nad oes modd eu hecsbloetio'n uniongyrchol. Mae ymchwilwyr hefyd wedi paratoi techneg ar gyfer manteisio ar wendidau trwy amgodio'r camfanteisio ar ffurf cadwyn o ymholiadau SELECT yng nghronfa ddata SQLite, sy'n eich galluogi i osgoi ASLR.
Ar gyfer ymosodiad llwyddiannus, mae angen gallu addasu ffeiliau cronfa ddata'r cymwysiadau yr ymosodwyd arnynt, sy'n cyfyngu'r dull i ymosodiadau ar gymwysiadau sy'n defnyddio cronfa ddata SQLite fel fformat ar gyfer trosglwyddo a mewnbynnu data. Gellir defnyddio'r dull hefyd i ehangu mynediad lleol presennol, er enghraifft, i integreiddio drysau cefn cudd i gymwysiadau a ddefnyddir, yn ogystal ag i osgoi mecanweithiau diogelwch wrth ddadansoddi malware gan ymchwilwyr diogelwch. Gweithredu ar ôl amnewid ffeiliau ar hyn o bryd mae'r rhaglen yn gweithredu'r ymholiad SELECT cyntaf yn erbyn tabl yn y gronfa ddata wedi'i haddasu.
Er enghraifft, fe wnaethom ddangos y gallu i redeg cod yn iOS wrth agor llyfr cyfeiriadau, addaswyd y ffeil gyda'r gronfa ddata "AddressBook.sqlitedb" gan ddefnyddio'r dull arfaethedig. Defnyddiodd yr ymosodiad wendid yn y swyddogaeth fts3_tokenizer (CVE-2019-8602, gallu cyfeirio pwyntydd), a osodwyd yn niweddariad Ebrill SQLite 2.28, ynghyd ag un arall wrth weithredu swyddogaethau ffenestri. Yn ogystal, dangoswyd y defnydd o ddull ar gyfer cipio rheolaeth o bell ar weinydd backend ymosodwr a ysgrifennwyd yn PHP, sy'n cronni cyfrineiriau a ryng-gipiwyd yn ystod gweithrediad cod maleisus (trosglwyddwyd y cyfrineiriau rhyng-gipio ar ffurf cronfa ddata SQLite).
Mae'r dull ymosod yn seiliedig ar ddefnyddio dwy dechneg “Hwgipio Ymholiad” a “Rhaglennu sy'n Canolbwyntio ar Ymholiad”, sy'n caniatáu manteisio ar broblemau mympwyol sy'n arwain at lygredd cof yn yr injan SQLite. Hanfod “Hwgipio Ymholiad” yw disodli cynnwys y maes “sql” yn y tabl gwasanaeth sqlite_master, sy'n pennu strwythur y gronfa ddata. Mae'r maes penodedig yn cynnwys bloc DDL (Iaith Diffiniad Data) a ddefnyddir i ddisgrifio strwythur gwrthrychau yn y gronfa ddata. Pennir y disgrifiad gan ddefnyddio cystrawen SQL safonol, h.y. defnyddir yr adeiladwaith “CREATE TABL”,
a weithredir yn ystod y broses gychwyn cronfa ddata (yn ystod y lansiad cyntaf
Mae sqlite3LocateTable yn gweithio i greu strwythurau mewnol sy'n gysylltiedig â thabl yn y cof.
Y syniad yw, o ganlyniad i ddisodli “CREATE TABL” am “CREATE VIEW”, y daw’n bosibl rheoli unrhyw fynediad i’r gronfa ddata trwy ddiffinio eich barn eich hun. Gan ddefnyddio "CREATE VIEW" mae gweithrediad "SELECT" wedi'i rwymo i'r bwrdd, a fydd yn cael ei alw yn lle "CREATE TABLE" ac sy'n caniatáu ichi gael mynediad i wahanol rannau o'r dehonglydd SQLite. Nesaf, y dull ymosod symlaf fyddai galw'r swyddogaeth "load_extension", sy'n eich galluogi i lwytho estyniad i lyfrgell fympwyol, ond mae'r swyddogaeth hon wedi'i hanalluogi yn ddiofyn.
Er mwyn cynnal ymosodiad pan fo'n bosibl cyflawni'r gweithrediad “SELECT”, cynigir y dechneg “Rhaglennu sy'n Canolbwyntio ar Ymholiad”, sy'n ei gwneud hi'n bosibl manteisio ar broblemau yn SQLite sy'n arwain at lygredd cof. Mae'r dechneg yn atgoffa rhywun o raglennu sy'n canolbwyntio ar ddychwelyd (, Rhaglennu sy'n Canolbwyntio ar Ddychwelyd), ond nid yw'n defnyddio pytiau presennol o god peiriant i adeiladu cadwyn o alwadau (“teclynnau”), ond yn mewnosod set o subqueries y tu mewn i SELECT.
Ffynhonnell: opennet.ru
