Linux: Bluetooth: RFCOMM: Fix NULL tty_dev dereference in rfcomm_dev_shutdown
What fixes it
- 3fd5164bdb04635caa7942ddb554b0ec699a9433LinuxCVE List
- 08e90633377f1b2567ab5ad6810b74c552246a07LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
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.
Text from CVE List
Affected versions 12
- Linuxaffected: cad348a17e170451ea8688b532a6ca3e98c63b60 before d5c372ad03330f02962d4860df4d355ab25487dfCVE List
- Linuxaffected: cad348a17e170451ea8688b532a6ca3e98c63b60 before 3fd5164bdb04635caa7942ddb554b0ec699a9433CVE List
- Linuxaffected: cad348a17e170451ea8688b532a6ca3e98c63b60 before a661f401f83b8462f2d424e0a1a72b7681e92ea2CVE List
- Linuxaffected: cad348a17e170451ea8688b532a6ca3e98c63b60 before d0aef0b0374678153244f162df507106d728af39CVE List
- Linuxaffected: cad348a17e170451ea8688b532a6ca3e98c63b60 before 08e90633377f1b2567ab5ad6810b74c552246a07CVE List
- Linuxaffected: 3.12CVE List
- Linuxunaffected: all versions before 3.12CVE List
- Linuxunaffected: 6.6.160 through 6.6.*CVE List
- Linuxunaffected: 6.12.113 through 6.12.*CVE List
- Linuxunaffected: 6.18.57 through 6.18.*CVE List
- Linuxunaffected: 7.2.11 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 5
- git.kernel.org/stable/c/d5c372ad03330f02962d4860df4d355ab25487dfReferencevia CVE List
- git.kernel.org/stable/c/3fd5164bdb04635caa7942ddb554b0ec699a9433Referencevia CVE List
- git.kernel.org/stable/c/a661f401f83b8462f2d424e0a1a72b7681e92ea2Referencevia CVE List
- git.kernel.org/stable/c/d0aef0b0374678153244f162df507106d728af39Referencevia CVE List
- git.kernel.org/stable/c/08e90633377f1b2567ab5ad6810b74c552246a07Referencevia CVE List