[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2025032718-CVE-2023-53023-ef4e@gregkh>
Date: Thu, 27 Mar 2025 17:44:10 +0100
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: CVE-2023-53023: net: nfc: Fix use-after-free in local_cleanup()
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
net: nfc: Fix use-after-free in local_cleanup()
Fix a use-after-free that occurs in kfree_skb() called from
local_cleanup(). This could happen when killing nfc daemon (e.g. neard)
after detaching an nfc device.
When detaching an nfc device, local_cleanup() called from
nfc_llcp_unregister_device() frees local->rx_pending and decreases
local->ref by kref_put() in nfc_llcp_local_put().
In the terminating process, nfc daemon releases all sockets and it leads
to decreasing local->ref. After the last release of local->ref,
local_cleanup() called from local_release() frees local->rx_pending
again, which leads to the bug.
Setting local->rx_pending to NULL in local_cleanup() could prevent
use-after-free when local_cleanup() is called twice.
Found by a modified version of syzkaller.
BUG: KASAN: use-after-free in kfree_skb()
Call Trace:
dump_stack_lvl (lib/dump_stack.c:106)
print_address_description.constprop.0.cold (mm/kasan/report.c:306)
kasan_check_range (mm/kasan/generic.c:189)
kfree_skb (net/core/skbuff.c:955)
local_cleanup (net/nfc/llcp_core.c:159)
nfc_llcp_local_put.part.0 (net/nfc/llcp_core.c:172)
nfc_llcp_local_put (net/nfc/llcp_core.c:181)
llcp_sock_destruct (net/nfc/llcp_sock.c:959)
__sk_destruct (net/core/sock.c:2133)
sk_destruct (net/core/sock.c:2181)
__sk_free (net/core/sock.c:2192)
sk_free (net/core/sock.c:2203)
llcp_sock_release (net/nfc/llcp_sock.c:646)
__sock_release (net/socket.c:650)
sock_close (net/socket.c:1365)
__fput (fs/file_table.c:306)
task_work_run (kernel/task_work.c:179)
ptrace_notify (kernel/signal.c:2354)
syscall_exit_to_user_mode_prepare (kernel/entry/common.c:278)
syscall_exit_to_user_mode (kernel/entry/common.c:296)
do_syscall_64 (arch/x86/entry/common.c:86)
entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:106)
Allocated by task 4719:
kasan_save_stack (mm/kasan/common.c:45)
__kasan_slab_alloc (mm/kasan/common.c:325)
slab_post_alloc_hook (mm/slab.h:766)
kmem_cache_alloc_node (mm/slub.c:3497)
__alloc_skb (net/core/skbuff.c:552)
pn533_recv_response (drivers/nfc/pn533/usb.c:65)
__usb_hcd_giveback_urb (drivers/usb/core/hcd.c:1671)
usb_giveback_urb_bh (drivers/usb/core/hcd.c:1704)
tasklet_action_common.isra.0 (kernel/softirq.c:797)
__do_softirq (kernel/softirq.c:571)
Freed by task 1901:
kasan_save_stack (mm/kasan/common.c:45)
kasan_set_track (mm/kasan/common.c:52)
kasan_save_free_info (mm/kasan/genericdd.c:518)
__kasan_slab_free (mm/kasan/common.c:236)
kmem_cache_free (mm/slub.c:3809)
kfree_skbmem (net/core/skbuff.c:874)
kfree_skb (net/core/skbuff.c:931)
local_cleanup (net/nfc/llcp_core.c:159)
nfc_llcp_unregister_device (net/nfc/llcp_core.c:1617)
nfc_unregister_device (net/nfc/core.c:1179)
pn53x_unregister_nfc (drivers/nfc/pn533/pn533.c:2846)
pn533_usb_disconnect (drivers/nfc/pn533/usb.c:579)
usb_unbind_interface (drivers/usb/core/driver.c:458)
device_release_driver_internal (drivers/base/dd.c:1279)
bus_remove_device (drivers/base/bus.c:529)
device_del (drivers/base/core.c:3665)
usb_disable_device (drivers/usb/core/message.c:1420)
usb_disconnect (drivers/usb/core.c:2261)
hub_event (drivers/usb/core/hub.c:5833)
process_one_work (arch/x86/include/asm/jump_label.h:27 include/linux/jump_label.h:212 include/trace/events/workqueue.h:108 kernel/workqueue.c:2281)
worker_thread (include/linux/list.h:282 kernel/workqueue.c:2423)
kthread (kernel/kthread.c:319)
ret_from_fork (arch/x86/entry/entry_64.S:301)
The Linux kernel CVE team has assigned CVE-2023-53023 to this issue.
Affected and fixed versions
===========================
Issue introduced in 3.9 with commit 3536da06db0baa675f32de608c0a4c0f5ef0e9ff and fixed in 4.14.305 with commit b09ae26f08aaf2d85f96ea7f90ddd3387f62216f
Issue introduced in 3.9 with commit 3536da06db0baa675f32de608c0a4c0f5ef0e9ff and fixed in 4.19.272 with commit 54f7be61584b8ec4c6df405f479495b9397bae4a
Issue introduced in 3.9 with commit 3536da06db0baa675f32de608c0a4c0f5ef0e9ff and fixed in 5.4.231 with commit a59cdbda3714e11aa3ab579132864c4c8c6d54f9
Issue introduced in 3.9 with commit 3536da06db0baa675f32de608c0a4c0f5ef0e9ff and fixed in 5.10.166 with commit ad1baab3a5c03692d22ce446f38596a126377f6a
Issue introduced in 3.9 with commit 3536da06db0baa675f32de608c0a4c0f5ef0e9ff and fixed in 5.15.91 with commit 7f129927feaf7c10b1c38bbce630172e9a08c834
Issue introduced in 3.9 with commit 3536da06db0baa675f32de608c0a4c0f5ef0e9ff and fixed in 6.1.9 with commit d3605282ec3502ec8847915eb2cf1f340493ff79
Issue introduced in 3.9 with commit 3536da06db0baa675f32de608c0a4c0f5ef0e9ff and fixed in 6.2 with commit 4bb4db7f3187c6e3de6b229ffc87cdb30a2d22b6
Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.
Unaffected versions might change over time as fixes are backported to
older supported kernel versions. The official CVE entry at
https://cve.org/CVERecord/?id=CVE-2023-53023
will be updated if fixes are backported, please check that for the most
up to date information about this issue.
Affected files
==============
The file(s) affected by this issue are:
net/nfc/llcp_core.c
Mitigation
==========
The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes. Individual
changes are never tested alone, but rather are part of a larger kernel
release. Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all. If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
https://git.kernel.org/stable/c/b09ae26f08aaf2d85f96ea7f90ddd3387f62216f
https://git.kernel.org/stable/c/54f7be61584b8ec4c6df405f479495b9397bae4a
https://git.kernel.org/stable/c/a59cdbda3714e11aa3ab579132864c4c8c6d54f9
https://git.kernel.org/stable/c/ad1baab3a5c03692d22ce446f38596a126377f6a
https://git.kernel.org/stable/c/7f129927feaf7c10b1c38bbce630172e9a08c834
https://git.kernel.org/stable/c/d3605282ec3502ec8847915eb2cf1f340493ff79
https://git.kernel.org/stable/c/4bb4db7f3187c6e3de6b229ffc87cdb30a2d22b6
Powered by blists - more mailing lists