CVE-2023-52564
Severity CVSS v4.0:
Pending analysis
Type:
CWE-476
NULL Pointer Dereference
Publication date:
02/03/2024
Last modified:
07/01/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
Revert "tty: n_gsm: fix UAF in gsm_cleanup_mux"<br />
<br />
This reverts commit 9b9c8195f3f0d74a826077fc1c01b9ee74907239.<br />
<br />
The commit above is reverted as it did not solve the original issue.<br />
<br />
gsm_cleanup_mux() tries to free up the virtual ttys by calling<br />
gsm_dlci_release() for each available DLCI. There, dlci_put() is called to<br />
decrease the reference counter for the DLCI via tty_port_put() which<br />
finally calls gsm_dlci_free(). This already clears the pointer which is<br />
being checked in gsm_cleanup_mux() before calling gsm_dlci_release().<br />
Therefore, it is not necessary to clear this pointer in gsm_cleanup_mux()<br />
as done in the reverted commit. The commit introduces a null pointer<br />
dereference:<br />
<br />
? __die+0x1f/0x70<br />
? page_fault_oops+0x156/0x420<br />
? search_exception_tables+0x37/0x50<br />
? fixup_exception+0x21/0x310<br />
? exc_page_fault+0x69/0x150<br />
? asm_exc_page_fault+0x26/0x30<br />
? tty_port_put+0x19/0xa0<br />
gsmtty_cleanup+0x29/0x80 [n_gsm]<br />
release_one_tty+0x37/0xe0<br />
process_one_work+0x1e6/0x3e0<br />
worker_thread+0x4c/0x3d0<br />
? __pfx_worker_thread+0x10/0x10<br />
kthread+0xe1/0x110<br />
? __pfx_kthread+0x10/0x10<br />
ret_from_fork+0x2f/0x50<br />
? __pfx_kthread+0x10/0x10<br />
ret_from_fork_asm+0x1b/0x30<br />
<br />
<br />
The actual issue is that nothing guards dlci_put() from being called<br />
multiple times while the tty driver was triggered but did not yet finished<br />
calling gsm_dlci_free().
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
CPE | From | Up to |
---|---|---|
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.10.190 (including) | 5.10.198 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.15.124 (including) | 5.15.134 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.1.43 (including) | 6.1.56 (excluding) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.5 (including) | 6.5.6 (excluding) |
cpe:2.3:o:linux:linux_kernel:6.6:rc1:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.6:rc2:*:*:*:*:*:* | ||
cpe:2.3:o:linux:linux_kernel:6.6:rc3:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/29346e217b8ab8a52889b88f00b268278d6b7668
- https://git.kernel.org/stable/c/2bff660e0ff349dee84dc4f6f6d10da4497f5b28
- https://git.kernel.org/stable/c/6d5c8862932d31a810b6545f7d69ecc124402c6e
- https://git.kernel.org/stable/c/a48d2bcd23f2c98d575bc2f9b7a3fbd16aeea9eb
- https://git.kernel.org/stable/c/c61d0b87a7028c2c10faffc524d748334c7b9827
- https://git.kernel.org/stable/c/29346e217b8ab8a52889b88f00b268278d6b7668
- https://git.kernel.org/stable/c/2bff660e0ff349dee84dc4f6f6d10da4497f5b28
- https://git.kernel.org/stable/c/6d5c8862932d31a810b6545f7d69ecc124402c6e
- https://git.kernel.org/stable/c/a48d2bcd23f2c98d575bc2f9b7a3fbd16aeea9eb
- https://git.kernel.org/stable/c/c61d0b87a7028c2c10faffc524d748334c7b9827