Yo te prezante yon nouvo teknik pou eksplwate frajilite nan SQLite.

Chèchè soti nan Check Point dekouvwi nan konferans lan DEF CON, detay sou yon nouvo teknik pou atake aplikasyon lè l sèvi avèk vèsyon vilnerab nan SQLite. Metòd Check Point konsidere dosye baz done kòm yon opòtinite pou entegre senaryo pou eksplwate frajilite nan divès sous-sistèm SQLite entèn ki pa dirèkteman eksplwate. Chèchè yo te prepare tou yon teknik pou eksplwate frajilite yo pa kode eksplwatasyon an nan fòm lan nan yon chèn nan rechèch SELECT nan baz done a SQLite, ki pèmèt ou kontoune ASLR.

Pou yon atak siksè, li nesesè pou kapab modifye dosye yo baz done nan aplikasyon yo atake, ki limite metòd la nan atak sou aplikasyon ki itilize baz done a SQLite kòm yon fòma pou transpò ak done antre. Metòd la ka itilize tou pou elaji aksè lokal ki egziste deja, pou egzanp, entegre pòt kache nan aplikasyon yo itilize, osi byen ke kontoune mekanis sekirite lè analize malveyan pa chèchè sekirite yo. Operasyon apre sibstitisyon fichye fèt nan moman aplikasyon an egzekite premye rechèch SELECT la kont yon tab nan baz done modifye a.

Kòm yon egzanp, nou demontre kapasite nan kouri kòd nan iOS lè louvri yon liv adrès, yo te modifye dosye a ak baz done "AddressBook.sqlitedb" lè l sèvi avèk metòd yo pwopoze a. Atak la te itilize yon vilnerabilite nan fonksyon fts3_tokenizer (CVE-2019-8602, kapasite dereference pointer), fiks nan aktyalizasyon avril SQLite 2.28 la, ansanm ak yon lòt. vilnerabilite nan aplikasyon an nan fonksyon fenèt yo. Anplis de sa, yo te demontre itilizasyon yon metòd pou sezi kontwòl adistans sèvè backend yon atakè ekri nan PHP, ki akimile modpas entèsepte pandan operasyon an nan kòd move (modpas entèsepte yo te transmèt nan fòm lan nan yon baz done SQLite).

Metòd atak la baze sou itilizasyon de teknik "Query Hijacking" ak "Query Oriented Programming", ki pèmèt eksplwate pwoblèm abitrè ki mennen nan koripsyon memwa nan motè SQLite a. Sans "Query Hijacking" se ranplase sa ki nan jaden "sql" nan tab sèvis sqlite_master, ki detèmine estrikti baz done a. Jaden ki espesifye a gen yon blòk DDL (Data Definition Language) ki itilize pou dekri estrikti objè ki nan baz done a. Deskripsyon an espesifye lè l sèvi avèk sentaks SQL estanda, i.e. konstriksyon "CREATE TABLE" yo itilize,
ki egzekite pandan pwosesis inisyalizasyon baz done a (pandan premye lansman an
sqlite3LocateTable fonksyon pou kreye estrikti entèn ki gen rapò ak tab nan memwa.

Lide a se ke, kòm yon rezilta nan ranplase "CREATE TABLE" ak "CREATE VIEW", li vin posib kontwole nenpòt aksè nan baz done a pa defini pwòp vi ou. Sèvi ak "CREATE VIEW" yon operasyon "SELECT" mare sou tab la, ki pral rele olye de "CREATE TABLE" epi pèmèt ou jwenn aksè nan diferan pati nan entèprèt SQLite la. Apre sa, metòd ki pi senp nan atak ta dwe rele fonksyon "load_extension", ki pèmèt ou chaje yon bibliyotèk abitrè ak yon ekstansyon, men fonksyon sa a enfim pa default.

Pou fè yon atak lè li posib pou fè operasyon "SELECT" la, yo pwopoze teknik "Query Oriented Programming", ki fè li posib pou eksplwate pwoblèm nan SQLite ki mennen nan koripsyon memwa. Teknik la raple pwogramasyon ki oryante pou retounen (ROP, Return-Oriented Programming), men li sèvi ak fragments ki pa egziste nan kòd machin pou konstwi yon chèn apèl ("gadgets"), men foure nan yon seri subqueries andedan SELECT.

Yo te prezante yon nouvo teknik pou eksplwate frajilite nan SQLite.

Yo te prezante yon nouvo teknik pou eksplwate frajilite nan SQLite.

Sous: opennet.ru

Add nouvo kòmantè