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().

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:*:*:*:*:*:*