محققان از چک پوینت
برای یک حمله موفقیت آمیز، لازم است که بتوان فایل های پایگاه داده برنامه های مورد حمله را تغییر داد، که این روش را محدود به حملات به برنامه هایی می کند که از پایگاه داده SQLite به عنوان قالبی برای انتقال و داده های ورودی استفاده می کنند. این روش همچنین می تواند برای گسترش دسترسی محلی موجود، به عنوان مثال، برای ادغام درهای پشتی مخفی در برنامه های کاربردی مورد استفاده، و همچنین برای دور زدن مکانیسم های امنیتی هنگام تجزیه و تحلیل بدافزار توسط محققان امنیتی مورد استفاده قرار گیرد. عملیات پس از جایگزینی فایل در لحظه ای انجام می شود که برنامه اولین کوئری SELECT را در مقابل یک جدول در پایگاه داده اصلاح شده اجرا می کند.
به عنوان مثال، ما توانایی اجرای کد در iOS را هنگام باز کردن یک دفترچه آدرس نشان دادیم، فایل با پایگاه داده "AddressBook.sqlitedb" با استفاده از روش پیشنهادی اصلاح شد. در این حمله از یک آسیبپذیری در تابع fts3_tokenizer (CVE-2019-8602، قابلیت عدم ارجاع اشارهگر)، که در بهروزرسانی آوریل SQLite 2.28 برطرف شده است، استفاده کرد.
روش حمله مبتنی بر استفاده از دو تکنیک Query Hijacking و Query Oriented Programming است که امکان بهره برداری از مشکلات دلخواه را که منجر به تخریب حافظه در موتور SQLite می شود، می دهد. ماهیت "Query Hijacking" جایگزینی محتویات فیلد "sql" در جدول سرویس sqlite_master است که ساختار پایگاه داده را تعیین می کند. فیلد مشخص شده حاوی یک بلوک DDL (زبان تعریف داده) است که برای توصیف ساختار اشیاء در پایگاه داده استفاده می شود. توضیحات با استفاده از نحو استاندارد SQL مشخص شده است. از ساختار "CREATE TABLE" استفاده شده است،
که در طی فرآیند اولیه سازی پایگاه داده (در اولین راه اندازی) اجرا می شود
توابع sqlite3LocateTable برای ایجاد ساختارهای داخلی مرتبط با جدول در حافظه.
ایده این است که در نتیجه جایگزینی "CREATE TABLE" با "CREATE VIEW"، کنترل هرگونه دسترسی به پایگاه داده با تعریف نمای خود امکان پذیر می شود. با استفاده از "CREATE VIEW" یک عملیات "SELECT" به جدول متصل می شود که به جای "CREATE TABLE" فراخوانی می شود و به شما امکان می دهد به قسمت های مختلف مفسر SQLite دسترسی داشته باشید. در مرحله بعد، سادهترین روش حمله فراخوانی تابع «load_extension» است که به شما امکان میدهد یک کتابخانه دلخواه را با یک پسوند بارگیری کنید، اما این تابع به طور پیشفرض غیرفعال است.
برای انجام یک حمله زمانی که امکان انجام عملیات SELECT وجود دارد، تکنیک Query Oriented Programming پیشنهاد شده است که امکان سوء استفاده از مشکلاتی را در SQLite که منجر به تخریب حافظه می شود، فراهم می کند. این تکنیک یادآور برنامه نویسی بازگشت گرا است (
منبع: opennet.ru