CVE-2025-38129
Təsvir
Linux kernel-də aşağıdakı zəiflik aradan qaldırılıb: page_pool: page_pool_recycle_in_ring funksiyasındakı use-after-free xətasının düzəldilməsi syzbot tərəfindən page_pool_recycle_in_ring funksiyasında uaf (use-after-free) aşkar edilmişdir: BUG: KASAN: slab-use-after-free in lock_release+0x151/0xa30 kernel/locking/lockdep.c:5862 Read of size 8 at addr ffff8880286045a0 by task syz.0.284/6943 CPU: 0 UID: 0 PID: 6943 Comm: syz.0.284 Not tainted 6.13.0-rc3-syzkaller-gdfa94ce54f41 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024 Call Trace: <TASK> __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120 print_address_description mm/kasan/report.c:378 [inline] print_report+0x169/0x550 mm/kasan/report.c:489 kasan_report+0x143/0x180 mm/kasan/report.c:602 lock_release+0x151/0xa30 kernel/locking/lockdep.c:5862 __raw_spin_unlock_bh include/linux/spinlock_api_smp.h:165 [inline] _raw_spin_unlock_bh+0x1b/0x40 kernel/locking/spinlock.c:210 spin_unlock_bh include/linux/spinlock.h:396 [inline] ptr_ring_produce_bh include/linux/ptr_ring.h:164 [inline] page_pool_recycle_in_ring net/core/page_pool.c:707 [inline] page_pool_put_unrefed_netmem+0x748/0xb00 net/core/page_pool.c:826 page_pool_put_netmem include/net/page_pool/helpers.h:323 [inline] page_pool_put_full_netmem include/net/page_pool/helpers.h:353 [inline] napi_pp_put_page+0x149/0x2b0 net/core/skbuff.c:1036 skb_pp_recycle net/core/skbuff.c:1047 [inline] skb_free_head net/core/skbuff.c:1094 [inline] skb_release_data+0x6c4/0x8a0 net/core/skbuff.c:1125 skb_release_all net/core/skbuff.c:1190 [inline] __kfree_skb net/core/skbuff.c:1204 [inline] sk_skb_reason_drop+0x1c9/0x380 net/core/skbuff.c:1242 kfree_skb_reason include/linux/skbuff.h:1263 [inline] __skb_queue_purge_reason include/linux/skbuff.h:3343 [inline] Kök səbəb budur: page_pool_recycle_in_ring ptr_ring_produce spin_lock(&r->producer_lock); WRITE_ONCE(r->queue[r->producer++], ptr) //sonuncu səhifənin hovuza geri qaytarılması (recycle) page_pool_release page_pool_scrub page_pool_empty_ring ptr_ring_consume page_pool_return_page //bütün səhifələrin azad edilməsi __page_pool_destroy free_percpu(pool->recycle_stats); free(pool) //azad etmə spin_unlock(&r->producer_lock); //pool->ring uaf oxuması recycle_stat_inc(pool, ring); Ring-dəki sonuncu səhifə recycle edilərkən page_pool azad oluna bilər. Bütün səhifələr recycle edilməmişdən əvvəl page pool-un azad edilməsinin qarşısını almaq üçün page_pool_release funksiyasına producer-lock baryeri əlavə edilib. CONFIG_PAGE_POOL_STATS aktiv olmadıqda recycle_stat_inc() boş olur ki, bu da Wempty-body build xəbərdarlığına səbəb olurdu. Xəbərdarlığı aradan qaldırmaq üçün pool stat makrosu üçün tərif əlavə edilib.
Necə düzəltmək olar
- linux linux_kernel6.12.34, 6.15.3 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| linux linux_kernel | 4.18 ≤ v < 6.12.34, 6.13 ≤ v < 6.15.3 | 6.12.34, 6.15.3 |
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.