Description
In the Linux kernel, the following vulnerability has been resolved: nfc: fix use-after-free in nfc_get_local_general_bytes Commit 6709d4b7bc2e ("net: nfc: Fix use-after-free caused by nfc_llcp_find_local") attempted to fix a use-after-free (UAF) issue by invoking nfc_llcp_local_put(local) after accessing local->gb. However, if the reference count drops to zero, local is freed immediately, leading to a use-after-free when callers access the returned pointer. Alternative approaches using dynamic allocation (e.g. kmemdup) introduced memory leaks because callers consistently treat the returned pointer as borrowed memory. Fix this properly by refactoring nfc_llcp_general_bytes() and nfc_get_local_general_bytes() to accept a caller-provided output buffer (out_gb) and its maximum length (gb_max_len). The general bytes are safely copied into out_gb before calling nfc_llcp_local_put(local), ensuring safe lifetime management without ownership transfer complications. Update all callers across drivers (microread, pn533, pn544, st21nfca, digital_dep, and nci) to provide their own destination buffers and pass them to nfc_get_local_general_bytes().
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
96f2c6f272ec04083d828de46285a7d7b17d1aad to < 25bfa673adc70189c0bc872940421ae59f789cf6affectedfc8429f8d86801f092fbfbd257c3af821ac0dcd3 to < 2b31d0cc95856c856ada91f943fb14dfdf29a923affected425d9d3a92df7d96b3cfb7ee5c240293a21cbde3 to < c40f61a6a413f3eaf028e5fe367fd9749e503ab0affected6709d4b7bc2e079241fdef15d1160581c5261c10 to < 19bcfc2a56d0b82919079b5424c5a9a0ac897dcfaffected6709d4b7bc2e079241fdef15d1160581c5261c10 to < d8c929e9afdbc33b1876ecb97a517e850449b5bdaffected6709d4b7bc2e079241fdef15d1160581c5261c10 to < 841af260ff477f6191872bc3b2e15488615c1827affected6709d4b7bc2e079241fdef15d1160581c5261c10 to < 9ede11e12f965ace97c4e0f606667f24fb41e7e1affected6709d4b7bc2e079241fdef15d1160581c5261c10 to < dcab71a7011918f6fdba7adcec02d217dcb84b8daffecteddd6ff3f3862709ab1a12566e73b9d6a9b8f6e548affectedb3ad46e155a6d91b36c6e892019a43e3ef3c696daffectede5207c1d69b1a9707615ab6ff9376e59fc096815affected5.10.188 to < 5.10.271affected5.15.121 to < 5.15.222affected6.1.39 to < 6.1.189affected5.4.251 to < 5.5affected6.3.13 to < 6.4affected6.4.4 to < 6.5affected
Linux Linux
Default version status: affected
6.5affected0 to < 6.5unaffected5.10.271 to ≤ 5.10.*unaffected5.15.222 to ≤ 5.15.*unaffected6.1.189 to ≤ 6.1.*unaffected6.6.158 to ≤ 6.6.*unaffected6.12.112 to ≤ 6.12.*unaffected6.18.55 to ≤ 6.18.*unaffected7.2.9 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/25bfa673adc70189c0bc872940421ae59f789cf6 ↗
- https://git.kernel.org/stable/c/2b31d0cc95856c856ada91f943fb14dfdf29a923 ↗
- https://git.kernel.org/stable/c/c40f61a6a413f3eaf028e5fe367fd9749e503ab0 ↗
- https://git.kernel.org/stable/c/19bcfc2a56d0b82919079b5424c5a9a0ac897dcf ↗
- https://git.kernel.org/stable/c/d8c929e9afdbc33b1876ecb97a517e850449b5bd ↗
- https://git.kernel.org/stable/c/841af260ff477f6191872bc3b2e15488615c1827 ↗
- https://git.kernel.org/stable/c/9ede11e12f965ace97c4e0f606667f24fb41e7e1 ↗
- https://git.kernel.org/stable/c/dcab71a7011918f6fdba7adcec02d217dcb84b8d ↗