Undersikers fan Check Point
Foar in suksesfolle oanfal is it nedich om de databankbestannen fan 'e oanfallen applikaasjes te feroarjen, wat de metoade beheint ta oanfallen op applikaasjes dy't de SQLite-database brûke as formaat foar transit- en ynfiergegevens. De metoade kin ek brûkt wurde om besteande lokale tagong út te wreidzjen, bygelyks om ferburgen efterdoarren te yntegrearjen yn brûkte applikaasjes, en ek om feiligensmeganismen te omgean by it analysearjen fan malware troch feiligensûndersikers. Operaasje nei triemferfanging wurdt útfierd op it momint dat de applikaasje de earste SELECT-query útfiert tsjin in tabel yn 'e wizige databank.
As foarbyld hawwe wy de mooglikheid oantoand om koade yn iOS út te fieren by it iepenjen fan in adresboek, it bestân mei de database "AddressBook.sqlitedb" waard wizige mei de foarstelde metoade. De oanfal brûkte in kwetsberens yn 'e fts3_tokenizer-funksje (CVE-2019-8602, pointer dereference-mooglikheid), fêst yn' e april SQLite 2.28-fernijing, tegearre mei in oar
De oanfalmetoade is basearre op it brûken fan twa techniken "Query Hijacking" en "Query Oriented Programming", dy't mooglik meitsje fan willekeurige problemen dy't liede ta ûnthâldkorrupsje yn 'e SQLite-motor. De essinsje fan "Query Hijacking" is it ferfangen fan de ynhâld fan it "sql" fjild yn 'e sqlite_master tsjinsttabel, dy't de struktuer fan' e databank bepaalt. It oantsjutte fjild befettet in DDL (Data Definition Language) blok dat wurdt brûkt om de struktuer fan objekten yn 'e databank te beskriuwen. De beskriuwing wurdt oantsjutte mei help fan standert SQL syntaksis, i.e. de "CREATE TABLE" konstruksje wurdt brûkt,
dat wurdt útfierd tidens it inisjalisaasjeproses fan de database (by de earste lansearring
sqlite3LocateTable funksjes foar it meitsjen fan tabel-relatearre ynterne struktueren yn it ûnthâld.
It idee is dat, as gefolch fan it ferfangen fan "CREATE TABLE" mei "CREATE VIEW", it mooglik wurdt om elke tagong ta de databank te kontrolearjen troch jo eigen werjefte te definiearjen. Mei it brûken fan "CREATE VIEW" is in "SELECT" operaasje bûn oan 'e tabel, dy't sil wurde neamd ynstee fan "CREATE TABLE" en kinne jo tagong krije ta ferskate dielen fan 'e SQLite-tolk. Dêrnei soe de ienfâldichste metoade fan oanfal wêze om de funksje "load_extension" te neamen, wêrtroch jo in willekeurige bibleteek kinne laden mei in útwreiding, mar dizze funksje is standert útskeakele.
Om in oanfal út te fieren as it mooglik is om de operaasje "SELECT" út te fieren, wurdt de technyk "Query Oriented Programming" foarsteld, wêrtroch it mooglik is om problemen yn SQLite te eksploitearjen dy't liede ta ûnthâldkorrupsje. De technyk docht tinken oan werom-rjochte programmearring (
Boarne: opennet.ru