In the Linux kernel, the following vulnerability has been resolved:
can: afcan: fix NULL pointer dereference in canrx_register()
It causes NULL pointer dereference when testing as following: (a) use syscall(NRsocket, 0x10ul, 3ul, 0) to create netlink socket. (b) use syscall(NRsendmsg, ...) to create bond link device and vxcan link device, and bind vxcan device to bond device (can also use ifenslave command to bind vxcan device to bond device). (c) use syscall(NRsocket, 0x1dul, 3ul, 1) to create CAN socket. (d) use syscall(NRbind, ...) to bind the bond device to CAN socket.
The bond device invokes the can-raw protocol registration interface to receive CAN packets. However, mlpriv is not allocated to the dev, devrcvlists is assigned to NULL in canrx_register(). In this case, it will occur the NULL pointer dereference issue.
The following is the stack information: BUG: kernel NULL pointer dereference, address: 0000000000000008 PGD 122a4067 P4D 122a4067 PUD 1223c067 PMD 0 Oops: 0000 [#1] PREEMPT SMP RIP: 0010:canrxregister+0x12d/0x1e0 Call Trace: <TASK> rawenablefilters+0x8d/0x120 rawenableallfilters+0x3b/0x130 rawbind+0x118/0x4f0 _sysbind+0x163/0x1a0 _x64sysbind+0x1e/0x30 dosyscall64+0x35/0x80 entrySYSCALL64afterhwframe+0x63/0xcd </TASK>