Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2024-21980-poc — استغلال لـ CVE-2024-21980 يستهدف برامج AMD SEV الثابتة لفك تشفير الذاكرة العشوائية للضيوف SEV-SNP المسرحين عبر تجاوز تطبيق المخزن المؤقت للأوامر. | Kitploit
أدوات/GitHubGitHub/freax13/cve-2024-21980-poc
أدوات التشفير/فك التشفيرتحليل الثغرات الأمنيةالاستغلالأمن الأجهزةتطوير الحمولاتاستغلال الملفات الثنائية
GitHubfreax13/cve-2024-21980-poc

cve-2024-21980-poc

استغلال لـ CVE-2024-21980 يستهدف برامج AMD SEV الثابتة لفك تشفير الذاكرة العشوائية للضيوف SEV-SNP المسرحين عبر تجاوز تطبيق المخزن المؤقت للأوامر.

عرض المستودع
8159منذ 2 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

ثغرة في البرنامج الثابت لـ SEV

يحتوي هذا المستودع على استغلال لثغرة في البرنامج الثابت لـ SEV. يسمح الاستغلال بفك تشفير ذاكرة عشوائية لضيف SEV-SNP بعد إلغاء تكليفه.

تم اختباره على الإصدار 1.55.16 (الأحدث وقت كتابة هذا التقرير).

السبب الجذري

يحتوي البرنامج الثابت لـ SEV على جدول يُسمى master_handler_table يحتوي على مؤشرات دالة لجميع الأوامر مع عدد قليل من الخصائص الإضافية ذات الصلة بالأوامر. اثنتان من تلك الخصائص الإضافية هما cmd_buf_type وsnp_cmd_buf_enforcement. يحدد cmd_buf_type ما إذا كان يجب نسخ المخزن المؤقت للأوامر من وإلى ذاكرة المضيف. يحدد snp_cmd_buf_enforcement ما إذا كانت عمليات النسخ هذه يجب أن تخضع لفحوصات تتحقق من أن الذاكرة الداعمة للمخزن المؤقت للأوامر في حالة FIRMWARE أو DEFAULT. يجب أن تكون جميع الأوامر التي يكون cmd_buf_type فيها إما CMD_BUF_OUTPUT_ONLY أو CMD_BUF_INPUT_AND_OUTPUT أو CMD_BUF_INPUT_AND_OUTPUT_ERROR قد تم تعيين snp_cmd_buf_enforcement لها على true. وإلا فإن إعادة كتابة مخرجات الأمر قد تسبب تلفًا في الذاكرة داخل المنطقة المغطاة بـ RMP. snp_cmd_buf_enforcement يكون true لجميع هذه الأوامر باستثناء واحد - SEV_MCMD_ID_ATTESTATION: هذا الأمر لديه cmd_buf_type مضبوطًا على CMD_BUF_INPUT_AND_OUTPUT_ERROR، ولكن أيضًا لديه snp_cmd_buf_enforcement مضبوطًا على false. ونتيجة لذلك، من الممكن تنفيذ SEV_MCMD_ID_ATTESTATION مع مخزن مؤقت للأوامر يشير إلى ذاكرة مغطاة بـ RMP، وتتلف هذه الذاكرة بمجرد كتابة المخرجات مرة أخرى.

لا أرى لماذا يحتاج SEV_MCMD_ID_ATTESTATION أن يكون استثناءً، يبدو لي معقولاً أن هذا قد يكون خطأ مطبعي/نسخ-لصق.

الاستغلال

يكتب SEV_MCMD_ID_ATTESTATION فقط في حقل واحد length (4 بايت) في المخزن المؤقت للأوامر، وبالتالي فهذه هي البايتات الوحيدة التي يمكننا استخدامها لتلف الذاكرة. يكتب SEV_MCMD_ID_ATTESTATION نفس القيمة دائمًا - 0x000000d0. لحسن الحظ، لا توجد متطلبات محاذاة للمخزن المؤقت للأوامر، وبالتالي يمكننا إزاحة المخزن المؤقت للأوامر بشكل متكرر لتلف نطاق أكبر من الذاكرة المتجاورة. سنستخدم هذا لتلف أول 16 بايت من صفحة سياق الضيف بنمط ثابت. تحتوي أول 16 بايت على بذرة مفتاح UMC، وبالتالي بإجبارها على قيمة ثابتة، يمكننا إجبار مفتاح تشفير الضيف على قيمة ثابتة.

الاستغلال المقدم هنا يعتمد بشكل كبير على الاستغلال الذي قدمته لـ SWPSIRT-2684/CVE-2023-31355.

لاستغلال الثغرة، يمكننا تنفيذ الخطوات التالية:

  1. قم بتشغيل ضيف SEV أو SEV-ES. هذا ضروري لـ SEV_MCMD_ID_ATTESTATION. احتفظ بهذا الضيف قيد التشغيل.
  2. قم بإنشاء صفحة سياق ضيف على العنوان 0x2000 للضيف الضحية. أي عنوان آخر في المنطقة المغطاة بـ RMP سيفي بالغرض، على الرغم من أن عنوانًا ثابتًا مفيد لتصحيح الأخطاء.
  3. استخدم الثغرة لتلف بذرة مفتاح UMC للضيف الضحية.
  4. قم بتنشيط صفحة سياق الضيف الضحية وقم بتشغيل الضيف الضحية.
  5. قم بإلغاء تكليف الضيف الضحية.
  6. قم بإنشاء صفحة سياق ضيف على العنوان 0x2000 للضيف المهاجم. يجب أن يكون هذا نفس العنوان المستخدم في الخطوة 1.
  7. استخدم الثغرة لتلف بذرة مفتاح UMC للضيف المهاجم.
  8. قم بتنشيط صفحة سياق الضيف المهاجم وقم بتشغيله مع تمكين علامة التصحيح.
  9. قم بتعيين ذاكرة الضيف الضحية للضيف المهاجم.
  10. استخدم الأمر SNP_DBG_ENCRYPT لفك تشفير ذاكرة الضيف الضحية باستخدام صفحة سياق الضيف المهاجم. سينجح ذلك لأن الضيف الضحية والضيف المهاجم يتشاركان بذرة مفتاح UMC.

التأثير

يجب أن يكون التأثير هنا على الأقل نفس تأثير SWPSIRT-2684. غير واضح لي في هذا الوقت ما إذا كان يمكن استخدام هذا الخلل لفك تشفير ذاكرة ضيف قيد التشغيل قبل إلغاء تكليفه.

التخفيف

يجب تعيين snp_cmd_buf_enforcement إلى true لـ SEV_MCMD_ID_ATTESTATION.

من المثير للاهتمام أن تصحيحات دعم مضيف Linux KVM لا تحتاج إلى تحديثات لأنها تدرج بالفعل SEV_CMD_ATTESTATION_REPORT في sev_cmd_buf_writable كأمر يتطلب أن يكون المخزن المؤقت للأوامر في حالة FIRMWARE. قد تكون هناك حاجة لتغييرات أو لا قد تكون لمشغلات الافتراضية الأخرى.

استخدام الإثبات العملي

تنزيل الأداة