CVE-2025-38129 in Linuxinfo

Zusammenfassung

von VulDB • 15.05.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

page_pool: Behebung eines Use-After-Free-Fehlers in page_pool_recycle_in_ring

syzbot meldete einen Use-After-Free (UAF) in page_pool_recycle_in_ring:

BUG: KASAN: slab-use-after-free in lock_release+0x151/0xa30 kernel/locking/lockdep.c:5862 Lesezugriff auf Größe 8 bei Adresse ffff8880286045a0 durch Task syz.0.284/6943

CPU: 0 UID: 0 PID: 6943 Comm: syz.0.284 Nicht verändert 6.13.0-rc3-syzkaller-gdfa94ce54f41 #0 Hardwarename: 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]

Die Ursache liegt in:

page_pool_recycle_in_ring ptr_ring_produce spin_lock(&r->producer_lock); WRITE_ONCE(r->queue[r->producer++], ptr)
// Recycling der letzten Seite an den Pool page_pool_release page_pool_scrub page_pool_empty_ring ptr_ring_consume page_pool_return_page // Freigabe aller Seiten __page_pool_destroy free_percpu(pool->recycle_stats); free(pool) // Freigabe

spin_unlock(&r->producer_lock); // UAF-Lesezugriff auf pool->ring recycle_stat_inc(pool, ring);

Es kann vorkommen, dass der page_pool freigegeben wird, während die letzte Seite im Ring noch recycelt wird. Durch Hinzufügen einer Producer-Lock-Barriere in page_pool_release wird verhindert, dass der page_pool freigegeben wird, bevor alle Seiten recycelt wurden.

recycle_stat_inc() ist leer, wenn CONFIG_PAGE_POOL_STATS nicht aktiviert ist, was zu einer Build-Warnung wegen eines leeren Körpers führt. Die Definition des Pool-Statistik-Makros wurde hinzugefügt, um diese Warnung zu beheben.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Zuständig

Linux

Reservieren

16.04.2025

Veröffentlichung

03.07.2025

Moderieren

akzeptiert

Eintrag

VDB-314674

CPE

bereit

EPSS

0.00161

KEV

nein

Aktivitäten

very low

Quellen

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!