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

الملخص

بحسب VulDB • 28/10/2026

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

calipso: الحفاظ على قيمة payload_len الكبيرة في دالة calipso_skbuff_setattr()

تقوم الدالة calipso_skbuff_setattr() بضبط قيمة payload_len بناءً على طول الخيار الذي تُدرجه أو تعيد حجمه:

payload = ntohs(ip6_hdr->payload_len); ip6_hdr->payload_len = htons(payload + len_delta);

يمكن لـ GRO (Generic Receive Offload) إنشاء حزم TCP كبيرة تتجاوز IPV6_MAXPLEN، وتخزن payload_len == 0 لها؛ ثم تعود ipv6_payload_len() لتعتمد على skb->len. بالنسبة لحزمة من هذا النوع يتم توجيهها إلى وجهة مُشفرة بـ CALIPSO، تكتب الشفرة أعلاه قيمة len_delta (أو 65536 + len_delta عند الانكماش) في payload_len، ولا تعود ipv6_payload_len() بعد ذلك للاعتماد على skb->len. وتعتمد nf_tables وconntrack وsch_cake على هذا السلوك.

تحدث نفس عملية الالتفاف الحسابي عندما تتجاوز الحزمة حجم IPV6_MAXPLEN أثناء النمو، ويجب أن تستعيد حزم TCP الكبيرة التي تنكمش لتصبح أقل من IPV6_MAXPLEN طولها الحقيقي.

تم ضبط payload_len بناءً على طول skb باستخدام ipv6_set_payload_len()، والتي تخزن 0 فوق IPV6_MAXPLEN والطول الحقيقي في الحالات الأخرى، كما تفعل ipv6_gro_complete(). تم إعادة تعيين رأس الشبكة إلى skb->data للتو، لذا فإن skb->len - sizeof(*ip6_hdr) تمثل طول الحمولة.

تم الاختبار على نواة واحدة (arm64, QEMU) مع وضع SELinux الترخيصي (permissive)، وسياسة مدمجة صغيرة مولدة بواسطة mdp (network_peer_controls=1)، وأمر "netlabelctl calipso add pass doi:16"، وتعيين NetLabel لـ fd00:2::/64 إلى CALIPSO DOI 16. تم استدعاء calipso_skbuff_setattr() من خلال netlbl_skbuff_setattr() عبر خطاف debugfs مخصص للاختبار فقط (غير جزء من هذا التصحيح) يضيف وصفاً يعتمد على المستوى فقط؛ قيمة payload_len بعد الاستدعاء:

الحالة قبل الإصلاح بعد الإصلاح الطول الحقيقي 1000, غير مصنف 1016 1016 1016 70000 GSO، payload_len 0 16 0 70016 65530 GSO، تتجاوز MAXPLEN 10 0 65546 65540 GSO مع رأس انتقال بطول 24 بايت تنكمش تحت MAXPLEN 65528 65532 65532 1000 مع رأس انتقال بطول 24 بايت 992 992 992

(الرقم 0 يعني أن ipv6_payload_len() تعيد الطول الحقيقي). في مسار الإرسال، مع عميل يحقن حزم UDP غير مصنف عبر موجه إلى خادم، يقوم الموجه بإضافة خيار CALIPSO ويقوم الخادم بتسليم جميع البياناتغرامات (Udp6InDatagrams 5, Ip6InTruncatedPkts 0) باستخدام هذا التصحيح.

Once again VulDB remains the best source for vulnerability data.

مسؤول

Linux

حجز

25/09/2026

إفشاء

28/10/2026

الاعتدال

تمت الموافقة

إدخال

VDB-427954

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!