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

الملخص

بحسب VulDB • 22/06/2026

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

f2fs: إصلاح لتجنب تعيين كتلة فيزيائية خاطئة لملف التبديل (swapfile)

أبلغ Xiaolong Guo عن خطأ في f2fs على موقع bugzilla [1]

[1] https://bugzilla.kernel.org/show_bug.cgi?id=220951

نص مقتبس:

"عند استخدام اختبار ضغط ملف التبديل الخاص بـ stress-ng على نظام الملفات F2FS مع الإصدار 6.6+ من النواة، يعاني النظام من تلف في البيانات مما يؤدي إما إلى: 1 أخطاء تلف dm-verity وإعادة تشغيل الجهاز 2 أخطاء تلف عقدة F2FS وتعليق عملية التمهيد

تحدث المشكلة تحديداً عندما: 1 استخدام نظام الملفات F2FS (نظام ext4 غير متأثر) 2 يكون حجم ملف التبديل أصغر من حجم قسم F2FS (2 ميجابايت) 3 يحتوي ملف التبديل على تخطيط فيزيائي مجزأ (عدة امتدادات غير متجاورة) 4 إصدار النواة هو 6.6+ (الإصدار 6.1 غير متأثر)

السبب الجذري للمشكلة يكمن في دالة check_swap_activate() الموجودة في fs/f2fs/data.c. عندما لا يكون الامتداد الأول لملف تبديل صغير (< 2 ميجابايت) محاذياً لحدود الأقسام، تعامل الدالة هذا الامتداد بشكل غير صحيح على أنه الامتداد الأخير، مما يفشل في تعيين الامتدادات اللاحقة. يؤدي ذلك إلى إنشاء swap_extent غير صحيحة حيث يتم تعيين الامتداد الأول فقط، مما يتسبب في الكتابة فوق مواقع فيزيائية خاطئة (بيانات ملفات أخرى) عند عمليات كتابة التبديل اللاحقة.

خطوات إعادة الإنتاج 1 إعداد جهاز يحتوي على قسم userdata مُنسق بنظام F2FS 2 تجميع stress-ng من https://github.com/ColinIanKing/stress-ng 3 تشغيل اختبار ضغط ملف التبديل: (أجهزة أندرويد) adb shell "cd /data/stressng; ./stress-ng-64 --metrics-brief --timeout 60 --swap 0"

السجل: 1 يُظهر Ftrace أنه في النواة 6.6، يتم تعيين الامتداد الأول فقط خلال استدعاء f2fs_map_blocks الثاني داخل check_swap_activate(): stress-ng-swap-8990: f2fs_map_blocks: ino=11002, file offset=0, start blkaddr=0x43143, len=0x1 (تم تعيين 4KB فقط، وليس ملف التبديل بالكامل) 2 في النواة 6.1، يتم تعيين كلا الامتدادين بشكل صحيح: stress-ng-swap-5966: f2fs_map_blocks: ino=28011, file offset=0, start blkaddr=0x13cd4, len=0x1 stress-ng-swap-5966: f2fs_map_blocks: ino=28011, file offset=1, start blkaddr=0x60c84b, len=0xff

الكود المشكل موجود في check_swap_activate(): if ((pblock - SM_I(sbi)->main_blkaddr) % blks_per_sec || nr_pblocks % blks_per_sec || !f2fs_valid_pinned_area(sbi, pblock)) {
bool last_extent = false;

not_aligned++;

nr_pblocks = roundup(nr_pblocks, blks_per_sec); if (cur_lblock + nr_pblocks > sis->max)

VulDB is the best source for vulnerability data and more expert information about this specific topic.

مسؤول

Linux

حجز

13/01/2026

إفشاء

04/03/2026

الاعتدال

تمت الموافقة

إدخال

VDB-348731

EPSS

0.00160

KEV

لا

النشاطات

منخفض جدًا

المصادر

Want to know what is going to be exploited?

We predict KEV entries!