CVE-2026-19185

Yüksək

Təsvir

drivers/i3c/i3c_handlers.c faylındakı i3c_do_ccc() üçün sistem çağırışı yoxlayıcısı xarici struct i3c_ccc_payload-u, yayım ccc.data buferini və targets.payloads[] massivini təsdiqləyirdi, lakin həmin massiv elementlərinin göstərdiyi hədəf üzrə məlumat buferlərini təsdiqləmirdi. Hər bir struct i3c_ccc_target_payload öz məlumat göstəricisinə (pointer) və data_len dəyərinə malikdir və yük z_impl_i3c_do_ccc() funksiyasına və oradan kontroller drayverinə ötürülməzdən əvvəl bunların heç biri K_SYSCALL_MEMORY() vasitəsilə yoxlanılmamışdı. Yoxlayıcı həmçinin şablon (snapshot) əvəzinə çağıran tərəfin canlı strukturu ilə işləyirdi, buna görə də təsdiqlənmiş sahələr yoxlama ilə drayverin istifadəsi arasında ikinci bir istifadəçi axını (thread) tərəfindən dəyişdirilə bilərdi — bu, mesaj massivini əvvəlcə kopyalayan oxşar z_vrfy_i3c_transfer() funksiyasından fərqli idi. Qüsur yalnız drivers/i3c/i3c_handlers.c faylının kompilyasiya edildiyi CONFIG_USERSPACE quruluşlarında mövcuddur. I3C kontroller cihaz obyektinə giriş hüququ verilmiş imtiyazsız istifadəçi rejimi axını — tətbiqin istifadəçi axınına I3C periferiya qurğuları ilə danışmağa icazə verməsinin adi yolu — hədəf yükünün məlumat göstəricisi ixtiyari nüvə (kernel) ünvanını göstərən birbaşa CCC göndərə bilər. Kontroller drayverləri istiqaməti müəyyən etmək üçün rnw-dən istifadə edərək həmin göstəricini birbaşa dereference edir (məsələn, drivers/i3c/i3c_mcux.c, drivers/i3c/i3c_cdns.c, drivers/i3c/i3c_stm32.c, drivers/i3c/i3c_npcx.c). Beləliklə, oxuma CCC-si nüvə rejimidəki drayverin şin vasitəsilə qəbul edilmiş baytları hücum edənin seçdiyi nüvə ünvanına, hücum edənin seçdiyi uzunluqda yazmasına səbəb olur, yazma CCC-si isə nüvə yaddaşını I3C şininə ötürür. Nəticədə, sərhədləri aşan nüvə yazılması və nüvə yaddaşının ifşası baş verir, yəni istifadəçi rejimi axınından supervizor imtiyazlarına yüksəlmə baş verir ki, bu da CONFIG_USERSPACE-in təmin etməli olduğu izolyasiyanı pozur. Düzəliş copy_ccc_and_do() funksiyasını təqdim edir; bu funksiya yükün şablonunu çıxarır, hədəf massivini k_usermode_alloc_from_copy() ilə nüvə yaddaşına kopyalayır (num_targets sayını 32-dən azla məhdudlaşdıraraq), rnw-yə uyğun olaraq hər bir hədəf buferini K_SYSCALL_MEMORY() ilə təsdiqləyir və drayver tərəfindən yazılan num_xfer və err sahələrini yenidən çağıran tərəfə kopyalayır.

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulZephyr
Dərc5 okt 2026
İlk görülmə5 okt 2026
Zəiflik növüCWE-822CWE-822

Necə düzəltmək olar

Yeniləyin
  • zephyrproject zephyr4.5.0 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
zephyrproject zephyr3.2.0 ≤ v < 4.5.04.5.0

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.

Intelligence 360 paketində

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.

CVE-2026-19185 · Zephyr · Dark Radar