CVE-2025-38378

Yüksək

Təsvir

Linux nüvəsində aşağıdakı zəiflik aradan qaldırılmışdır: HID: appletb-kbd: appletb_kbd_probe funksiyasında slab use-after-free xətasının düzəldilməsi appletb_kbd_probe() yoxlama prosesində, toxunma paneli klaviaturası ilə bağlı məlumatları saxlamaq üçün devm_kzalloc() vasitəsilə "struct appletb_kbd *kbd" ayrılır. Daha sonra, əgər backlight_device_get_by_name() funksiyası "appletb_backlight" adlı arxa işıqlandırma cihazı tapsa, appletb_inactivity_timer() ilə taymer (kbd->inactivity_timer) qurulur və taymer appletb_tb_dim_timeout (60) saniyədən sonra işləyəcək şəkildə aktivləşdirilir. Taymer aktivləşdirildikdən sonra xəta baş verdikdə use-after-free vəziyyəti yaranır. Bu, sonda yoxlamanın uğursuz olduğu və nəticədə cihaz tərəfindən idarə olunan yaddaş olan "struct appletb_kbd *kbd" strukturunun azad edildiyi anlamına gəlir. 60 saniyə sonra taymerin vaxtı bitəcək və __run_timers taymerə (kbd->inactivity_timer) daxil olmağa çalışacaq, lakin kdb strukturu artıq azad edildiyi üçün use-after-free xətası baş verəcək. [ 71.636938] ================================================================== [ 71.637915] BUG: KASAN: slab-use-after-free in __run_timers+0x7ad/0x890 [ 71.637915] Write of size 8 at addr ffff8881178c5958 by task swapper/1/0 [ 71.637915] [ 71.637915] CPU: 1 UID: 0 PID: 0 Comm: swapper/1 Not tainted 6.16.0-rc2-00318-g739a6c93cc75-dirty #12 PREEMPT(voluntary) [ 71.637915] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 71.637915] Call Trace: [ 71.637915] <IRQ> [ 71.637915] dump_stack_lvl+0x53/0x70 [ 71.637915] print_report+0xce/0x670 [ 71.637915] ? __run_timers+0x7ad/0x890 [ 71.637915] kasan_report+0xce/0x100 [ 71.637915] ? __run_timers+0x7ad/0x890 [ 71.637915] __run_timers+0x7ad/0x890 [ 71.637915] ? __pfx___run_timers+0x10/0x10 [ 71.637915] ? update_process_times+0xfc/0x190 [ 71.637915] ? __pfx_update_process_times+0x10/0x10 [ 71.637915] ? _raw_spin_lock_irq+0x80/0xe0 [ 71.637915] ? _raw_spin_lock_irq+0x80/0xe0 [ 71.637915] ? __pfx__raw_spin_lock_irq+0x10/0x10 [ 71.637915] run_timer_softirq+0x141/0x240 [ 71.637915] ? __pfx_run_timer_softirq+0x10/0x10 [ 71.637915] ? __pfx___hrtimer_run_queues+0x10/0x10 [ 71.637915] ? kvm_clock_get_cycles+0x18/0x30 [ 71.637915] ? ktime_get+0x60/0x140 [ 71.637915] handle_softirqs+0x1b8/0x5c0 [ 71.637915] ? __pfx_handle_softirqs+0x10/0x10 [ 71.637915] irq_exit_rcu+0xaf/0xe0 [ 71.637915] sysvec_apic_timer_interrupt+0x6c/0x80 [ 71.637915] </IRQ> [ 71.637915] [ 71.637915] Allocated by task 39: [ 71.637915] kasan_save_stack+0x33/0x60 [ 71.637915] kasan_save_track+0x14/0x30 [ 71.637915] __kasan_kmalloc+0x8f/0xa0 [ 71.637915] __kmalloc_node_track_caller_noprof+0x195/0x420 [ 71.637915] devm_kmalloc+0x74/0x1e0 [ 71.637915] appletb_kbd_probe+0x37/0x3c0 [ 71.637915] hid_device_probe+0x2d1/0x680 [ 71.637915] really_probe+0x1c3/0x690 [ 71.637915] __driver_probe_device+0x247/0x300 [ 71.637915] driver_probe_device+0x49/0x210 [...] [ 71.637915] [ 71.637915] Freed by task 39: [ 71.637915] kasan_save_stack+0x33/0x60 [ 71.637915] kasan_save_track+0x14/0x30 [ 71.637915] kasan_save_free_info+0x3b/0x60 [ 71.637915] __kasan_slab_free+0x37/0x50 [ 71.637915] kfree+0xcf/0x360 [ 71.637915] devres_release_group+0x1f8/0x3c0 [ 71.637915] hid_device_probe+0x315/0x680 [ 71.637915] really_probe+0x1c3/0x690 [ 71.637915] __driver_probe_device+0x247/0x300 [ 71.637915] driver_probe_device+0x49/0x210 [...] Problemin kök səbəbi odur ki, xəta yollarında taymer deaktiv edilmir, bu da onun aktiv qalmasına və azad edilmiş yaddaşa müraciət etməsinə səbəb olur. Bunu düzəltmək üçün taymeri deaktiv etmək məqsədilə timer_delete_sync() çağırılmalıdır. Digər kiçik problem isə appletb_kbd_remove() funksiyasında timer_delete_sync funksiyasının şərtsiz çağırılmasıdır; bunu timer_delete_sync çağırmazdan əvvəl etibarlı kbd->backlight_dev yoxlanışı əlavə etməklə düzəldin.

CiddilikYüksək
CVSS7.8
İstismar ehtimalı—
MəhsulLinux Kernel
Dərc25 iyl 2025
İlk görülmə25 iyl 2025

Necə düzəltmək olar

Yeniləyin
  • linux linux_kernel6.15.6 və ya daha yeni versiya

Təsirlənən məhsullar

MəhsulTəsirlənən versiyalarDüzəldildiyi versiya
linux linux_kernel6.15 ≤ v < 6.15.6, 6.166.15.6

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.