Mga mananaliksik mula sa Check Point sa kumperensya ng DEF CON, ang mga detalye ng isang bagong pamamaraan para sa pag-atake ng mga application gamit ang mga masusugatan na bersyon ng SQLite. Isinasaalang-alang ng pamamaraan ng Check Point ang mga file ng database bilang isang pagkakataon upang isama ang mga sitwasyon para sa pagsasamantala ng mga kahinaan sa iba't ibang panloob na mga subsystem ng SQLite na hindi direktang magagamit. Ang mga mananaliksik ay naghanda din ng isang pamamaraan para sa pagsasamantala ng mga kahinaan sa pamamagitan ng pag-encode ng pagsasamantala sa anyo ng isang chain ng mga SELECT query sa database ng SQLite, na nagbibigay-daan sa iyong i-bypass ang ASLR.
Para sa isang matagumpay na pag-atake, kinakailangan upang mabago ang mga file ng database ng mga inatakeng application, na naglilimita sa pamamaraan sa mga pag-atake sa mga application na gumagamit ng database ng SQLite bilang isang format para sa transit at input ng data. Ang pamamaraan ay maaari ding gamitin upang palawakin ang umiiral na lokal na pag-access, halimbawa, upang isama ang mga nakatagong backdoor sa mga ginamit na application, pati na rin upang i-bypass ang mga mekanismo ng seguridad kapag sinusuri ang malware ng mga mananaliksik ng seguridad. Ang operasyon pagkatapos ng pagpapalit ng file ay isinasagawa sa sandaling isagawa ng application ang unang SELECT query laban sa isang talahanayan sa binagong database.
Bilang halimbawa, ipinakita namin ang kakayahang magpatakbo ng code sa iOS kapag nagbukas ng address book, ang file na may database ng "AddressBook.sqlitedb" ay binago gamit ang iminungkahing paraan. Ang pag-atake ay gumamit ng kahinaan sa fts3_tokenizer function (CVE-2019-8602, pointer dereference capability), na naayos sa April SQLite 2.28 update, kasama ng isa pa sa pagpapatupad ng mga function ng window. Bilang karagdagan, ang paggamit ng isang paraan para sa malayuang pag-agaw ng kontrol sa backend server ng isang attacker na nakasulat sa PHP, na nag-iipon ng mga password na naharang sa panahon ng pagpapatakbo ng malisyosong code (ang mga naharang na password ay ipinadala sa anyo ng isang SQLite database), ay ipinakita.
Ang paraan ng pag-atake ay batay sa paggamit ng dalawang pamamaraan na "Query Hijacking" at "Query Oriented Programming", na nagpapahintulot sa pagsasamantala sa mga arbitraryong problema na humahantong sa pagkasira ng memorya sa SQLite engine. Ang kakanyahan ng "Query Hijacking" ay upang palitan ang mga nilalaman ng field na "sql" sa sqlite_master service table, na tumutukoy sa istruktura ng database. Ang tinukoy na field ay naglalaman ng isang bloke ng DDL (Data Definition Language) na ginamit upang ilarawan ang istruktura ng mga bagay sa database. Tinukoy ang paglalarawan gamit ang karaniwang SQL syntax, i.e. ang "GUMAWA NG TALAAN" ay ginagamit,
na isinasagawa sa proseso ng pagsisimula ng database (sa unang paglulunsad
sqlite3LocateTable function upang lumikha ng mga panloob na istruktura na nauugnay sa talahanayan sa memorya.
Ang ideya ay, bilang resulta ng pagpapalit ng "GUMAWA NG TABLE" ng "GUMAWA NG VIEW", nagiging posible na kontrolin ang anumang pag-access sa database sa pamamagitan ng pagtukoy ng iyong sariling view. Gamit ang "GUMAWA NG VIEW" ang isang "PUMILI" na operasyon ay nakatali sa talahanayan, na tatawagin sa halip na "GUMAWA NG TABLE" at nagbibigay-daan sa iyong ma-access ang iba't ibang bahagi ng SQLite interpreter. Susunod, ang pinakasimpleng paraan ng pag-atake ay ang tawagan ang function na "load_extension", na nagpapahintulot sa iyo na mag-load ng isang arbitrary na library na may extension, ngunit ang function na ito ay hindi pinagana bilang default.
Upang magsagawa ng isang pag-atake kapag posible na gawin ang "PUMILI" na operasyon, ang "Query Oriented Programming" na pamamaraan ay iminungkahi, na ginagawang posible na pagsamantalahan ang mga problema sa SQLite na humahantong sa pagkasira ng memorya. Ang pamamaraan ay nakapagpapaalaala sa return-oriented programming (, Return-Oriented Programming), ngunit hindi gumagamit ng mga umiiral na snippet ng machine code upang bumuo ng isang hanay ng mga tawag ("mga gadget"), ngunit naglalagay sa isang hanay ng mga subquery sa loob ng SELECT.
Pinagmulan: opennet.ru
