ثغرة أمنية في وحدات المعالجة المركزية AMD تسمح لك بتجاوز آلية الحماية SEV (المحاكاة الافتراضية المشفرة الآمنة)

نشر الباحثون في مركز هيلمهولتز لأمن المعلومات (CISPA) طريقة هجوم CacheWarp جديدة لاختراق آلية أمان AMD SEV (المحاكاة الافتراضية الآمنة المشفرة) المستخدمة في أنظمة المحاكاة الافتراضية لحماية الأجهزة الافتراضية من التدخل من قبل برنامج Hypervisor أو مسؤول النظام المضيف. تسمح الطريقة المقترحة للمهاجم الذي يتمتع بإمكانية الوصول إلى برنامج Hypervisor بتنفيذ تعليمات برمجية لجهة خارجية وتصعيد الامتيازات في جهاز افتراضي محمي باستخدام AMD SEV.

يعتمد الهجوم على استخدام ثغرة أمنية (CVE-2023-20592) ناجمة عن التشغيل غير الصحيح لذاكرة التخزين المؤقت أثناء تنفيذ تعليمات المعالج INVD، والتي من الممكن من خلالها تحقيق عدم تطابق البيانات في الذاكرة وذاكرة التخزين المؤقت ، وآليات التجاوز للحفاظ على سلامة ذاكرة الجهاز الظاهري، والتي يتم تنفيذها بناءً على الامتدادات SEV-ES وSEV-SNP. وتؤثر الثغرة الأمنية على معالجات AMD EPYC من الجيل الأول وحتى الجيل الثالث.

بالنسبة لمعالجات AMD EPYC من الجيل الثالث (Zen 3)، تم حل المشكلة في تحديث الرمز الصغير لشهر نوفمبر الذي أصدرته AMD بالأمس (لا يؤدي الإصلاح إلى أي تدهور في الأداء). بالنسبة للجيلين الأول والثاني من AMD EPYC (Zen 1 وZen 2)، لا يتم توفير الحماية، نظرًا لأن وحدات المعالجة المركزية هذه لا تدعم امتداد SEV-SNP، الذي يوفر التحكم في التكامل للأجهزة الافتراضية. الجيل الرابع من معالجات AMD AMD EPYC “Genoa” المبنية على البنية الدقيقة “Zen 4” ليس عرضة للخطر.

تُستخدم تقنية AMD SEV لعزل الأجهزة الافتراضية بواسطة موفري الخدمات السحابية مثل Amazon Web Services (AWS) وGoogle Cloud وMicrosoft Azure وOracle Compute Infrastructure (OCI). يتم تنفيذ حماية AMD SEV من خلال تشفير ذاكرة الجهاز الظاهري على مستوى الأجهزة. بالإضافة إلى ذلك، يعمل ملحق SEV-ES (الحالة المشفرة) على حماية سجلات وحدة المعالجة المركزية. نظام الضيف الحالي فقط لديه حق الوصول إلى البيانات التي تم فك تشفيرها، وعندما تحاول الأجهزة الافتراضية الأخرى وبرنامج Hypervisor الوصول إلى هذه الذاكرة، فإنها تتلقى مجموعة مشفرة من البيانات.

قدم الجيل الثالث من معالجات AMD EPYC امتدادًا إضافيًا، SEV-SNP (الترحيل المتداخل الآمن)، والذي يضمن التشغيل الآمن لجداول صفحات الذاكرة المتداخلة. بالإضافة إلى التشفير العام للذاكرة وعزل التسجيل، ينفذ SEV-SNP إجراءات إضافية لحماية سلامة الذاكرة عن طريق منع تغييرات الجهاز الظاهري بواسطة برنامج Hypervisor. تتم إدارة مفاتيح التشفير على جانب معالج PSP (معالج أمان النظام الأساسي) منفصل مدمج في الشريحة، ويتم تنفيذه على أساس بنية ARM.

يتمثل جوهر طريقة الهجوم المقترحة في استخدام تعليمات INVD لإبطال الكتل (الأسطر) الموجودة في ذاكرة التخزين المؤقت للصفحات المتسخة دون تفريغ البيانات المتراكمة في ذاكرة التخزين المؤقت في الذاكرة (إعادة الكتابة). وبالتالي، تسمح لك الطريقة بسحب البيانات التي تم تغييرها من ذاكرة التخزين المؤقت دون تغيير حالة الذاكرة. لتنفيذ الهجوم، يُقترح استخدام استثناءات البرامج (حقن الأخطاء) لمقاطعة تشغيل الجهاز الظاهري في مكانين: في المقام الأول، يستدعي المهاجم تعليمات "wbnoinvd" لإعادة ضبط جميع عمليات الكتابة في الذاكرة المتراكمة في ذاكرة التخزين المؤقت، وفي المقام الثاني يستدعي تعليمات "invd" لإعادة عمليات الكتابة التي لا تنعكس في الذاكرة إلى الحالة القديمة.

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

على سبيل المثال، أثبت الباحثون إمكانية استخدام طريقة CacheWarp لتنفيذ هجوم Bellcore على تنفيذ خوارزمية RSA-CRT في مكتبة ipp-crypto، مما أتاح استعادة المفتاح الخاص من خلال استبدال الخطأ عند حساب رقم رقمي. إمضاء. ويوضح أيضًا كيف يمكنك تغيير معلمات التحقق من الجلسة إلى OpenSSH عند الاتصال عن بعد بنظام ضيف، ثم تغيير حالة التحقق عند تشغيل الأداة المساعدة sudo للحصول على حقوق الجذر في Ubuntu 20.04. تم اختبار الثغرة على الأنظمة التي تحتوي على معالجات AMD EPYC 7252 و7313P و7443.

المصدر: opennet.ru

إضافة تعليق