CVE-2023-52564

Revert "tty: n_gsm: fix UAF in gsm_cleanup_mux"

published March 2, 2024

CVSS
—
EPSS
0%
Percentile
14.2
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

Revert "tty: n_gsm: fix UAF in gsm_cleanup_mux"

This reverts commit 9b9c8195f3f0d74a826077fc1c01b9ee74907239.

The commit above is reverted as it did not solve the original issue.

gsm_cleanup_mux() tries to free up the virtual ttys by calling

gsm_dlci_release() for each available DLCI. There, dlci_put() is called to

decrease the reference counter for the DLCI via tty_port_put() which

finally calls gsm_dlci_free(). This already clears the pointer which is

being checked in gsm_cleanup_mux() before calling gsm_dlci_release().

Therefore, it is not necessary to clear this pointer in gsm_cleanup_mux()

as done in the reverted commit. The commit introduces a null pointer

dereference:

<TASK>

? __die+0x1f/0x70

? page_fault_oops+0x156/0x420

? search_exception_tables+0x37/0x50

? fixup_exception+0x21/0x310

? exc_page_fault+0x69/0x150

? asm_exc_page_fault+0x26/0x30

? tty_port_put+0x19/0xa0

gsmtty_cleanup+0x29/0x80 [n_gsm]

release_one_tty+0x37/0xe0

process_one_work+0x1e6/0x3e0

worker_thread+0x4c/0x3d0

? __pfx_worker_thread+0x10/0x10

kthread+0xe1/0x110

? __pfx_kthread+0x10/0x10

ret_from_fork+0x2f/0x50

? __pfx_kthread+0x10/0x10

ret_from_fork_asm+0x1b/0x30

</TASK>

The actual issue is that nothing guards dlci_put() from being called

multiple times while the tty driver was triggered but did not yet finished

calling gsm_dlci_free().

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00239 · 14.2th percentile
Published
2024-03-02T21:59Z
EPSS history
Timeline
  • 02 MAR 21:59Z
    Revert "tty: n_gsm: fix UAF in gsm_cleanup_mux"
    cvelistv5