CVE-2023-53119

Summary

In the Linux kernel, the following vulnerability has been resolved:

nfc: pn533: initialize struct pn533_out_arg properly

struct pn533_out_arg used as a temporary context for out_urb is not initialized properly. Its uninitialized 'phy' field can be dereferenced in error cases inside pn533_out_complete() callback function. It causes the following failure:

general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] PREEMPT SMP KASAN KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.2.0-rc3-next-20230110-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022 RIP: 0010:pn533_out_complete.cold+0x15/0x44 drivers/nfc/pn533/usb.c:441 Call Trace: <IRQ> __usb_hcd_giveback_urb+0x2b6/0x5c0 drivers/usb/core/hcd.c:1671 usb_hcd_giveback_urb+0x384/0x430 drivers/usb/core/hcd.c:1754 dummy_timer+0x1203/0x32d0 drivers/usb/gadget/udc/dummy_hcd.c:1988 call_timer_fn+0x1da/0x800 kernel/time/timer.c:1700 expire_timers+0x234/0x330 kernel/time/timer.c:1751 __run_timers kernel/time/timer.c:2022 [inline] __run_timers kernel/time/timer.c:1995 [inline] run_timer_softirq+0x326/0x910 kernel/time/timer.c:2035 __do_softirq+0x1fb/0xaf6 kernel/softirq.c:571 invoke_softirq kernel/softirq.c:445 [inline] __irq_exit_rcu+0x123/0x180 kernel/softirq.c:650 irq_exit_rcu+0x9/0x20 kernel/softirq.c:662 sysvec_apic_timer_interrupt+0x97/0xc0 arch/x86/kernel/apic/apic.c:1107

Initialize the field with the pn533_usb_phy currently used.

Found by Linux Verification Center (linuxtesting.org) with Syzkaller.

Affected Software

VendorProductVersion RangeStatus
LinuxLinux35529d6b827eedb6bf7e81130e4b7e0aba9e58d2 < 2bd1ed6d607d7013ed4959e86990a04f028543efaffected
LinuxLinux321db5131c92983dac4f3338e8fbb6df214238c0 < 4c20a07ed26a71a8ccc9c6d935fc181573f5462eaffected
LinuxLinux9424d2205fe94a095fb9365ec0c6137f0b394a2b < 0f9c1f26d434c32520dfe33326b28c5954bc4299affected
LinuxLinux0ca78c99656f5c448567db1e148367aa3b01c80a < 2703da78849c47b6b5b4471edb35fc7b7f91deadaffected
LinuxLinux39ae73e581112cfe27ba50aecb1c891ce57cecb1 < 2bee84369b76f6c9ef71938069c65a6ebd1a12f7affected
LinuxLinux8998db5021a28ad67aa8d627bdb4226e4046ccc4 < a97ef110c491b72c138111a595a3a3af56cbc94caffected
LinuxLinux9dab880d675b9d0dd56c6428e4e8352a3339371d < 2cbd4213baf7be5d87d183e2032c54003de0790faffected
LinuxLinux9dab880d675b9d0dd56c6428e4e8352a3339371d < 484b7059796e3bc1cb527caa61dfc60da649b4f6affected
LinuxLinux4.14.303 < 4.14.311affected
LinuxLinux4.19.270 < 4.19.279affected
LinuxLinux5.4.229 < 5.4.238affected
LinuxLinux5.10.164 < 5.10.176affected
LinuxLinux5.15.89 < 5.15.104affected
LinuxLinux6.1.7 < 6.1.21affected
LinuxLinux6.2affected
LinuxLinux0 < 6.2unaffected
LinuxLinux4.14.311 <= 4.14.*unaffected
LinuxLinux4.19.279 <= 4.19.*unaffected
LinuxLinux5.4.238 <= 5.4.*unaffected
LinuxLinux5.10.176 <= 5.10.*unaffected
LinuxLinux5.15.104 <= 5.15.*unaffected
LinuxLinux6.1.21 <= 6.1.*unaffected
LinuxLinux6.2.8 <= 6.2.*unaffected
LinuxLinux6.3 <= *unaffected

Weaknesses

References