CVE-2026-17053
Təsvir
SMBus drayver API-si smbus_smbalert_remove_cb() və smbus_host_notify_remove_cb() funksiyalarını Zephyr sistem çağırışları (syscalls) kimi təqdim edirdi. drivers/smbus/smbus_handlers.c faylındakı onların yoxlayıcıları yalnız dev arqumentini K_SYSCALL_OBJ(dev, K_OBJ_DRIVER_SMBUS) ilə təsdiqləyir və çağıran tərəfindən təmin edilən struct smbus_callback *cb göstəricisini heç bir K_SYSCALL_MEMORY_READ/K_SYSCALL_MEMORY_WRITE yoxlamasından keçirmədən nüvə rejimli (kernel-mode) drayver koduna ötürürdü. 2023-cü ildəki əlaqəli dəyişiklik eyni səbəbdən uyğun gələn smbus_smbalert_set_cb() / smbus_host_notify_set_cb() sistem çağırışlarını artıq silmişdi, lakin iki silmə sistem çağırışı aktiv qalmışdı. CONFIG_USERSPACE=y, CONFIG_SMBUS=y olan və geri çağırış (callback) əməliyyatlarını həyata keçirən drayveri olan (CONFIG_SMBUS_INTEL_PCH_SMBALERT/CONFIG_SMBUS_INTEL_PCH_HOST_NOTIFY ilə drivers/smbus/intel_pch_smbus.c və ya CONFIG_SMBUS_STM32_SMBALERT ilə drivers/smbus/smbus_stm32.c) qurmalarda, SMBus cihaz obyektinə giriş hüququ verilmiş hər hansı istifadəçi rejimi (user-mode) axını bu sistem çağırışlarını ixtiyari göstərici ilə çağıra bilər. Bu dəyər drivers/smbus/smbus_utils.h faylındakı smbus_callback_remove() funksiyasına çatır və orada nüvənin qeydiyyatdan keçmiş geri çağırışlarının sys_slist_t siyahısında düyün kimliyi kimi istifadə olunur. Nəticə etibarilə, imtiyazsız bir axın supervizor rejimindəki komponent tərəfindən qeydiyyata alınmış SMBALERT və ya Host Notify geri çağırışını qeydiyyatdan çıxara bilər ki, bu da bütün sistem üçün xəbərdarlıqların emalını səssiz şəkildə deaktiv edir; Zephyr obrazlarında simvol ünvanları sabit olduğu və sistem çağırışı tapıldıqda 0, tapılmadıqda isə -ENOENT qaytardığı üçün hədəf ünvan həm hesablanabiləndir, həm də axtarıla biləndir. CONFIG_ASSERT=y olan qurmalarda __ASSERT(callback->handler, ...) yoxlaması əlavə olaraq çağıran tərəfdən təmin edilən ünvanı supervizor rejimində dereference edir, buna görə də yanlış göstərici nüvə rejimli xətaya (kernel-mode fault) və kritik sistem xətasına səbəb olur, xətanın baş verməsi və ya verməməsi isə hansı ünvanların xəritələndirildiyini üzə çıxarır. Həll yolu hər iki sistem çağırışı giriş nöqtəsini silir və bu iki funksiyanı adi statik inline çağırışlara endirir, beləliklə geri çağırış siyahısının idarə edilməsi yalnız supervizor rejimli kod üçün əlçatan olur. CONFIG_USERSPACE olmayan qurmalara və SMBALERT və ya Host Notify dəstəyinə malik SMBus drayveri aktiv edilməmiş konfiqurasiyalara heç bir təsir göstərmir.
Necə düzəltmək olar
- zephyrproject zephyr4.4.2 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| zephyrproject zephyr | 3.4.0 ≤ v < 4.4.2 | 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.