CVE-2025-37785
Təsvir
Linux kernel-də aşağıdakı zəiflik həll edilmişdir: ext4: dotdot qovluğu yoxlanılarkən OOB oxumasının düzəldilməsi '.' qovluq elementini ehtiva edən və rec_len == blok ölçüsünə bərabər olan qovluğu olan zədələnmiş fayl sisteminin mount edilməsi nəticəsində (sonradan, zədələnmiş qovluq silindikdə) sərhədlərdən kənar oxuma baş verir. ext4_empty_dir() hesab edir ki, hər ext4 qovluğu ilk məlumat blokunda ən azı '.' və '..' qovluq elementləri kimi mövcuddur. O, əvvəlcə '.' qovluq elementini yükləyir, ext4_check_dir_entry() çağıraraq etibarlılıq yoxlamalarını həyata keçirir və sonra '..' qovluq elementinin yerini hesablamaq üçün onun rec_len üzvündən istifadə edir (ext4_next_entry daxilində). O, hesab edir ki, '..' qovluq elementi eyni məlumat blokuna sığır. Əgər '.' elementinin rec_len dəyəri dəqiq bir blokdursa (4KB), o, etibarlılıq yoxlamalarından yan keçir (məlumat blokundakı son qovluq elementi hesab olunur) və "struct ext4_dir_entry_2 *de" göstəricisini məlumat bloku üçün ayrılmış yaddaş sahəsindən dəqiq kənara yönəldir. Sonra de-nin yeni dəyəri üzərində ext4_check_dir_entry() çağırışı bu göstəricini dereferens edir və nəticədə sərhədlərdən kənar yaddaş müraciəti baş verir. Bu, __ext4_check_dir_entry() funksiyasını məlumat blokunun sonuna çatan '.' qovluq elementlərini yoxlamaq üçün genişləndirməklə düzəldilir. Yoxlama məbləği üçün saxta qovluq elementlərinin nəzərə alınmamasına əmin olun (name_len dəyərini sıfırdan fərqli olması ilə yoxlayın). Qeyd: Bu, KASAN tərəfindən use-after-free kimi bildirilir, əgər sərhəddən kənarda olan sahədən başqa bir struktur yaxınlarda azad edilibsə, lakin bu, əslində OOB oxumadır. Bu problem syzkaller aləti tərəfindən aşkar edilmişdir. Call Trace: [ 38.594108] BUG: KASAN: slab-use-after-free in __ext4_check_dir_entry+0x67e/0x710 [ 38.594649] Read of size 2 at addr ffff88802b41a004 by task syz-executor/5375 [ 38.595158] [ 38.595288] CPU: 0 UID: 0 PID: 5375 Comm: syz-executor Not tainted 6.14.0-rc7 #1 [ 38.595298] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 [ 38.595304] Call Trace: [ 38.595308] <TASK> [ 38.595311] dump_stack_lvl+0xa7/0xd0 [ 38.595325] print_address_description.constprop.0+0x2c/0x3f0 [ 38.595339] ? __ext4_check_dir_entry+0x67e/0x710 [ 38.595349] print_report+0xaa/0x250 [ 38.595359] ? __ext4_check_dir_entry+0x67e/0x710 [ 38.595368] ? kasan_addr_to_slab+0x9/0x90 [ 38.595378] kasan_report+0xab/0xe0 [ 38.595389] ? __ext4_check_dir_entry+0x67e/0x710 [ 38.595400] __ext4_check_dir_entry+0x67e/0x710 [ 38.595410] ext4_empty_dir+0x465/0x990 [ 38.595421] ? __pfx_ext4_empty_dir+0x10/0x10 [ 38.595432] ext4_rmdir.part.0+0x29a/0xd10 [ 38.595441] ? __dquot_initialize+0x2a7/0xbf0 [ 38.595455] ? __pfx_ext4_rmdir.part.0+0x10/0x10 [ 38.595464] ? __pfx___dquot_initialize+0x10/0x10 [ 38.595478] ? down_write+0xdb/0x140 [ 38.595487] ? __pfx_down_write+0x10/0x10 [ 38.595497] ext4_rmdir+0xee/0x140 [ 38.595506] vfs_rmdir+0x209/0x670 [ 38.595517] ? lookup_one_qstr_excl+0x3b/0x190 [ 38.595529] do_rmdir+0x363/0x3c0 [ 38.595537] ? __pfx_do_rmdir+0x10/0x10 [ 38.595544] ? strncpy_from_user+0x1ff/0x2e0 [ 38.595561] __x64_sys_unlinkat+0xf0/0x130 [ 38.595570] do_syscall_64+0x5b/0x180 [ 38.595583] entry_SYSCALL_64_after_hwframe+0x76/0x7e
Necə düzəltmək olar
- linux linux_kernel5.10.236, 5.15.180, 6.1.134, 6.6.87, 6.12.23, 6.13.11, 6.14.2 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 2.6.19 ≤ v < 5.10.236, 5.11 ≤ v < 5.15.180, 5.16 ≤ v < 6.1.134, 6.2 ≤ v < 6.6.87, 6.7 ≤ v < 6.12.23, 6.13 ≤ v < 6.13.11, 6.14 ≤ v < 6.14.2 | 5.10.236, 5.15.180, 6.1.134, 6.6.87, 6.12.23, 6.13.11, 6.14.2 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.