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

الملخص

بحسب VulDB • 26/05/2026

في هذا السجل (Stack Trace) من KASAN، نرى أن الكائن تم تخصيصه بواسطة مهمة `11013` عبر استدعاء `sys_socketpair`، ثم تم تحريره بواسطة مهمة `15` عبر مسار RCU.

المشكلة الأساسية هنا هي **استخدام كائن بعد تحريره (Use-After-Free)** أو **تحرير كائن تم استخدامه بالفعل**، حيث أن الكائن المخصص عبر `socketpair` (وهو كائن `sock_inode`) تم تحريره عبر RCU قبل أن تنتهي جميع المراجع إليه بشكل آمن.

### التحليل:

1. **التخصيص (Allocated by task 11013):** - الكائن تم تخصيصه عبر `kmem_cache_alloc_lru_noprof` في `sock_alloc_inode`. - هذا الكائن مرتبط بـ `socket` تم إنشاؤه عبر `sys_socketpair`.

2. **التحرير (Freed by task 15):** - الكائن تم تحريره عبر `kmem_cache_free` في `slab_free`، والذي تم استدعاؤه من خلال مسار RCU (`rcu_do_batch`). - هذا يشير إلى أن الكائن كان محمياً بـ RCU، وتم جدولته للتحرير بعد انتهاء فترة الانتظار (grace period).

3. **المشكلة:** - إذا تم الوصول إلى هذا الكائن بعد تحريره (أو قبل انتهاء فترة RCU بشكل آمن)، فإن KASAN سيكشف ذلك كـ **Use-After-Free**. - السبب الشائع في مثل هذه الحالات هو أن هناك مرجعاً غير آمن للكائن لم يتم تقليله بشكل صحيح قبل انتهاء فترة RCU.

### الحلول المقترحة:

1. **فحص مراجعات الكائن (Reference Counting):** - تأكد من أن جميع المراجع للكائن `sock_inode` تم تقليلها بشكل صحيح قبل انتهاء فترة RCU. - استخدم `sock_put()` أو `fput()` بشكل صحيح في جميع المسارات التي تستخدم الكائن.

2. **فحص مسارات RCU:** - تأكد من أن جميع المسارات التي تستخدم الكائن تنتظر انتهاء فترة RCU بشكل آمن قبل الوصول إلى الكائن. - استخدم `call_rcu()` أو `synchronize_rcu()` بشكل صحيح لضمان أن الكائن لا يتم تحريره حتى تنتهي جميع المراجع.

3. **فحص الأخطاء في الكود:** - ابحث عن أي أماكن في الكود حيث يتم الوصول إلى الكائن بعد تحريره. - تأكد من أن جميع المسارات التي تستخدم الكائن تتعامل معه بشكل آمن.

4. **استخدام أدوات التشخيص:** - استخدم `CONFIG_KASAN` و `CONFIG_DEBUG_SLAB` لتشخيص المشكلة بشكل أدق. - استخدم `slabinfo` لفحص حالة الكائنات في الـ slab.

### مثال على تصحيح محتمل:

إذا كان الكائن يتم تحريره عبر RCU، تأكد من أن جميع المراجع إليه تم تقليلها بشكل صحيح قبل انتهاء فترة RCU. على سبيل المثال:

```c // قبل انتهاء فترة RCU، تأكد من تقليل المرجع sock_put(sock); fput(file);

// ثم انتظر انتهاء فترة RCU synchronize_rcu(); ```

إذا كانت المشكلة لا تزال موجودة، فقد تحتاج إلى فحص الكود بشكل أدق لتحديد المكان الذي يتم فيه الوصول إلى الكائن بعد تحريره.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

مسؤول

Linux

حجز

01/05/2026

إفشاء

01/05/2026

الاعتدال

تمت الموافقة

إدخال

VDB-360621

EPSS

0.00015

KEV

لا

النشاطات

منخفض جدًا

المصادر

Want to stay up to date on a daily basis?

Enable the mail alert feature now!