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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2022-22063 — مشكلة أمنية في البرنامج الثابت (firmware) لمُشغّل الأجهزة الافتراضية (hypervisor) في بعض شرائح Qualcomm الأقدم | Kitploit
أدوات/GitHubGitHub/msm8916-mainline/cve-2022-22063
أمان الأنظمة المدمجةتصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالأمن الأجهزةالأوراق والأبحاثالتعلم والتعليمتحليل البرامج الثابتةاستغلال الملفات الثنائية
GitHubmsm8916-mainline/cve-2022-22063

CVE-2022-22063

مشكلة أمنية في البرنامج الثابت (firmware) لمُشغّل الأجهزة الافتراضية (hypervisor) في بعض شرائح Qualcomm الأقدم

47313منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2022-22063

CVE-2022-22063 هي مشكلة أمنية في البرنامج الثابت للمُشغِّل (hypervisor) لبعض شرائح Qualcomm الأقدم. يمكن إساءة استخدام مكوّن عتادي غير محمي (مُعاد التوجيه عند الإقلاع "boot remapper") للحصول على وصول كامل للقراءة/الكتابة إلى المُشغِّل من نظام تشغيل معدَّل (تصعيد صلاحيات). استغلال الثغرة أمر تافه على المنصات المتأثرة، إذ لا يتطلب معرفة بإصدار البرنامج الثابت المحدد (مثل العناوين أو المتغيرات).

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

نظرة عامة

  • معرّف CVE: CVE-2022-22063
  • التصنيف الأمني (Qualcomm): حرج (Critical)
  • نظام تسجيل الثغرات الشائع: 8.4 (عالٍ), CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • التصنيف المشترك للضعف: CWE-1257: تحكم غير سليم في الوصول مطبَّق على مناطق الذاكرة المعكوسة أو ذات الأسماء المستعارة و/أو CWE-1262: تحكم غير سليم في الوصول لواجهة السجل، وتصنّف Qualcomm الثغرة بشكل واسع ضمن CWE-16: الإعدادات.

نُشرت الثغرة أيضًا في [النشرة الأمنية لشهر ديسمبر 2022 من Qualcomm].

المتطلبات

تعتمد الثغرة على مزيج من العتاد والبرمجيات التي تعمل على الهدف المتأثر:

  1. البرمجيات: يشغّل الجهاز برنامجًا ثابتًا منفصلًا "للمُشغِّل" مقدمًا من Qualcomm (عادةً صورة ELF في قسم hyp على وحدة التخزين الداخلية).
  2. العتاد: توجد نسخة غير آمنة من مُعاد التوجيه عند الإقلاع boot remapper (عادةً يمكن إعداده باستخدام سجل عتادي يُسمى APCS_BOOT_START_ADDR_NSEC)، وهي غير محمية بواسطة المُشغِّل، وبالتالي يمكن الوصول إليها من نواة نظام التشغيل الأقل صلاحية (مثل Linux).

هناك العديد من الشرائح الأخرى التي يحتمل أن تحتوي على العتاد المتأثر (مثل MSM8909 وMSM8953)، لكنها لا تحتوي على برنامج ثابت منفصل للمُشغِّل يمكن اختراقه.

التأثير

  • تصعيد الصلاحيات: بوجود نواة نظام تشغيل مخترقة بالفعل (مثل Linux)، تسمح الثغرة بتصعيد الصلاحيات بسهولة إلى مستوى المُشغِّل (EL1 -> EL2 على ARM). يمكن قراءة أو كتابة جميع الذاكرة التي يديرها المُشغِّل. يؤدي هذا إلى كسر عزل مجالات الأمان المختلفة أو الأجهزة الافتراضية التي يديرها المُشغِّل (إن وُجدت، اعتمادًا على الإعدادات).
    (انظر أيضًا: [مقدمة إلى التحكم في الوصول على منصات Qualcomm Snapdragon])

  • الإقلاع الآمن: تستخدم معظم أجهزة Qualcomm المتوفرة في الإنتاج الإقلاع الآمن لمنع التعديل غير المصرح به للبرنامج الثابت. البرنامج الثابت موقَّع تشفيريًا ويتم التحقق منه بواسطة سلسلة الإقلاع. تسمح الثغرة بتعديل أو حتى استبدال البرنامج الثابت للمُشغِّل المُحمَّل بالكامل أثناء التشغيل من نظام تشغيل معدَّل (إما عبر "فتح قفل مُحمِّل الإقلاع" المدعوم رسميًا أو عبر ثغرة أخرى).
    (انظر أيضًا: [النظرة الفنية العامة للإقلاع الآمن والتحقق من صورة Qualcomm (الإصدار 1.0)] و(الإصدار 2.0))

الخلفية التقنية

ملاحظة: عُثر على الثغرة في الأصل على منصة Qualcomm Snapdragon 410 (MSM8916). قد تكون بعض الشروحات التالية خاصة بمنصة MSM8916، على سبيل المثال:

  • عناوين ذاكرة محددة
  • تصميم البرنامج الثابت 64-بت ARM/AArch64 (بعض المنصات المتأثرة تدعم 32-بت ARM/AArch32 فقط)

ومع ذلك، ينطبق المفهوم العام بشكل مشابه على جميع المنصات المتأثرة.

المُشغِّل (Hypervisor)

يعرّف معمار ARMv8-A 64-بت 4 مستويات صلاحية ("مستويات استثناءات"، EL). توجد مستويات منفصلة تُستخدم عادةً للتطبيقات ونوى أنظمة التشغيل والمُشغِّل:

مستويات استثناءات AArch64

تتبدل وحدة المعالجة المركزية بين المستويات أثناء الاستثناءات، على سبيل المثال بسبب انقطاع وارد. من الممكن أيضًا التبديل بين بعض المستويات باستخدام تعليمات خاصة، مثل استدعاء المُشغِّل (hvc).
(انظر أيضًا: [نموذج استثناءات AArch64])

يمكن للمُشغِّل استضافة جهاز افتراضي واحد أو أكثر مع نوى أنظمة تشغيل منفصلة. يمكن إعطاء كل جهاز افتراضي عرضه الخاص من الذاكرة باستخدام الترجمة من المرحلة الثانية. تمر جميع عمليات الوصول إلى الذاكرة من جهاز افتراضي عبر مرحلتين من الترجمة: الأولى تُدار بواسطة نظام التشغيل (الافتراضي)، بينما تُدار المرحلة الثانية بواسطة المُشغِّل. يمكن إخفاء الذاكرة المستخدمة من قبل المُشغِّل أو الأجهزة الافتراضية الأخرى بحذفها من جداول الترجمة.
(انظر أيضًا: [محاكاة AArch64], [إدارة ذاكرة AArch64])

يعمل البرنامج الثابت للمُشغِّل من Qualcomm في EL2 ويستخدم الترجمة من المرحلة الثانية لمنع الوصول إلى ذاكرة المُشغِّل من نواة نظام التشغيل الرئيسية التي تعمل في EL1 (عادةً Linux). لاحظ أن الترجمة من المرحلة الثانية في هذا الإعداد تُستخدم بشكل أساسي لحماية الذاكرة، دون ترجمة عناوين. يحصل نظام التشغيل الرئيسي على وصول مباشر إلى معظم مكوّنات العتاد في مساحة الإدخال/الإخراج المعيّنة في الذاكرة (MMIO)، مثل وحدة تحكم SD أو نظام الكاميرا. الوصول إلى الذاكرة التي تنتمي إلى المُشغِّل/EL2 (hyp) والمراقب الآمن/EL3 (جزء من tz) مقيد:

حماية ذاكرة مُشغِّل Qualcomm (باستخدام الترجمة من المرحلة الثانية)

مُعاد التوجيه عند الإقلاع (Boot Remapper)

لا علاقة لمُعاد التوجيه عند الإقلاع بالمحاكاة الافتراضية: فهو مطلوب أثناء الإقلاع المبكر لنواة وحدة المعالجة المركزية. على منصة العتاد هذه، تبدأ نوى وحدة المعالجة المركزية التنفيذ دائمًا عند العنوان 0x0. مُعاد التوجيه عند الإقلاع هو مكوّن عتادي إضافي مبني حول وحدة المعالجة المركزية يعيد توجيه أول 64 أو 128 كيبي بايت (0x00000 - 0x20000) إلى منطقة ذاكرة قابلة للإعداد.

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

مُعاد التوجيه عند الإقلاع

لاحظ كيف أن العنوان الذي تصل إليه وحدة المعالجة المركزية (داخل tz) يمكن الوصول إليه باستخدام عنوانين فيزيائيين مختلفين: العنوان الحقيقي في ذاكرة الوصول العشوائي (0x8650xxxx) والعنوان المعاد توجيهه باستخدام مُعاد التوجيه عند الإقلاع (0x0000xxxx).

يوجد في الواقع مثيلان منفصلان لمُعاد التوجيه عند الإقلاع:

  • الآمن: يعيد توجيه عمليات الوصول إلى الذاكرة التي تتم في الحالة الآمنة. هذا هو المثيل المستخدم لبدء تشغيل وحدة المعالجة المركزية، نظرًا لأن وحدة المعالجة المركزية تبدأ التنفيذ في الحالة الآمنة (EL3). يمكن إعداده باستخدام APCS_BOOT_START_ADDR_SEC (= 0x0b010004) ولكن فقط في الحالة الآمنة.
  • غير الآمن: يعيد توجيه عمليات الوصول إلى الذاكرة التي تتم في الحالة غير الآمنة. يمكن إعداده باستخدام APCS_BOOT_START_ADDR_NSEC (= 0x0b010008)، حتى في الحالة غير الآمنة.

يمكن إعداد كلا مثيلي مُعاد التوجيه عند الإقلاع باستخدام سجل ذاكرة يحتوي على العنوان الأساسي للمنطقة المعاد توجيهها وبتّي إعدادات: REMAP_EN لتفعيل إعادة التوجيه وBOOT_128KB_EN لإعادة توجيه أول 128 كيبي بايت بدلًا من 64 كيبي بايت فقط.

(انظر أيضًا: [دليل مرجعي فني لـ Qualcomm Snapdragon 410E مراجعة D], الصفحتان 85 و116)

المفهوم

باستخدام المعرفة من القسمين السابقين، الفكرة الأساسية بسيطة: استخدم مُعاد التوجيه عند الإقلاع لتجاوز حماية الذاكرة (الترجمة من المرحلة الثانية) الخاصة بالمُشغِّل.

مُعاد التوجيه عند الإقلاع لا يعمل فقط أثناء بدء تشغيل وحدة المعالجة المركزية. يمكن استخدامه في أي وقت ويتيح وصولًا كاملًا للقراءة/الكتابة/التنفيذ إلى المنطقة المعاد توجيهها. أيضًا، يبدو أن مُشغِّل Qualcomm لا يمنع نظام التشغيل من إعداد والوصول إلى المثيل غير الآمن لمُعاد التوجيه عند الإقلاع على الأجهزة المتأثرة (فهو غير محمي باستخدام الترجمة من المرحلة الثانية). لذلك، من السهل استغلال الثغرة عن طريق:

تنزيل الأداة