Ներդրվել է 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»-ի էությունը sqlite_master սպասարկման աղյուսակում «sql» դաշտի բովանդակության փոխարինումն է, որը որոշում է տվյալների բազայի կառուցվածքը: Նշված դաշտը պարունակում է DDL (Data Definition Language) բլոկ, որն օգտագործվում է տվյալների բազայի օբյեկտների կառուցվածքը նկարագրելու համար: Նկարագրությունը նշված է ստանդարտ SQL շարահյուսության միջոցով, այսինքն. օգտագործվում է «ՍՏԵՂԾԵԼ ՍԵՂԱՆԱԿ» կոնստրուկցիան,
որն իրականացվում է տվյալների բազայի սկզբնավորման գործընթացում (առաջին գործարկման ժամանակ
sqlite3LocateTable-ը գործում է հիշողության մեջ աղյուսակի հետ կապված ներքին կառուցվածքներ ստեղծելու համար:

Գաղափարն այն է, որ «CREATE TABLE»-ը «CREATE VIEW»-ով փոխարինելու արդյունքում հնարավոր է դառնում վերահսկել ցանկացած մուտք դեպի տվյալների բազա՝ սահմանելով սեփական տեսակետը: «CREATE VIEW» օգտագործելով «SELECT» գործողությունը կապված է աղյուսակի հետ, որը կկանչվի «CREATE TABLE»-ի փոխարեն և թույլ է տալիս մուտք գործել SQLite թարգմանչի տարբեր մասեր: Հաջորդը, հարձակման ամենապարզ մեթոդը կլինի «load_extension» ֆունկցիան կանչելը, որը թույլ է տալիս բեռնել կամայական գրադարան ընդլայնմամբ, սակայն այս գործառույթը լռելյայն անջատված է:

Հարձակում իրականացնելու համար, երբ հնարավոր է կատարել «SELECT» օպերացիան, առաջարկվում է «Query Oriented Programming» տեխնիկան, որը հնարավորություն է տալիս օգտագործել SQLite-ի խնդիրները, որոնք հանգեցնում են հիշողության խաթարման: Տեխնիկան հիշեցնում է վերադարձի վրա հիմնված ծրագրավորում (ROP, Վերադարձի վրա կողմնորոշված ​​ծրագրավորում), սակայն օգտագործում է մեքենայի կոդի ոչ գոյություն ունեցող հատվածներ՝ զանգերի շղթա («գործիքներ») ստեղծելու համար, այլ զետեղում է ենթահարկերի մի շարք SELECT-ի ներսում:

Ներդրվել է SQLite-ում խոցելիության շահագործման նոր տեխնիկա։

Ներդրվել է SQLite-ում խոցելիության շահագործման նոր տեխնիկա։

Source: opennet.ru

Добавить комментарий