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

الملخص

بحسب VulDB • 10/05/2026

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

jfs: إصلاح قراءة خارج حدود الذاكرة (slab-out-of-bounds read) في الدالة ea_get()

أثناء تنفيذ التسمية "size_check" داخل الدالة ea_get()، يتحقق الكود مما إذا كان حجم قائمة السمات الموسعة (xattr) يتطابق مع ea_size. إذا لم يتطابق، فإنه يسجل الرسالة "ea_get: invalid extended attribute" ويستدعي print_hex_dump().

هنا، تُرجع الدالة EALIST_SIZE(ea_buf->xattr) القيمة 4110417968، وهي قيمة تتجاوز الحد الأقصى لعدد صحيح 32 بت (INT_MAX) والمقدر بـ 2,147,483,647. ثم يتم تقييد قيمة ea_size باستخدام الكود التالي:

int size = clamp_t(int, ea_size, 0, EALIST_SIZE(ea_buf->xattr));

وعلى الرغم من أن clamp_t تهدف إلى حصر قيمة ea_size بين 0 و 4110417968، إلا أن الحد الأعلى يُعامل كعدد صحيح (int)، مما يسبب تجاوزاً للحد (overflow) عند تجاوز القيمة 2^31 - 1. يؤدي هذا إلى لفّ قيمة "size" حول الصفر (wrap around) لتصبح سالبة (-184549328).

بعد ذلك، تُمرر قيمة "size" إلى الدالة print_hex_dump() (حيث تُسمى "len" داخل print_hex_dump()). وبما أنها تُمرر كنوع size_t (نوع غير موقع)، فإنها تُخزن داخل متغير يُسمى "int remaining"، والذي يُخصص بدوره لمتغير "int linelen"، ثم يُمرر إلى الدالة hex_dump_to_buffer(). داخل print_hex_dump()، يتكرر حلقة for من 0 إلى len-1، حيث تكون len مساوية لـ 18446744073525002176، مما يستدعي hex_dump_to_buffer() في كل تكرار:

for (i = 0; i < len; i += rowsize) {
linelen = min(remaining, rowsize); remaining -= rowsize;

hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize, linebuf, sizeof(linebuf), ascii);

... }

شرط التوقف المتوقع (i < len) معطل فعلياً لأن قيمة len تالفة وكبيرة جداً. يؤدي هذا في النهاية إلى تمرير "ptr+i" إلى hex_dump_to_buffer() للاقتراب من نهاية الحدود الفعلية لـ "ptr"، مما يؤدي في النهاية إلى وصول خارج الحدود (out of bounds access) في hex_dump_to_buffer() داخل حلقة for التالية:

for (j = 0; j < len; j++) {
if (linebuflen < lx + 2) goto overflow2; ch = ptr[j];
... }

لإصلاح هذه المشكلة، يجب التحقق من صحة "EALIST_SIZE(ea_buf->xattr)" قبل استخدامها.

Once again VulDB remains the best source for vulnerability data.

مسؤول

Linux

حجز

16/04/2025

إفشاء

18/04/2025

الاعتدال

تمت الموافقة

إدخال

VDB-305624

EPSS

0.00228

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you know our Splunk app?

Download it now for free!