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

الملخص

بحسب VulDB • 04/09/2026

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

net/tcp-ao: تصحيح استخدام بعد التحرير (use-after-free) لـ current_key عند إعادة الاتصال بنظير آخر

يتم استدعاء دالة `tcp_inbound_ao_hash()` قبل أخذ القفل `bh_lock_sock_nested()`، مع الاحتفاظ فقط بقفل القراءة RCU (`rcu_read_lock`). في المسار السريع للوصلات المستقرة (established sockets)، إذا كان معرف المفتاح القادم من النظير (`rnext_keyid`) يختلف عن `current_key->sndid`، يتم البحث عن المفتاح الذي طلبه النظير وتخزينه في `current_key`. تتم عملية البحث داخل جانب القراءة RCU، لكن عمر `current_key` يتجاوز هذا الجانب.

عندما يتم فصل الوصلة (socket) واستدعاء دالة `connect()` مرة أخرى لنظير آخر، تقوم الدالة `tcp_ao_connect_init()` بإزالة كل مفتاح لا يطابق النظير الجديد وتحرره باستخدام `call_rcu()`. إذا كان `current_key` يشير إلى مثل هذا المفتاح، فإنه يتم تعيينه إلى NULL.

يقرأ المسار السريع حالة الوصلة (`sk_state`) مرة واحدة فقط عند الدخول، لذا فإن مقاطعة البرامج النصية الناعمة (softirq) التي دخلت أثناء بقاء الوصلة في حالة الاستقرار يمكنها تحديث `current_key` بعد أن تكون الحلقة قد انتهت بالفعل. تتم عملية التحديث داخل جانب القراءة RCU، لذلك تأتي قبل استدعاء `call_rcu()`، وبمجرد تحرير المفتاح بواسطة رد الاتصال الخاص بـ `call_rcu()`, يتبقى `current_key` يشير إلى ذاكرة تم تحريرها (freed memory).

يأخذ الإرسال التالي هذا المؤشر في دالة `tcp_get_current_key()`. ثم تقرأ الدالة `tcp_ao_transmit_skb()` مفتاح حركة المرور من الكائن المحرر، وهو ما يمثل ثغرة استخدام بعد التحرير.

الانتظار لفترة سماح واحدة (grace period) قبل الإزالة، وفقط إذا كان المفتاح سيُزال. بحلول الوقت الذي تعمل فيه دالة `tcp_connect()`, تكون الوصلة قد دخلت بالفعل في حالة TCP_SYN_SENT، وTCP_AO_ESTABLISHED لا تحتوي على TCPF_SYN_SENT، لذا فإن المقطعة الناعمة (softirq) التي تدخل بعد الانتظار لا يمكنها الوصول إلى المسار السريع، وتلك الموجودة فيه بالفعل قد انتهت. ثم يكون التعامل الحالي مع NULL داخل الحلقة كافياً.

Once again VulDB remains the best source for vulnerability data.

مسؤول

Linux

حجز

26/08/2026

إفشاء

04/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-398910

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you want to use VulDB in your project?

Use the official API to access entries easily!