CVE-2026-19676
Təsvir
peci_transfer() sistem çağırışı üçün istifadəçi rejimi yoxlayıcısı olan drivers/peci/peci_handlers.c faylındakı z_vrfy_peci_transfer(), yalnız cihaz obyektinin icazələrini yoxlayırdı və çağıran tərəfindən təqdim edilən struct peci_msg strukturunu k_usermode_from_copy() ilə kopyalayırdı. Bu kopyalama prosesi yalnız xarici strukturu təsdiqləyir; daxili struct peci_buf üzvləri olan tx_buffer və rx_buffer-dəki buf göstəriciləri və len dəyərləri tamamilə çağıran tərəfin nəzarətində qalmış və yoxlanılmadan drayverə ötürülmüşdür. Hər bir daxili PECI drayveri bu göstəriciləri supervayzer rejimində dereference edir: drivers/peci/peci_npcx.c faylındakı peci_npcx_transfer() və drivers/peci/peci_ite_it8xxx2.c faylındakı peci_it8xxx2_transfer() aparat baytlarını rx_buffer.buf[i]-yə kopyalayır və komanda baytlarını tx_buffer.buf[i]-dən oxuyur; drivers/peci/peci_mchp_xec.c faylındakı peci_xec_read()/peci_xec_write() funksiyaları isə eynisini rx_buffer.len üçün heç bir məhdudiyyət olmadan yerinə yetirir. Beləliklə, PECI cihaz obyektinə giriş hüququ verilmiş bir istifadəçi rejimi axını (tətbiqin CONFIG_USERSPACE altında cihaza çıxış əldə etməsinin standart yolu), rx_buffer.buf-u nüvə məlumat strukturlarına yönəldərək drayverin ora aparat tərəfindən təmin edilən baytları yazmasını təmin edə bilər və ya tx_buffer.buf-u nüvə yaddaşına yönəldərək onun məzmununun PECI/eSPI out-of-band şinasına ötürülməsini təmin edə bilər. Təsir istifadəçi rejimindən nüvəyə tam keçiddir: ixtiyari nüvəyə yazı primitivi (bütövlük və bunun vasitəsilə supervayzer imtiyazları ilə kodun icrası), PECI şinası müşahidəçisinə açıqlanan ixtiyari nüvə oxuması və xəritələnməmiş ünvan təqdim edildikdə asanlıqla əlçatan olan supervayzer rejimi xətasıdır. Eksploytasiya üçün CONFIG_USERSPACE=y, PECI drayverlərindən birinin aktiv olması (CONFIG_PECI_NPCX, CONFIG_PECI_XEC və ya CONFIG_PECI_ITE_IT8XXX2) və PECI cihazına sahib olan istifadəçi rejimi axınında lokal kodun icrası tələb olunur. Düzəliş iki daxili bufer üzərində K_SYSCALL_MEMORY_READ() və K_SYSCALL_MEMORY_WRITE() yoxlamalarını, həmçinin RX uzunluğunda nəzərə alınan frame-check-sequence baytı üçün size_add_overflow() mühafizəsini əlavə edir.
Necə düzəltmək olar
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| zephyrproject zephyr | 2.3.0 ≤ v ≤ 4.4.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.