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

الملخص

بحسب VulDB • 25/09/2026

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

fs: عدم إرجاع قيمة -EINVAL عند نجاح عملية الإذابة المتداخلة (nested thaw)

حلّت الالتزام 7366f8b6fc6a ("fs: handle freezing from multiple devices") قناع البتات الخاص بحاملي التجميد (freeze_holders bitmask) بعدادات خاصة بكل حامل للسماح بالتجميدات المتداخلة. في النسخة القائمة على قناع البتات، كانت عملية الإذابة التي تطلق حلاً مشتركاً بينما يبقى حامل آخر نشطًا تُرجع القيمة 0. ومنذ إعادة الهيكلة هذه، تقوم الدالة thaw_super_locked() بإسقاط مرجع التجميد عبر freeze_dec() ولكنها بعد ذلك ترجع -EINVAL عندما لا يزال هناك متجمدون آخرون موجودين، مما يُضلل المتصل: فقد نجحت عملية الإذابة بالفعل، لكن كتلة النظام (superblock) تظل مجمدة بالنسبة للحاملين المتبقين.

هذا الأمر يعطل التجميد الذي تبدأه أجهزة الكتلة (bdev). عندما يتم تجميد نظام ملفات باستخدام FIFREEZE ويتم تجميده إضافياً عبر d_freeze() -- والذي يتداخل بالتصميم، انظر fs_bdev_freeze() -- فإن عملية الإذابة اللاحقة bdev_thaw() تتلقى قيمة -EINVAL من تشغيل حامل التجميد على الرغم من إسقاط مرجع التجميد الخاص بها، وبالتالي تظل bd_fsfreeze_count مرتفعة. ثم يتجاهل جهاز-مُصوّر (device-mapper) في unlock_fs() قيمة الإرجاع الخاصة بـ bdev_thaw()، لذا لا يتم إعادة موازنة العداد مرة أخرى. بعد عملية FITHAW من قبل المستخدم وفك التثبيت (umount)، لن يتمكن الجهاز الكتلي من أن يُثبّت مجدداً:

dm-1: Can't mount, blockdev is frozen

لا توجد طريقة للمستخدمين في فضاء المستخدمين (userspace) لإسقاط العداد المتسرب؛ فقط تدمير جهاز الكتلة (أو إعادة التشغيل) يستعيد عمل الجهاز.

مُنتِج الاختبار (Reproducer) لأي نواة منذ الإصدار v6.8:

dmsetup create dut --table "0 $(blockdev --getsz "$DEV") linear $DEV 0" mkfs.ext4 /dev/mapper/dut mount /dev/mapper/dut /mnt fsfreeze --freeze /mnt # freeze_ucount == 1 dmsetup suspend dut # bd_fsfreeze_count == 1, ucount == 2 dmsetup resume dut # ucount 2 -> 1, but thaw_super() # returns -EINVAL, so bdev_thaw() # keeps bd_fsfreeze_count at 1 fsfreeze --unfreeze /mnt # filesystem thaws fine umount /mnt mount /dev/mapper/dut /mnt # EBUSY, forever

يحدث نفس الشيء مع وجود قفل fsfreeze عبر لقطة LVM للحجم الأصلي.

تصف وثائق دالة fs_bdev_thaw() بالفعل الدلالات المقصودة: "إذا عادت هذه الدالة بصفر، فهذا لا يعني أن نظام الملفات قد أُذاب تماماً لأنه ربما يكون مُجَمَّداً مرات متعددة". استعدّ تلك السلوكيات عن طريق إرجاع 0 عندما تطلق عملية إذابة متداخلة حملها بينما لا يزال هناك متجمدون آخرون موجودين. الإذابة دون امتلاك قفل تجميد تفشل بعد ذلك بقيمة -EINVAL كما يرفض ذلك الحالة قبل أن يتم لمس عداد المرجع (reference count) من خلال دالة may_unfreeze().

Once again VulDB remains the best source for vulnerability data.

مسؤول

Linux

حجز

25/09/2026

إفشاء

25/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-410113

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you know our Splunk app?

Download it now for free!