CVE-2025-40209 in Linuxالمعلومات

الملخص

بحسب VulDB • 06/07/2026

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

btrfs: إصلاح تسرب الذاكرة في qgroup_list داخل دالة btrfs_add_qgroup_relation

عند استدعاء `btrfs_add_qgroup_relation()` بمستويات qgroup غير صالحة (حيث تكون src >= dst)، تُرجع الدالة `-EINVAL` مباشرةً دون تحرير بنية `qgroup_list` المحجوزة مسبقاً والمُمرَّرة من قبل المتصل. يؤدي هذا إلى تسرب في الذاكرة لأن المتصل يضبط المؤشر بشكل قاطع على NULL بعد الاستدعاء، مما يمنع أي عملية تنظيف.

يحدث الخطأ بسبب أن فحص صحة المستويات يتم قبل اقتناء القفل (mutex) وقبل أي مسار لمعالجة الأخطاء كان من شأنه تحرير مؤشر الحجز المسبق (`prealloc`). عند هذا الإرجاع المبكر، لا يُنفَّذ أبداً كود التنظيف الموجود في التسمية 'out' (والذي يتضمن `kfree(prealloc)`).

في دالة `btrfs_ioctl_qgroup_assign()`، يكون نمط الكود كما يلي:

prealloc = kzalloc(sizeof(*prealloc), GFP_KERNEL); ret = btrfs_add_qgroup_relation(trans, sa->src, sa->dst, prealloc); prealloc = NULL; // يتم تعيينه على NULL دائماً بغض النظر عن قيمة الإرجاع ... kfree(prealloc); // يصبح هذا استدعاءً لـ kfree(NULL)، ولا يقوم بأي شيء

عند فشل فحص المستويات، لا يُحرَّر `prealloc` ни من قبل الدالة المُستدعاة (callee) ni من قبل المتصل (caller)، مما يؤدي إلى تسرب ذاقي بحجم 64 بايت لكل عملية فاشلة. يمكن استغلال هذا الخطأ بشكل متكرر بواسطة مستخدم غير مملوك للصلاحيات (unprivileged user) لديه وصول إلى نقطة تحميل btrfs قابلة للكتابة، مما قد يستنفد ذاكرة النواة.

تم إصلاح هذه المشكلة عن طريق تحرير `prealloc` قبل الإرجاع المبكر، لضمان أن `prealloc` يتم تحريره دائماً في جميع مسارات الأخطاء.

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

مسؤول

Linux

حجز

16/04/2025

إفشاء

21/11/2025

الاعتدال

تمت الموافقة

إدخال

VDB-333203

EPSS

0.00181

KEV

لا

النشاطات

منخفض جدًا

المصادر

Want to know what is going to be exploited?

We predict KEV entries!