CVE-2026-98884
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: mmc: core: Host tərəfindən təmin edilən max_segs üçün validasiya əlavə edildi max_segs sahəsi unsigned short tipindədir və əgər host drayveri həddindən artıq böyük dəyər təyin edərsə, bu dəyər sıfıra qədər kəsilə bilər. Bu, mmc_alloc_sg() funksiyasının kmalloc_objs()-u sıfır ölçülü allokasiya sorğusu ilə çağırmasına səbəb ola bilər ki, bu da qeyri-müəyyən davranışla nəticələnir. SLUB allokatoru altında kmalloc(0) xüsusi bir göstərici (ZERO_SIZE_PTR) qaytarır. Sonrakı 'if (sg)' yoxlaması doğru (true) kimi qiymətləndiriləcək və sg_init_table() etibarsız yaddaşa müraciət etməyə çalışacaq ki, bu da sistemin çökməsinə (crash) səbəb olacaq: dwmmc_rockchip 2a310000.mmc: Successfully tuned phase to 133 mmc1: new UHS-I speed SDR104 SDHC card at address aaaa Unable to handle kernel paging request at virtual address 0000001ffffffff0 Mem abort info: ESR = 0x0000000096000004 EC = 0x25: DABT (current EL), IL = 32 bits SET = 0, FnV = 0 EA = 0, S1PTW = 0 FSC = 0x04: level 0 translation fault Data abort info: ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000 CM = 0, WnR = 0, TnD = 0, TagAccess = 0 GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 user pgtable: 4k pages, 48-bit VAs, pgdp=0000000102c88000 [0000001ffffffff0] pgd=0000000000000000, p4d=0000000000000000 Internal error: Oops: 0000000096000004 [#1] SMP Modules linked in: CPU: 2 UID: 0 PID: 102 Comm: kworker/2:1 Not tainted 7.0.0-rc6-next-20260331-00013-g4d93c25963c5-dirty #80 PREEMPT Hardware name: Rockchip RK3576 EVB V10 Board (DT) Workqueue: events_freezable mmc_rescan pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : sg_init_table+0x2c/0x50 lr : sg_init_table+0x24/0x50 sp : ffff8000837db710 x29: ffff8000837db710 x28: 000000000000c000 x27: 0000000000000300 x26: 0000000000000000 x25: 0000000000000040 x24: ffff0000c46a0000 x23: 0000000000000000 x22: ffff0000c0c73c00 x21: 0000000000000010 x20: 0000000000000010 x19: 0000000000000000 x18: 000000000000002c x17: 0000000000000000 x16: 0000000000000001 x15: 0000000000000000 x14: 0000000000000400 x13: ffff8000837dc000 x12: 0000000000000000 x11: ffff0000c0c73ca0 x10: 0000000000000040 x9 : 459ec1f0abbdbb00 x8 : 0000001fffffffe0 x7 : 0000000000000000 x6 : 000000000000003f x5 : 0000000000035579 x4 : 0000000000000901 x3 : 0000000000000000 x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000010 Call trace: sg_init_table+0x2c/0x50 (P) mmc_mq_init_request+0x64/0x90 blk_mq_alloc_map_and_rqs+0x3ac/0x480 blk_mq_alloc_set_map_and_rqs+0x98/0x1e0 blk_mq_alloc_tag_set+0x1c0/0x290 mmc_init_queue+0x120/0x370 mmc_blk_alloc_req+0x150/0x420 Bunun qarşısını almaq üçün mmc_mq_init_request() funksiyasına sg_len-in (max_segs-dən törəmiş) sıfır olduğu halı aşkar etmək üçün validasiya yoxlaması əlavə edilir. Əgər sg_len sıfırdırsa, xəta qaytarılır və xəta mesajı çap olunur ki, bu da host drayver tərtibatçılarının yanlış max_segs konfiqurasiyasını müəyyən etməsinə və düzəltməsinə imkan verir. Bu, host drayverləri etibarsız max_segs dəyərləri təqdim etdikdə, MMC nüvəsinin səhifə xətası (page fault) ilə çökmək əvəzinə, xətanı təhlükəsiz şəkildə idarə etməsini təmin edən müdafiə tədbiridir.
Necə düzəltmək olar
Mənbələrdə bu zəiflik üçün düzəldilmiş versiya və ya yamaq keçidi yoxdur.
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| microsoft azl3_kernel_6.6.157.1-1 | Aralıq göstərilməyib | — |
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.