CVE-2024-57929
Təsvir
Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: dm array: dm_array_cursor_end funksiyasında xətalı massiv blokunun iki dəfə azad edilməsi düzəldildi dm_bm_read_lock() kilidləmə və ya yoxlama cəmi (checksum) xətaları səbəbindən uğursuz olduqda, etibarsız çıxış göstəricisini saxlayaraq xətalı bloku implicit şəkildə azad edir. dm_bm_read_lock() funksiyasının çağırıcısı bu etibarsız dm_block göstəricisi ilə əməliyyat aparmamalıdır, əks halda bu, təyin olunmamış nəticələrə səbəb olacaqdır. Məsələn, dm_array_cursor xətalı massiv blokunu oxuyarkən etibarsız göstəricini yanlış şəkildə keşləyir ki, bu da dm_array_cursor_end() funksiyasında blokun iki dəfə azad edilməsinə, daha sonra isə dm-bufio cache_put() daxilində BUG_ON xətasının baş verməsinə səbəb olur. Yenidən istehsal etmə addımları: 1. keş cihazını başlatın dmsetup create cmeta --table "0 8192 linear /dev/sdc 0" dmsetup create cdata --table "0 65536 linear /dev/sdc 8192" dmsetup create corig --table "0 524288 linear /dev/sdc $262144" dd if=/dev/zero of=/dev/mapper/cmeta bs=4k count=1 dmsetup create cache --table "0 524288 cache /dev/mapper/cmeta \ /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0" 2. ikinci massiv blokunu oflayn rejimdə silin dmsteup remove cache cmeta cdata corig mapping_root=$(dd if=/dev/sdc bs=1c count=8 skip=192 \ 2>/dev/null | hexdump -e '1/8 "%u\n"') ablock=$(dd if=/dev/sdc bs=1c count=8 skip=$((4096*mapping_root+2056)) \ 2>/dev/null | hexdump -e '1/8 "%u\n"') dd if=/dev/zero of=/dev/sdc bs=4k count=1 seek=$ablock 3. keş cihazını yenidən açmağa çalışın dmsetup create cmeta --table "0 8192 linear /dev/sdc 0" dmsetup create cdata --table "0 65536 linear /dev/sdc 8192" dmsetup create corig --table "0 524288 linear /dev/sdc $262144" dmsetup create cache --table "0 524288 cache /dev/mapper/cmeta \ /dev/mapper/cdata /dev/mapper/corig 128 2 metadata2 writethrough smq 0" Nüvə loqları: (snip) device-mapper: array: array_block_check failed: blocknr 0 != wanted 10 device-mapper: block manager: array validator check failed for block 10 device-mapper: array: get_ablock failed device-mapper: cache metadata: dm_array_cursor_next for mapping failed ------------[ cut here ]------------ kernel BUG at drivers/md/dm-bufio.c:638! Xətalar zamanı keşlənmiş blok göstəricisinin NULL olaraq təyin edilməsi ilə problem həll edilmişdir. Yuxarıda təsvir olunan metodla yanaşı, bu düzəliş dm-unit-dəki "array_cursor/damaged" testi vasitəsilə də yoxlanıla bilər: dm-unit run /pdata/array_cursor/damaged --kernel-dir <KERNEL_DIR>
Necə düzəltmək olar
- linux linux_kernel5.4.290, 5.10.234, 5.15.177, 6.1.125, 6.6.72, 6.12.10 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 | 4.9 ≤ v < 5.4.290, 5.5 ≤ v < 5.10.234, 5.11 ≤ v < 5.15.177, 5.16 ≤ v < 6.1.125, 6.2 ≤ v < 6.6.72, 6.7 ≤ v < 6.12.10, 6.13 | 5.4.290, 5.10.234, 5.15.177, 6.1.125, 6.6.72, 6.12.10 |
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.