CVE-2021-47634

Yüksək

Təsvir

Linux kernel-də aşağıdakı zəiflik aradan qaldırılmışdır: ubi: ctrl_cdev_ioctl və ubi_cdev_ioctl arasındakı yarış vəziyyətinin (race condition) düzəldilməsi Hulk Robot tərəfindən use-after-free ilə bağlı KASAN hesabatı təqdim edilmişdir: ================================================================== BUG: KASAN: use-after-free in __list_del_entry_valid+0x13d/0x160 Read of size 8 at addr ffff888035e37d98 by task ubiattach/1385 [...] Call Trace: klist_dec_and_del+0xa7/0x4a0 klist_put+0xc7/0x1a0 device_del+0x4d4/0xed0 cdev_device_del+0x1a/0x80 ubi_attach_mtd_dev+0x2951/0x34b0 [ubi] ctrl_cdev_ioctl+0x286/0x2f0 [ubi] Allocated by task 1414: device_add+0x60a/0x18b0 cdev_device_add+0x103/0x170 ubi_create_volume+0x1118/0x1a10 [ubi] ubi_cdev_ioctl+0xb7f/0x1ba0 [ubi] Freed by task 1385: cdev_device_del+0x1a/0x80 ubi_remove_volume+0x438/0x6c0 [ubi] ubi_cdev_ioctl+0xbf4/0x1ba0 [ubi] [...] ================================================================== ctrl_cdev_ioctl tərəfindən saxlanılan kilid ubi_devices_mutex, lakin ubi_cdev_ioctl tərəfindən saxlanılan kilid ubi->device_mutex-dir. Buna görə də, bu iki kilid eyni vaxtda işləyə bilər. ctrl_cdev_ioctl iki əməliyyatı ehtiva edir: ubi_attach və ubi_detach. ubi_detach konkurentliyin qarşısını almaq üçün istinad sayğacından (reference counting) istifadə etdiyindən xətasızdır. Lakin, ubi_attach daxilindəki uif_init və uif_close funksiyaları ubi_cdev_ioctl ilə yarış vəziyyətinə düşə bilər. Aşağıdakı stekdə göstərildiyi kimi, uif_init ubi_cdev_ioctl ilə yarış vəziyyətinə düşəcək: cpu1 cpu2 cpu3 _______________________|________________________|______________________ ctrl_cdev_ioctl ubi_attach_mtd_dev uif_init ubi_cdev_ioctl ubi_create_volume cdev_device_add ubi_add_volume // sysfs mövcuddur kill_volumes ubi_cdev_ioctl ubi_remove_volume cdev_device_del // birinci azad etmə (first free) ubi_free_volume cdev_del // ikiqat azad etmə (double free) cdev_device_del Və uif_close aşağıdakı stekdə olduğu kimi ubi_cdev_ioctl ilə yarış vəziyyətinə düşəcək: cpu1 cpu2 cpu3 _______________________|________________________|______________________ ctrl_cdev_ioctl ubi_attach_mtd_dev uif_init ubi_cdev_ioctl ubi_create_volume cdev_device_add ubi_debugfs_init_dev //error goto out_uif; uif_close kill_volumes ubi_cdev_ioctl ubi_remove_volume cdev_device_del // birinci azad etmə (first free) ubi_free_volume // ikiqat azad etmə (double free) Bu problemin səbəbi odur ki, 714fb87e8bc0 commit-i cihazın sysfs vasitəsilə əlçatan olmasından əvvəl onu "əlçatan" (available) edir. Buna görə də biz həmin dəyişikliyi geri qaytarırıq. vol_attribute_show və dev_attribute_show funksiyalarında ubi_get_device-i silərək ubi cihazının yaradılması və udev arasındakı yarış vəziyyətini düzəldəcəyik. Bu, başladılmamış ubi_devices[ubi_num]-a müraciətin qarşısını alır. ubi_get_device sysfs icrası zamanı cihazların silinməsinin qarşısını almaq üçün istifadə olunurdu. Lakin indi kernfs bütün istinad sayğaçları buraxılmadan əvvəl cihazların silinməyəcəyini təmin edir. Əsas proses aşağıdakı stekdə göstərilmişdir: device_del device_remove_attrs device_remove_groups sysfs_remove_groups sysfs_remove_group remove_files kernfs_remove_by_name kernfs_remove_by_name_ns __kernfs_remove kernfs_drain

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc26 fev 2025
İlk görülmə26 fev 2025

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel3.3, 3.11, 3.13, 3.15, 3.17, 3.19, 4.2, 4.5, 4.14.276, 4.19.238, 5.4.189, 5.10.110, 5.15.33, 5.16.19, 5.17.2 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel3.2.84 ≤ v < 3.3, 3.10.103 ≤ v < 3.11, 3.12.63 ≤ v < 3.13, 3.14.77 ≤ v < 3.15, 3.16.39 ≤ v < 3.17, 3.18.40 ≤ v < 3.19, 4.1.31 ≤ v < 4.2, 4.4.19 ≤ v < 4.5, 4.7.2 ≤ v < 4.14.276, 4.15 ≤ v < 4.19.238, 4.20 ≤ v < 5.4.189, 5.5 ≤ v < 5.10.110, 5.11 ≤ v < 5.15.33, 5.16 ≤ v < 5.16.19, 5.17 ≤ v < 5.17.23.3, 3.11, 3.13, 3.15, 3.17, 3.19, 4.2, 4.5, 4.14.276, 4.19.238, 5.4.189, 5.10.110, 5.15.33, 5.16.19, 5.17.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.

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.