CVE-2026-74558 in Linuxالمعلومات

الملخص

بحسب VulDB • 15/08/2026

في نواة لينكس، تم حل الثغرة التالية:

xsk: استرداد واصفات الإرسال (Tx) غير الصالحة في مسار الدفعات ذات النسخ الصفري (Zero-Copy)

يتوقف محلل دفعات الإرسال ذو النسخ الصفري عند مواجهة واصف غير صالح. وإذا حدث ذلك بعد واحد أو أكثر من واصفات الاستمرار، فقد يتقدم مستهلك الإرسال إلى ما وراء أجزاء البيانات التي لم تُقدَّم للسائق (Driver)، ولم يُعاد إرجاعها إلى مساحة المستخدم عبر حلقة الإنجاز (Completion Ring).

تحدث مشكلة مماثلة عندما يتجاوز حجم الحزمة الحد الأقصى المحدد بواسطة `xdp_zc_max_segs`. يتم تحرير الواصفات المستهلكة حتى هذا الحد دون إنجاز، ويمكن تفسير واصفات الاستمرار المتبقية لاحقاً على أنها بداية حزمة أخرى.

تحليل دفعات الإرسال (Tx) بوحدة الحزم، والتمييز بين الواصفات التابعة لحزم صالحة ومكتملة، وذلك عن تلك التي تم استهلاكها أثناء تفريغ حزمة غير صالحة أو ذات حجم زائد. إعادة الأولى إلى السائق وإلحاق الثانية بمنطقة عنوان حلقة الإنجاز (CQ) لتمكين مساحة المستخدم من استرداد إطارات UMEM الخاصة بها.

معاملة الواصف غير الصالح المنفرد كحزمة تتطلب الاسترداد فقط وتحتوي على واصف واحد. يؤدي تقدم مستهلك حلقة الإرسال إلى تحرير خانة الحلقة، ولكنه لا يعيد ملكية إطار UMEM المشار إليه إلى مساحة المستخدم بمفرده.

بمجرد بدء عملية التفريغ (Draining)، استمر حتى يتم استهلاك واصف نهاية الحزمة (EOP). الحفاظ على حالة التفريغ في المقبس (Socket) عندما لم يتم توفير EOP بعد، بحيث يمكن مواصلة التفريغ خلال استدعاء لاحق. ترك الحزم غير المكتملة ولكن الصالحة من النواحي الأخرى في حلقة الإرسال.

تحتاج مجموعات Shared-UMEM التي تستخدم إرسالا متعدد المخازن المؤقتة (Multi-buffer Tx) أيضاً إلى تحليل مبني على وحدات الحزم. اجتياز مقابس الإرسال الخاصة بها حزمة تلو الأخرى، مع الحفاظ على مخطط الإنصاف الحالي لكل قابس، بدلاً من استخدام التراجع القديم القائم على واصف واحد. الاحتفاظ بهذا التراجع للمجموعات المشتركة التي لا تستخدم إرسالا متعدد المخازن المؤقتة. ونظراً لأن حالة التفريغ تُحفظ لكل قابس ويمكن للمسارين الفردي والمشترك استئناف عملية تفريغ متقطعة، فإن تغيير قائمة المقابس من فردية إلى مشتركة لا يتطلب انتقالاً خاصاً عند ربط المقبس (Bind-time).

تعد إدخالات حلقة الإنجاز (CQ) موضعية، وقد يُنجز السائق جزءاً فقط من عمل الإرسال الذي تُرجعه الدالة `xsk_tx_peek_release_desc_batch()`. لذلك، لا يمكن نشر الإدخالات الخاصة بالاسترداد فقط فوراً عندما تكون هناك واصفات مرئية للسابق ما زالت معلقة.

تتبع عدد إدخالات حلقة الإنجاز المرئية للسائق والتي تسبق إدخالات الاسترداد. السماح لـ `xsk_tx_completed()` بنشر إنجازات الإرسال الجزئية للأجهزة، ونشر إدخالات الاسترداد فقط بعد أن يتم إنجاز كل واصف إرسال سابق. إنهاء دفعة تتطلب الاسترداد فقط فوراً عندما لا يكون هناك عمل مرئي للسائق أمامها، ومنع إرفاق دفعة إرسال أخرى بينما تبقى إدخالات الاسترداد معلقة.

كما يجب تحديد حجم معالجة الدفعات بحجم مصفوفة الواصفات المؤقتة الخاصة بالمجموعة، إذ قد تختلف أحجام حلقات الإرسال التابعة للمقابس التي تشارك UMEM.

يضمن ذلك أن كل واصف إرسال غير صالح يتم استهلاكه في مسار دفعات النسخ الصفري (ZC) إما يُقدَّم إلى السائق كجزء من حزمة صالحة أو يُعاد إرجاعه إلى مساحة المستخدم دون انتهاك ترتيب إنجاز حلقة الإنجاز (CQ).

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

مسؤول

Linux

حجز

15/08/2026

إفشاء

15/08/2026

الاعتدال

تمت الموافقة

إدخال

VDB-390873

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you need the next level of professionalism?

Upgrade your account now!