CVE-2025-37824 Information
Description
In the Linux kernel the following vulnerability has been resolved:
tipc: fix NULL pointer dereference in tipc_mon_reinit_self()
syzbot reported:
tipc: Node number set to 1055423674
Oops: general protection fault probably for non-canonical address 0xdffffc0000000000: 0000 [1] SMP KASAN NOPTI
KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]
CPU: 3 UID: 0 PID: 6017 Comm: kworker/3:5 Not tainted 6.15.0-rc1-syzkaller-00246-g900241a5cc15 0 PREEMPT(full)
Hardware name: QEMU Standard PC (Q35 + ICH9 2009) BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
Workqueue: events tipc_net_finalize_work
RIP: 0010:tipc_mon_reinit_self+0x11c/0x210 net/tipc/monitor.c:719
…
RSP: 0018:ffffc9000356fb68 EFLAGS: 00010246
RAX: 0000000000000000 RBX: 0000000000000000 RCX: 000000003ee87cba
RDX: 0000000000000000 RSI: ffffffff8dbc56a7 RDI: ffff88804c2cc010
RBP: dffffc0000000000 R08: 0000000000000001 R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000007
R13: fffffbfff2111097 R14: ffff88804ead8000 R15: ffff88804ead9010
FS: 0000000000000000(0000) GS:ffff888097ab9000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00000000f720eb00 CR3: 000000000e182000 CR4: 0000000000352ef0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
There is a racing condition between workqueue created when enabling bearer and another thread created when disabling bearer right after that as follow:
| enabling_bearer | disabling_bearer |
|---|---|
| tipc_disc_timeout() | |
| bearer_disable() | |
| … | |
| schedule_work(&tn->work); | tipc_mon_delete() |
| … | |
| … | |
| write_lock_bh(&mon->lock); | |
| mon->self = NULL; | |
| write_unlock_bh(&mon->lock); | |
| … | |
| tipc_net_finalize_work() | |
| … | |
| tipc_net_finalize() | |
| … | |
| tipc_mon_reinit_self() | |
| … | |
| write_lock_bh(&mon->lock); | |
| mon->self->addr = tipc_own_addr(net); | |
| write_unlock_bh(&mon->lock); | |
| … |
truncated—
Reference
https://git.kernel.org/stable/c/0ceef62a328ce1288598c9242576292671f21e96 https://git.kernel.org/stable/c/4d5e1e2d3e9d70beff7beab44fd6ce91405a405e https://git.kernel.org/stable/c/5fd464fd24de93d0eca377554bf0ff2548f76f30 https://git.kernel.org/stable/c/a3df56010403b2cd26388096ebccf959d23c4dcc https://git.kernel.org/stable/c/d63527e109e811ef11abb1c2985048fdb528b4cb https://git.kernel.org/stable/c/dd6cb0a8575b00fbd503e96903184125176f4fa3 https://git.kernel.org/stable/c/e6613b6d41f4010c4d484cbc7bfca690d8d522a2 https://git.kernel.org/stable/c/e79e8e05aa46f90d21023f0ffe6f136ed6a20932
Share on: