Description
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 products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
35529d6b827eedb6bf7e81130e4b7e0aba9e58d2 to < 2bd1ed6d607d7013ed4959e86990a04f028543efaffected321db5131c92983dac4f3338e8fbb6df214238c0 to < 4c20a07ed26a71a8ccc9c6d935fc181573f5462eaffected9424d2205fe94a095fb9365ec0c6137f0b394a2b to < 0f9c1f26d434c32520dfe33326b28c5954bc4299affected0ca78c99656f5c448567db1e148367aa3b01c80a to < 2703da78849c47b6b5b4471edb35fc7b7f91deadaffected39ae73e581112cfe27ba50aecb1c891ce57cecb1 to < 2bee84369b76f6c9ef71938069c65a6ebd1a12f7affected8998db5021a28ad67aa8d627bdb4226e4046ccc4 to < a97ef110c491b72c138111a595a3a3af56cbc94caffected9dab880d675b9d0dd56c6428e4e8352a3339371d to < 2cbd4213baf7be5d87d183e2032c54003de0790faffected9dab880d675b9d0dd56c6428e4e8352a3339371d to < 484b7059796e3bc1cb527caa61dfc60da649b4f6affected4.14.303 to < 4.14.311affected4.19.270 to < 4.19.279affected5.4.229 to < 5.4.238affected5.10.164 to < 5.10.176affected5.15.89 to < 5.15.104affected6.1.7 to < 6.1.21affected
Linux Linux
Default version status: affected
6.2affected0 to < 6.2unaffected4.14.311 to ≤ 4.14.*unaffected4.19.279 to ≤ 4.19.*unaffected5.4.238 to ≤ 5.4.*unaffected5.10.176 to ≤ 5.10.*unaffected5.15.104 to ≤ 5.15.*unaffected6.1.21 to ≤ 6.1.*unaffected6.2.8 to ≤ 6.2.*unaffected6.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/2bd1ed6d607d7013ed4959e86990a04f028543ef ↗
- https://git.kernel.org/stable/c/4c20a07ed26a71a8ccc9c6d935fc181573f5462e ↗
- https://git.kernel.org/stable/c/0f9c1f26d434c32520dfe33326b28c5954bc4299 ↗
- https://git.kernel.org/stable/c/2703da78849c47b6b5b4471edb35fc7b7f91dead ↗
- https://git.kernel.org/stable/c/2bee84369b76f6c9ef71938069c65a6ebd1a12f7 ↗
- https://git.kernel.org/stable/c/a97ef110c491b72c138111a595a3a3af56cbc94c ↗
- https://git.kernel.org/stable/c/2cbd4213baf7be5d87d183e2032c54003de0790f ↗
- https://git.kernel.org/stable/c/484b7059796e3bc1cb527caa61dfc60da649b4f6 ↗