Bluetooth: RFCOMM: Fix NULL tty_dev dereference in rfcomm_dev_shutdown
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.6.160, 6.12.113, 6.18.57, 7.2.11
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: Bluetooth: RFCOMM: Fix NULL tty_dev dereference in rfcomm_dev_shutdown syzbot hit a NULL pointer dereference in rfcomm_dev_shutdown() when an RFCOMM tty is closed. rfcomm_dev_add() puts the new device on rfcomm_dev_list first and only then registers the tty device and saves it in dev->tty_dev. If that registration fails, dev->tty_dev is never set at all. The device can be looked up in the meantime, so an open() of /dev/rfcommN gets through rfcomm_tty_install() and attaches to it. When that tty is closed again, rfcomm_dev_shutdown() uses dev->tty_dev without checking it: Oops: general protection fault, probably for non-canonical address KASAN: null-ptr-deref in range [0x0000000000000040-0x0000000000000047] RIP: 0010:rfcomm_dev_shutdown+0x48/0xb0 net/bluetooth/rfcomm/tty.c:131 Call Trace: tty_port_shutdown+0x1bf/0x220 drivers/tty/tty_port.c:372 tty_port_close+0x4e/0x150 drivers/tty/tty_port.c:705 tty_release+0x359/0x1670 drivers/tty/tty_io.c:1718 __fput+0x418/0xa50 fs/file_table.c:512 rfcomm_dev_destruct() already copes with a NULL dev->tty_dev. Add the same check to rfcomm_dev_shutdown(), so the tty device is only moved when it was actually registered.
Timeline
- CVE published
- First seen by cve.now
Affected versions
- Linux Linux
From cad348a17e170451ea8688b532a6ca3e98c63b60 · fixed in d5c372ad03330f02962d4860df4d355ab25487df; From cad348a17e170451ea8688b532a6ca3e98c63b60 · fixed in 3fd5164bdb04635caa7942ddb554b0ec699a9433; From cad348a17e170451ea8688b532a6ca3e98c63b60 · fixed in a661f401f83b8462f2d424e0a1a72b7681e92ea2; From cad348a17e170451ea8688b532a6ca3e98c63b60 · fixed in d0aef0b0374678153244f162df507106d728af39; From cad348a17e170451ea8688b532a6ca3e98c63b60 · fixed in 08e90633377f1b2567ab5ad6810b74c552246a07
- Linux Linux
3.12
- KernelLinux
From 3.12.0 · fixed in 6.6.160; From 6.7.0 · fixed in 6.12.113; From 6.13.0 · fixed in 6.18.57; From 6.19.0 · fixed in 7.2.11