CVE-2026-93287
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: i2c: smbus: ümumi yolda həddindən artıq böyük blok transferlərini rədd etmək SMBus blok transfer uzunluğu olan data->block[0], i2c_smbus_xfer_emulated() funksiyasında yoxlanılır, lakin bu yoxlama tracepoint-lər üçün çox gec baş verir və adapter yerli smbus_xfer tətbiqi təmin etdikdə tamamilə ötürülür. Bu, istifadəçi tərəfindən idarə olunan həddindən artıq böyük blok uzunluqlarının yoxlanılmadan tracepoint memcpy çağırışlarına və drayver geri çağırma (callback) funksiyalarına çatmasına imkan verir. Hər hansı bir tracepoint işə düşməzdən və ya drayver geri çağırması icra olunmazdan əvvəl, çağırıcı tərəfindən təqdim edilən uzunluğu sıfır olan və ya I2C_SMBUS_BLOCK_MAX həddini aşan blok transferlərini rədd edən erkən validasiya __i2c_smbus_xfer() funksiyasına əlavə edilmişdir. SMBus blok oxumaları zamanı data->block[0] cihaz tərəfindən doldurulduğu üçün, yoxlama yalnız uzunluğun faktiki olaraq çağırıcı tərəfindən təmin edildiyi əməliyyatlar üçün tətbiq edilir. Bu, emulyasiya edilmiş yoldakı mövcud -EINVAL konvensiyası ilə uyğundur və bütün aşağı axın istehlakçılarını eyni anda qoruyur: smbus_write tracepoint-i, bütün yerli smbus_xfer drayver tətbiqləri və emulyasiya edilmiş yol. Bu dəyişikliklə iki fərqli xəta düzəldilmişdir: Xəta 1: smbus_write tracepoint OOB (include/trace/events/smbus.h) trace_smbus_write() hər hansı validasiyadan əvvəl işə düşür və data->block[0]+1 baytı 34 baytlıq hadisə buferinə kopyalayır. block[0]=0xfe olduqda, tracepoint 255 baytı kopyalayır və 221 bayt miqdarında daşma baş verir. BUG: KASAN: stack-out-of-bounds in trace_event_raw_event_smbus_write+0x27c/0x530 Read of size 255 at addr ffff88800d98fcf8 by task poc_smbus/91 Call Trace: <TASK> __asan_memcpy+0x23/0x80 trace_event_raw_event_smbus_write+0x27c/0x530 __i2c_smbus_xfer+0x43a/0xa40 i2c_smbus_xfer+0x19e/0x340 i2cdev_ioctl_smbus+0x38f/0x7f0 i2cdev_ioctl+0x35e/0x680 __x64_sys_ioctl+0x147/0x1e0 do_syscall_64+0xcf/0x15a0 entry_SYSCALL_64_after_hwframe+0x76/0x7e </TASK> Xəta 2: i2c-stub I2C_SMBUS_I2C_BLOCK_DATA OOB (drivers/i2c/i2c-stub.c) stub_xfer() funksiyası .smbus_xfer-i birbaşa tətbiq edir və block[0]-ı yalnız 256-komanda qarşısında məhdudlaşdırır, I2C_SMBUS_BLOCK_MAX qarşısında yox. block[0]=0xff və command=0 olduqda, dövr i=254-ə qədər block[1+i]-yə müraciət edir ki, bu da 34 baytlıq birləşməni (union) xeyli aşır. UBSAN: array-index-out-of-bounds in drivers/i2c/i2c-stub.c:223:44 index 34 is out of range for type '__u8 [34]' Call Trace: <TASK> __ubsan_handle_out_of_bounds+0xd7/0x120 stub_xfer+0x1971/0x198f [i2c_stub] __i2c_smbus_xfer+0x306/0xa40 i2c_smbus_xfer+0x19e/0x340 i2cdev_ioctl_smbus+0x38f/0x7f0 i2cdev_ioctl+0x35e/0x680 __x64_sys_ioctl+0x147/0x1e0 do_syscall_64+0xcf/0x15a0 entry_SYSCALL_64_after_hwframe+0x76/0x7e </TASK> Hər iki iz KASAN+UBSAN ilə v7.0-rc6+i2c/for-current versiyasında təkrar istehsal edilmişdir.
Necə düzəltmək olar
- Linux Linux856dffcc097b3d8ed45a643ebda07cb92968cb33, 356875e33f2c6d2061a02c9dec1a1e639d265a55, 72ca5e0b8b7a62615758f8871c34d61616c2dc8b, df077253f6405d67ad087538e495ef32a05717b7, f09edffba97d37b1fdff5f818a9a45f8a98ac171, c4b478bc50b7ca9865e237909941253a0f7111a2, 3051cd060fa496df42954291fa2306ed2eab4ecc və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | 4710317891e4824ce1510a6b5066abbd3e917750 ≤ v < 856dffcc097b3d8ed45a643ebda07cb92968cb33, 4710317891e4824ce1510a6b5066abbd3e917750 ≤ v < 356875e33f2c6d2061a02c9dec1a1e639d265a55, 4710317891e4824ce1510a6b5066abbd3e917750 ≤ v < 72ca5e0b8b7a62615758f8871c34d61616c2dc8b, 4710317891e4824ce1510a6b5066abbd3e917750 ≤ v < df077253f6405d67ad087538e495ef32a05717b7, 4710317891e4824ce1510a6b5066abbd3e917750 ≤ v < f09edffba97d37b1fdff5f818a9a45f8a98ac171, 4710317891e4824ce1510a6b5066abbd3e917750 ≤ v < c4b478bc50b7ca9865e237909941253a0f7111a2, 4710317891e4824ce1510a6b5066abbd3e917750 ≤ v < 3051cd060fa496df42954291fa2306ed2eab4ecc, 2.6.33 | 856dffcc097b3d8ed45a643ebda07cb92968cb33, 356875e33f2c6d2061a02c9dec1a1e639d265a55, 72ca5e0b8b7a62615758f8871c34d61616c2dc8b, df077253f6405d67ad087538e495ef32a05717b7, f09edffba97d37b1fdff5f818a9a45f8a98ac171, c4b478bc50b7ca9865e237909941253a0f7111a2, 3051cd060fa496df42954291fa2306ed2eab4ecc |
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.