CVE-2025-21702
pfifo_tail_enqueue: إسقاط الحزمة الجديدة عندما يكون sch->limit == 0
- تم النشر
- 18/02/2025
- محدث
- 08/09/2026
- تخصيص CNA
- Linux
- الأدلة المرصودة
- 14/08/2026
CVSS الأساسي
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:Hمنخفض · الثلاثين يومًا القادمة
- المئوية
- 19.8%
- تاريخ الموديل
- 21/09/2026
EPSS هو تقدير إحصائي، وليس يقينًا أو مقياسًا للتأثير. ادمجها مع CVSS وحالة KEV والتعرض وبيئتك.
ملخص
في نواة لينكس، تم حل الثغرة الأمنية التالية: pfifo_tail_enqueue: تجاهل الحزمة الجديدة عندما يكون sch->limit == 0 السلوك المتوقع: في حال الوصول إلى حد المجدول، ستقوم الدالة pfifo_tail_enqueue() بإسقاط حزمة من قائمة انتظار المجدول وتقليل قيمة qlen الخاصة بالمجدول بمقدار واحد. بعد ذلك، تقوم pfifo_tail_enqueue() بإدراج الحزمة الجديدة وزيادة قيمة qlen الخاصة بالمجدول بمقدار واحد. أخيرًا، تُرجع pfifo_tail_enqueue() رمز الحالة `NET_XMIT_CN`. السلوك الغريب: في حال قمنا بتعيين `sch->limit == 0` وتشغيل pfifo_tail_enqueue() على مجدول لا يحتوي على أي حزم، فإن خطوة "إسقاط حزمة" لن تفعل شيئًا. هذا يعني أن قيمة qlen الخاصة بالمجدول تظل تساوي 0. ثم نكمل إدراج الحزمة الجديدة وزيادة قيمة qlen الخاصة بالمجدول بمقدار واحد. باختصار، يمكننا استغلال pfifo_tail_enqueue() لزيادة qlen بمقدار واحد وإرجاع رمز الحالة `NET_XMIT_CN`. المشكلة هي: لنفترض أن لدينا قائمتي انتظار: Qdisc_A و Qdisc_B. - يجب أن يكون نوع Qdisc_A يحتوي على دالة '->graft()' لإنشاء علاقة أب/طفل. لنفترض أن نوع Qdisc_A هو `hfsc`. إدراج حزمة في قائمة الانتظار هذه سيؤدي إلى تشغيل `hfsc_enqueue`. - نوع Qdisc_B هو pfifo_head_drop. إدراج حزمة في قائمة الانتظار هذه سيؤدي إلى تشغيل `pfifo_tail_enqueue`. - تم تكوين Qdisc_B بحيث يكون `sch->limit == 0`. - تم تكوين Qdisc_A لتوجيه الحزمة المُدرجة إلى Qdisc_B. إدراج حزمة عبر Qdisc_A سيؤدي إلى: - hfsc_enqueue(Qdisc_A) -> pfifo_tail_enqueue(Qdisc_B) - Qdisc_B->q.qlen += 1 - pfifo_tail_enqueue() تُرجع `NET_XMIT_CN` - hfsc_enqueue() تتحقق من `NET_XMIT_SUCCESS` وترى `NET_XMIT_CN` => hfsc_enqueue() لا تزيد قيمة qlen الخاصة بـ Qdisc_A. العملية بأكملها تؤدي إلى حالة حيث Qdisc_A->q.qlen == 0 و Qdisc_B->q.qlen == 1. استبدال 'hfsc' بنوع آخر (على سبيل المثال: 'drr') لا يزال يؤدي إلى نفس المشكلة. هذا ينتهك التصميم الذي ينص على أن قيمة qlen الخاصة بالأب يجب أن تساوي مجموع قيم qlen الخاصة بأبنائه. تأثير الثغرة: يمكن استخدام هذه المشكلة لتصعيد الامتيازات من المستخدم إلى النواة عندما يكون الوصول إليها ممكنًا.
المصادر
1الاستخدام المسؤول
استخدم معلومات الثغرات الأمنية فقط على الأنظمة التي تمتلكها أو المرخص لها باختبارها. يرتبط Kitploit ببيانات تعريف البحث العامة ولا يخزن أكواد الاستغلال أو الحمولات الضارة.