تم اقتراح طريقة هجوم لتحديد أجزاء الذاكرة عن بُعد على الخادم

قامت مجموعة من الباحثين من جامعة غراتس التقنية (النمسا) ، المعروفين سابقًا بتطوير هجمات MDS و NetSpectre و Throwhammer و ZombieLoad ، بنشر طريقة جديدة للهجوم (CVE-2021-3714) من خلال قنوات الجهات الخارجية على الذاكرة- آلية إلغاء البيانات المكررة ، والتي تسمح بتحديد وجود بيانات معينة في الذاكرة ، أو تسرب محتويات ذاكرة بايت بايت ، أو تحديد تخطيط الذاكرة لتجاوز حماية عشوائية العنوان (ASLR). تختلف الطريقة الجديدة عن المتغيرات الموضحة سابقًا للهجمات على آلية إلغاء البيانات المكررة من خلال تنفيذ هجوم من مضيف خارجي باستخدام كمعيار يتغير في وقت الاستجابة للطلبات المرسلة من قبل المهاجم عبر بروتوكولات HTTP / 1 و HTTP / 2. تم توضيح إمكانية تنفيذ الهجوم للخوادم القائمة على Linux و Windows.

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

أظهر الباحثون أن التأخيرات الناتجة عن تشغيل آلية COW يمكن اكتشافها ليس فقط محليًا ، ولكن أيضًا من خلال تحليل التغيير في وقت تسليم الردود عبر الشبكة. تم اقتراح عدة طرق لتحديد محتويات الذاكرة من مضيف بعيد من خلال تحليل وقت تنفيذ الطلبات عبر بروتوكولات HTTP / 1 و HTTP / 2. لحفظ القوالب المحددة ، يتم استخدام تطبيقات الويب النموذجية التي تخزن المعلومات الواردة في الطلبات في الذاكرة.

المبدأ العام للهجوم هو ملء صفحة الذاكرة على الخادم ببيانات يحتمل أن تكرر محتويات صفحة الذاكرة الموجودة بالفعل على الخادم. ثم ينتظر المهاجم حتى تقوم kernel بإلغاء ودمج صفحة الذاكرة قبل تعديل النسخة المقيدة للبيانات وتقييم وقت الاستجابة لتحديد ما إذا كانت النتيجة ناجحة.

تم اقتراح طريقة هجوم لتحديد أجزاء الذاكرة عن بُعد على الخادم

في سياق التجارب ، كان الحد الأقصى لمعدل تسرب المعلومات 34.41 بايت في الساعة عند الهجوم عبر الشبكة العالمية و 302.16 بايت في الساعة عند الهجوم عبر الشبكة المحلية ، وهو أسرع من الطرق الأخرى لاستخراج البيانات عبر قنوات الجهات الخارجية ( على سبيل المثال ، عند مهاجمة NetSpectre ، يكون معدل نقل البيانات 7.5 بايت في الساعة الواحدة).

تم اقتراح ثلاثة متغيرات عمل للهجوم. يتيح لك الخيار الأول تحديد البيانات الموجودة في ذاكرة خادم الويب الذي يستخدم Memcached. يأتي الهجوم لتحميل مجموعات بيانات معينة في مخزن Memcached ، ومسح الكتلة المكررة ، وإعادة كتابة نفس العنصر ، وإنشاء شرط لحدوث نسخ COW عن طريق تغيير محتويات الكتلة. أثناء تجربة Memcached ، استغرق الأمر 166.51 ثانية لتحديد إصدار libc المثبت على النظام الذي يعمل في الجهاز الظاهري.

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

أتاح الخيار الثالث إمكانية تجاوز آلية حماية KASLR تمامًا في 4 دقائق والحصول على معلومات حول الإزاحة في ذاكرة صورة نواة الجهاز الظاهري ، في حالة يكون فيها عنوان الإزاحة في صفحة ذاكرة لا توجد بها بيانات أخرى يتغير. تم تنفيذ الهجوم من مجموعة تقع على بعد 14 قفزة من النظام المهاجم. وعد بنشر أمثلة التعليمات البرمجية للهجمات المعروضة على GitHub.

المصدر: opennet.ru

إضافة تعليق