ื”ื•ืฆื’ื” ื˜ื›ื ื™ืงื” ื—ื“ืฉื” ืœื ื™ืฆื•ืœ ื ืงื•ื“ื•ืช ืชื•ืจืคื” ื‘-SQLite.

ื—ื•ืงืจื™ื ืžืฆ'ืง ืคื•ื™ื ื˜ ื—ึธืฉื‚ื•ึผืฃ ื‘ื›ื ืก DEF CON, ืคืจื˜ื™ื ืขืœ ื˜ื›ื ื™ืงื” ื—ื“ืฉื” ืœืชืงื™ืคืช ื™ื™ืฉื•ืžื™ื ื‘ืืžืฆืขื•ืช ื’ืจืกืื•ืช ืคื’ื™ืขื•ืช ืฉืœ SQLite. ืฉื™ื˜ืช ืฆ'ืง ืคื•ื™ื ื˜ ืžื—ืฉื™ื‘ื” ืงื‘ืฆื™ ืžืกื“ ื ืชื•ื ื™ื ื›ื”ื–ื“ืžื ื•ืช ืœืฉื™ืœื•ื‘ ืชืจื—ื™ืฉื™ื ืœื ื™ืฆื•ืœ ืคื’ื™ืขื•ื™ื•ืช ื‘ืชืชื™-ืžืขืจื›ื•ืช ืคื ื™ืžื™ื•ืช ืฉื•ื ื•ืช ืฉืœ 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" ื”ื™ื ืœื”ื—ืœื™ืฃ ืืช ื”ืชื•ื›ืŸ ืฉืœ ืฉื“ื” "sql" ื‘ื˜ื‘ืœืช ื”ืฉื™ืจื•ืช sqlite_master, ื”ืงื•ื‘ืขืช ืืช ืžื‘ื ื” ืžืกื“ ื”ื ืชื•ื ื™ื. ื”ืฉื“ื” ืฉืฆื•ื™ืŸ ืžื›ื™ืœ ื‘ืœื•ืง DDL (Data Definition Language) ื”ืžืฉืžืฉ ืœืชื™ืื•ืจ ืžื‘ื ื” ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืžืกื“ ื”ื ืชื•ื ื™ื. ื”ืชื™ืื•ืจ ืžืฆื•ื™ืŸ ื‘ืืžืฆืขื•ืช ืชื—ื‘ื™ืจ SQL ืกื˜ื ื“ืจื˜ื™, ื›ืœื•ืžืจ. ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืžื‘ื ื” "CREATE TABLE",
ืืฉืจ ืžื‘ื•ืฆืข ื‘ืžื”ืœืš ืชื”ืœื™ืš ื”ืืชื—ื•ืœ ืฉืœ ืžืกื“ ื”ื ืชื•ื ื™ื (ื‘ืžื”ืœืš ื”ื”ืฉืงื” ื”ืจืืฉื•ื ื”
sqlite3LocateTable ืคื•ื ืงืฆื™ื•ืช ืœื™ืฆื™ืจืช ืžื‘ื ื™ื ืคื ื™ืžื™ื™ื ื”ืงืฉื•ืจื™ื ืœื˜ื‘ืœื” ื‘ื–ื™ื›ืจื•ืŸ.

ื”ืจืขื™ื•ืŸ ื”ื•ื ืฉื›ืชื•ืฆืื” ืžื”ื—ืœืคืช "CREATE TABLE" ื‘-"CREATE VIEW", ื ื™ืชืŸ ื™ื”ื™ื” ืœืฉืœื•ื˜ ื‘ื›ืœ ื’ื™ืฉื” ืœืžืกื“ ื”ื ืชื•ื ื™ื ืขืœ ื™ื“ื™ ื”ื’ื“ืจืช ื”ืชืฆื•ื’ื” ืฉืœืš. ื‘ืืžืฆืขื•ืช "CREATE VIEW" ืคืขื•ืœืช "SELECT" ืงืฉื•ืจื” ืœื˜ื‘ืœื”, ืฉืชื™ืงืจื ื‘ืžืงื•ื "CREATE TABLE" ื•ืžืืคืฉืจืช ื’ื™ืฉื” ืœื—ืœืงื™ื ืฉื•ื ื™ื ืฉืœ ื”ืžืชื•ืจื’ืžืŸ SQLite. ื‘ืฉืœื‘ ื”ื‘ื, ืฉื™ื˜ืช ื”ื”ืชืงืคื” ื”ืคืฉื•ื˜ื” ื‘ื™ื•ืชืจ ืชื”ื™ื” ืœืงืจื•ื ืœืคื•ื ืงืฆื™ื” "load_extension", ื”ืžืืคืฉืจืช ืœืš ืœื˜ืขื•ืŸ ืกืคืจื™ื™ื” ืฉืจื™ืจื•ืชื™ืช ืขื ืกื™ื•ืžืช, ืืš ืคื•ื ืงืฆื™ื” ื–ื• ืžื•ืฉื‘ืชืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ.

ื›ื“ื™ ืœื‘ืฆืข ืชืงื™ืคื” ื›ืืฉืจ ื ื™ืชืŸ ืœื‘ืฆืข ืืช ืคืขื•ืœืช ื”-"SELECT", ืžื•ืฆืขืช ื˜ื›ื ื™ืงืช "Query Oriented Programming", ื”ืžืืคืฉืจืช ืœื ืฆืœ ื‘ืขื™ื•ืช ื‘-SQLite ืฉืžื•ื‘ื™ืœื•ืช ืœืฉื—ื™ืชื•ืช ื–ื™ื›ืจื•ืŸ. ื”ื˜ื›ื ื™ืงื” ืžื–ื›ื™ืจื” ืชื›ื ื•ืช ืžื›ื•ื•ืŸ ื”ื—ื–ืจื” (R.O.P., ืชื›ื ื•ืช ืžื›ื•ื•ืŸ ื”ื—ื–ืจื”), ืืš ืื™ื ื• ืžืฉืชืžืฉ ื‘ืงื˜ืขื™ ืงื•ื“ ืžื›ื•ื ื” ืงื™ื™ืžื™ื ื›ื“ื™ ืœื‘ื ื•ืช ืฉืจืฉืจืช ืฉื™ื—ื•ืช ("ื’ืื“ื’'ื˜ื™ื"), ืืœื ืžื•ืกื™ืฃ ืœืงื‘ื•ืฆื” ืฉืœ ืฉืื™ืœืชื•ืช ืžืฉื ื” ื‘ืชื•ืš SELECT.

ื”ื•ืฆื’ื” ื˜ื›ื ื™ืงื” ื—ื“ืฉื” ืœื ื™ืฆื•ืœ ื ืงื•ื“ื•ืช ืชื•ืจืคื” ื‘-SQLite.

ื”ื•ืฆื’ื” ื˜ื›ื ื™ืงื” ื—ื“ืฉื” ืœื ื™ืฆื•ืœ ื ืงื•ื“ื•ืช ืชื•ืจืคื” ื‘-SQLite.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”