تم اكتشاف تقنية جديدة لاستغلال الثغرات الأمنية في SQLite

الإصدارات الضعيفة من سكليتي

الكثير كشف باحثو Check Point مؤخرًا في مؤتمر DEF مع التفاصيل من تقنية جديدة تم اكتشافها، هذا مستخدم صلمهاجمة التطبيقات التي تستخدم إصدارات ضعيفة من SQLite.

الطريقة ترى Check Point أن ملفات قاعدة البيانات فرصة لدمج سيناريوهات استغلال الثغرات الأمنية في العديد من أنظمة SQLite الفرعية الداخلية التي لا يمكن الوصول إليها لاستغلال الجبهة. طور الباحثون أيضًا تقنية لاستغلال الثغرات الأمنية باستخدام ترميز الاستغلال في شكل سلسلة من استعلامات SELECT في قاعدة بيانات SQLite ، مما يسمح بتجنب ASLR.

حول الضعف

قام باحثو Check Point بتفصيل ذلك من أجل هجوم ناجح ، يجب أن يكون المهاجم قادرًا على تعديل ملفات قاعدة البيانات للتطبيقات المهاجمة، مما يحد من طريقة مهاجمة التطبيقات التي تستخدم قواعد بيانات SQLite كتنسيق لنقل البيانات وإدخالها.

على أية حال يكشفون أيضًا عن إمكانية استخدام الطريقة أيضًا لتوسيع الوصول المحلي الذي تم الحصول عليه بالفعل ، على سبيل المثال ، لدمج الأبواب الخلفية المخفية في التطبيقات المستخدمة ، وكذلك لتجنب الباحثين الأمنيين عند تحليل البرامج الضارة.

يتم تنفيذ العملية بعد تمثيل الملف في الوقت الذي ينفذ فيه التطبيق أول طلب SELECT للجدول في قاعدة البيانات المعدلة.

على سبيل المثال ، تم توضيح القدرة على تشغيل التعليمات البرمجية على iOS عند فتح دفتر العناوين ، الملف بقاعدة البيانات «دفتر العناوين»الذي تم تعديله بالطريقة المقترحة.

للهجوم ، تم استخدام ثغرة أمنية في وظيفة fts3_tokenizer (CVE-2019-8602 ، القدرة على إلغاء الإشارة إلى مؤشر) ، تم إصلاحه في تحديث أبريل SQLite 2.28 ، إلى جانب ثغرة أمنية أخرى في تنفيذ وظائف النافذة.

وبالإضافة إلى ذلك، يوضح استخدام طريقة التحكم عن بعد في مصادرة خادم خلفية من المهاجمين المكتوبين بلغة PHP، والتي تتراكم كلمات المرور التي تم اعتراضها أثناء عملية الشفرة الضارة (تم نقل كلمات المرور التي تم اعتراضها في شكل قاعدة بيانات SQLite).

تعتمد طريقة الهجوم على استخدام تقنيتين ، وهما Query Hijacking و Query Oriented Programming ، والتي تسمح باستغلال المشاكل العشوائية التي تؤدي إلى تلف الذاكرة في محرك SQLite.

يتمثل جوهر "اختطاف الاستعلام" في استبدال محتوى الحقل "sql" في جدول خدمة sqlite_master الذي يحدد بنية قاعدة البيانات. يحتوي الحقل المحدد على كتلة DDL (لغة تعريف البيانات) المستخدمة لوصف بنية الكائنات في قاعدة البيانات.

يتم تعيين الوصف باستخدام بناء جملة SQL العادي ، على سبيل المثال. يتم استخدام بنية "CREATE TABLE" ، التي يتم إجراؤها أثناء تهيئة قاعدة البيانات (أثناء التنفيذ الأول لوظيفة sqlite3LocateTable) لإنشاء هياكل داخلية مرتبطة بالجدول في الذاكرة.

الفكرة هي أنه نتيجة لاستبدال "CREATE TABLE" و "CREATE VIEW"، فمن الممكن التحكم في أي وصول لقاعدة البيانات من خلال تعريف وجهة نظرها.

من ناحية أخرى ، باستخدام أمر "CREATE VIEW" ، يتم إرفاق عملية "SELECT" بالجدول ، والتي سيتم استدعاؤها بدلاً من "CREATE TABLE" وتسمح للمهاجم بالوصول إلى أجزاء مختلفة من مترجم SQLite.

بالإضافة إلى ذلك ، فإن أسهل طريقة للهجوم هي استدعاء وظيفة "load_extension" ، والتي تتيح للمهاجم إمكانية تحميل مكتبة عشوائية بالامتداد ، ولكن يتم تعطيل هذه الوظيفة افتراضيًا.

لتنفيذ هجوم في ظل ظروف القدرة على تنفيذ عملية SELECT ، تم اقتراح تقنية البرمجة الموجهة للاستعلام ، والتي تسمح باستغلال المشكلات في SQLite التي تؤدي إلى تلف الذاكرة.

تذكرنا هذه التقنية بالبرمجة المرتجعة (ROP) ، ولكنها تستخدم مقتطفات شفرة آلة غير موجودة ، ولكن يتم إدراجها في مجموعة من الاستعلامات الفرعية داخل SELECT لإنشاء سلسلة من الاستدعاءات ("الأدوات").

مصدر: https://threatpost.com/


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: AB Internet Networks 2008 SL
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.