CVE-2026-64455: USB: chaoskey: Fix slab-use-after-free in chaoskey_release()

Greg Kroah-Hartman <[email protected]> Sat, 25 Jul 2026 10:51:12 +0200
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026072542-CVE-2026-64455-eb13@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

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

USB: chaoskey: Fix slab-use-after-free in chaoskey_release()

The chaoskey driver has a use-after-free bug in its release routine.
If the user closes the device file after the USB device has been
unplugged, a debugging log statement will try to access the
usb_interface structure after it has been deallocated:

	BUG: KASAN: slab-use-after-free in dev_driver_string (drivers/base/core.c:2406)
	Read of size 8 at addr ffff888168e8a0b8 by task chaoskey_raw_re/10106

	Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
	Call Trace:
	 <TASK>
	 dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120)
	 print_report (mm/kasan/report.c:378 mm/kasan/report.c:482)
	 kasan_report (mm/kasan/report.c:595)
	 dev_driver_string (drivers/base/core.c:2406)
	 __dynamic_dev_dbg (lib/dynamic_debug.c:906)
	 chaoskey_release (drivers/usb/misc/chaoskey.c:323)
	 __fput (fs/file_table.c:510)
	 fput_close_sync (fs/file_table.c:615)
	 __x64_sys_close (fs/open.c:1507 fs/open.c:1492 fs/open.c:1492)
	 do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94)
	 entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121)

The driver's last reference to the interface structure is dropped in
the chaoskey_free() routine, so the code must not use the interface --
even in a debugging statement -- after that routine returns.
(Exception: If we know that another reference is held by someone else,
such as the device core while the disconnect routine runs, there's no
problem.  Thanks to Johan Hovold for pointing this out.)

Since the bad access is part of an unimportant debugging statement,
we can fix the problem simply by removing the whole statement.

The Linux kernel CVE team has assigned CVE-2026-64455 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 4.1 with commit 66e3e591891da9899a8990792da080432531ffd4 and fixed in 5.10.261 with commit fe7a0f4be283b40dd592540027279735120d0d6f
	Issue introduced in 4.1 with commit 66e3e591891da9899a8990792da080432531ffd4 and fixed in 5.15.212 with commit 5ec61fbef9ec5635c492ae63dfb5d13f2bdf1023
	Issue introduced in 4.1 with commit 66e3e591891da9899a8990792da080432531ffd4 and fixed in 6.1.178 with commit f3e409476ad0703c54c14f245e4e143c8124e1bd
	Issue introduced in 4.1 with commit 66e3e591891da9899a8990792da080432531ffd4 and fixed in 6.6.145 with commit 6c82f88bc7a8458d5c60f9b354c4d32d233f0cac
	Issue introduced in 4.1 with commit 66e3e591891da9899a8990792da080432531ffd4 and fixed in 6.12.96 with commit 3ad5fbcced4e9c2b0fee3c1b76289a147fc35b89
	Issue introduced in 4.1 with commit 66e3e591891da9899a8990792da080432531ffd4 and fixed in 6.18.39 with commit 2a52d55c86a429dac47886b8424e67f90b001e67
	Issue introduced in 4.1 with commit 66e3e591891da9899a8990792da080432531ffd4 and fixed in 7.1.4 with commit 8f50613bff228272577893aa10a346a2f3063e49
	Issue introduced in 4.1 with commit 66e3e591891da9899a8990792da080432531ffd4 and fixed in 7.2-rc3 with commit abf76d3239dee97b66e7241ad04811f1ce562e28

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-64455
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	drivers/usb/misc/chaoskey.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/fe7a0f4be283b40dd592540027279735120d0d6f
	https://git.kernel.org/stable/c/5ec61fbef9ec5635c492ae63dfb5d13f2bdf1023
	https://git.kernel.org/stable/c/f3e409476ad0703c54c14f245e4e143c8124e1bd
	https://git.kernel.org/stable/c/6c82f88bc7a8458d5c60f9b354c4d32d233f0cac
	https://git.kernel.org/stable/c/3ad5fbcced4e9c2b0fee3c1b76289a147fc35b89
	https://git.kernel.org/stable/c/2a52d55c86a429dac47886b8424e67f90b001e67
	https://git.kernel.org/stable/c/8f50613bff228272577893aa10a346a2f3063e49
	https://git.kernel.org/stable/c/abf76d3239dee97b66e7241ad04811f1ce562e28