تکنیک جدیدی برای بهره برداری از آسیب پذیری ها در SQLite معرفی شده است.

محققان از چک پوینت بدون پوشش در کنفرانس 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" جایگزینی محتویات فیلد "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 که منجر به تخریب حافظه می شود، فراهم می کند. این تکنیک یادآور برنامه نویسی بازگشت گرا است (ROP، برنامه نویسی بازگشت گرا)، اما از تکه های کد ماشین موجود برای ایجاد زنجیره ای از تماس ها ("گجت ها") استفاده نمی کند، بلکه مجموعه ای از سوالات فرعی را در داخل SELECT درج می کند.

تکنیک جدیدی برای بهره برداری از آسیب پذیری ها در SQLite معرفی شده است.

تکنیک جدیدی برای بهره برداری از آسیب پذیری ها در SQLite معرفی شده است.

منبع: opennet.ru

اضافه کردن نظر