CVE-2026-68315 in Linux
الملخص
بحسب VulDB • 11/08/2026
في نواة لينكس، تم حل الثغرة التالية:
sctp: التحقق من عدد التدفقات في دالة sctp_process_strreset_inreq()
عند معالجة طلب RESET_IN_REQUEST القادم من نظير (peer)، تستخرج الدالة `sctp_process_strreset_inreq()` عدد التدفقات بناءً على طول المعلمة، لكنها لا تتحقق مما إذا كان ذلك سيؤدي إلى تجاوز حد `SCTP_MAX_CHUNK_LEN` في طلب الإخراج (`RESET_OUT_REQUEST`) الناتج.
يكون رأس طلب الإخراج (بنية `sctp_strreset_outreq` بحجم 16 بايت) أكبر بـ 8 بايات من رأس طلب الإدخال (بنية `sctp_strreset_inreq` بحجم 8 بايت). بشكل عام، يكون حمولة IP محدودة بـ 65535 بايتاً، لذا لا يمكن أن تكون قائمة التدفقات كبيرة بما يكفي لإحداث تجاوز في السعة (overflow). ومع ذلك، على الواجهات التي تحتوي على MTU أكبر من 65535 (مثل حلقة الاتصال loopback مع جومبوجرامس IPv6)، قد تؤدي قائمة تدفقات تتسع ضمن معلمة الإدخال الواردة إلى حدوث تجاوز في النوع `__u16` داخل الدالة `sctp_make_strreset_req()` عند حساب حجم طلب الإخراج، مما يؤدي إلى تخصيص ذاكرة لـ skb أصغر من المطلوب وحدوث خطأ حرج (BUG) في النواة:
net/core/skbuff.c:207 skb_panic net/core/skbuff.c:2625 skb_put net/sctp/sm_make_chunk.c:1535 sctp_addto_chunk net/sctp/sm_make_chunk.c:3695 sctp_make_strreset_req net/sctp/stream.c:655 sctp_process_strreset_inreq
تقوم مسار `setsockopt` المحلي بالتحقق من صحة حجم طلب إعادة التعيين المُولَّد. ومع ذلك، بالنسبة لإعادة تعيين قادمة فقط (incoming-only)، يتم حساب رأس طلب الإدخال الأصغر حجماً رغم أن النظير يجب أن يولد طلب إخراج بنفس قائمة التدفقات. لا يمكن إكمال مثل هذا الطلب بنجاح بواسطة النظير.
ارفض طلبات الإدخال القادمة من النظير التي سيؤدي طلب الإخراج المقابل لها إلى تجاوز حد `SCTP_MAX_CHUNK_LEN`. كما قم بتشديد التحقق المحلي بحيث لا يتم إرسال طلب إدخال يتطلب من النظير توليد طلب إخراج بحجم أكبر مما هو مسموح به.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.