CVE-2026-63895
Təsvir
Linux kernelində aşağıdakı zəiflik aradan qaldırılıb: usb: gadget: f_fs: qısa ep0 oxunuşunda yalnız qəbul edilmiş baytları kopyala ffs_ep0_read() nəzarət-OUT məlumat buferini kmalloc() ilə (kzalloc deyil) Setup paketindəki Length dəyəri ilə ayırır, sonra faktiki olaraq neçə bayt qəbul edildiyindən asılı olmayaraq həmin tam len-i istifadəçi məkanına kopyalayır: data = kmalloc(len, GFP_KERNEL); ... ret = __ffs_ep0_queue_wait(ffs, data, len); if ((ret > 0) && (copy_to_user(buf, data, len))) ret = -EFAULT; __ffs_ep0_queue_wait() req->actual qaytarır ki, bu da qısa nəzarət OUT ötürməsində len-dən ciddi şəkildə kiçikdir. copy_to_user() çağırışı yenə də len bayt kopyalayır, buna görə qısa OUT zamanı kmalloc() buferinin son (len - ret) baytları -- işə salınmamış slab qalıqları -- FunctionFS demonuna çatdırılır. Qısa ep0 OUT tamamlanmaları USB nəzarət-ötürmə davranışı ilə müəyyən edilir və daxili UDC-lər tərəfindən yaradılır: * dwc2 ep0 DATA OUT üçün req->actual < req->length olduqda davam edir (short-not-ok yeganə ep0-OUT stall yolu). * aspeed_udc ep0 OUT-u rx_len < ep->ep.maxpacket olduqda bitirir. * renesas_usbf "ep0 short packet" qeyd edir və sorğunu tamamlayır. * dwc3 qısa IN zamanı stall edir, lakin qısa OUT zamanı etmir. Buna görə qısa ep0 OUT pozulmuş UDC-nin sübutu deyil; bu, f_fs-in öhdəsindən gəlməli olduğu normal vəziyyətdir. drivers/usb/gadget/legacy/inode.c-dəki qardaş gadgetfs implementasiyası bunu artıq copy_to_user()-dən əvvəl min(len, dev->req->actual) vasitəsilə düzgün edir. Bu yamaq f_fs.c-ni müdafiə qatında kəsmək əvəzinə eyni təhlükəsiz nümunəyə gətirir. Xəta FunctionFS cihaz qovşağından əldə edilir ki, real yerləşdirmələrdə bu, imtiyazlı gadget demonuna (adbd, UMS, kompozit gadget xidmətləri və s.) məxsusdur; imtiyazsız istifadəçi məkanından əldə edilə bilməz. Linux host stekləri adətən qısa wLength nəzarət OUT-larını gadget-a çatmazdan əvvəl rədd edir, buna görə bunu təkrar istehsal etmək üçün həmin host tərəfli yoxlamanı yan keçən build tələb olunurdu. Yan keçmə mövcud olduqda, 64 baytlıq Setup-da 1 baytlıq yük demonun oxu buferində 63 bayt canary olmayan slab qalığı yaradır. Düzəliş istifadəçi məkanına yalnız ret (faktiki qəbul edilmiş) baytların kopyalanması ilə edilir.
Necə düzəltmək olar
- Linux Linux90ccf5fb63243fae1b4b3200f3310500500ecf2e, af32dbb2ca0b3d09271ab718d13857a457fa16f2, e835bf9a055f71874065a40780ca5560b7df8b33, 88874a19b2b093bfaaa1c0090fa536c44da8c08b, 607730a414773a7cbe3037a64a6c64e72689ff5e, 23c1f7deb9dd8447ecde749850676302aa1e2bd3, 4e036c10e7f4df5d951c69cc3697bc8e209c6d02 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| Linux Linux | ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < 90ccf5fb63243fae1b4b3200f3310500500ecf2e, ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < af32dbb2ca0b3d09271ab718d13857a457fa16f2, ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < e835bf9a055f71874065a40780ca5560b7df8b33, ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < 88874a19b2b093bfaaa1c0090fa536c44da8c08b, ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < 607730a414773a7cbe3037a64a6c64e72689ff5e, ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < 23c1f7deb9dd8447ecde749850676302aa1e2bd3, ddf8abd2599491cbad959c700b90ba72a5dce8d0 ≤ v < 4e036c10e7f4df5d951c69cc3697bc8e209c6d02, 2.6.35 | 90ccf5fb63243fae1b4b3200f3310500500ecf2e, af32dbb2ca0b3d09271ab718d13857a457fa16f2, e835bf9a055f71874065a40780ca5560b7df8b33, 88874a19b2b093bfaaa1c0090fa536c44da8c08b, 607730a414773a7cbe3037a64a6c64e72689ff5e, 23c1f7deb9dd8447ecde749850676302aa1e2bd3, 4e036c10e7f4df5d951c69cc3697bc8e209c6d02 |
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.