Subject: CVE-2023-52483: mctp: perform route lookups under a RCU read-side lock

From: Greg Kroah-Hartman <[email-masked]>

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

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

mctp: perform route lookups under a RCU read-side lock

Our current route lookups (mctp_route_lookup and mctp_route_lookup_null)
traverse the net's route list without the RCU read lock held. This means
the route lookup is subject to preemption, resulting in an potential
grace period expiry, and so an eventual kfree() while we still have the
route pointer.

Add the proper read-side critical section locks around the route
lookups, preventing premption and a possible parallel kfree.

The remaining net->mctp.routes accesses are already under a
rcu_read_lock, or protected by the RTNL for updates.

Based on an analysis from Sili Luo <[email-masked]>, where
introducing a delay in the route lookup could cause a UAF on
simultaneous sendmsg() and route deletion.

The Linux kernel CVE team has assigned CVE-2023-52483 to this issue.

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

	Issue introduced in 5.15 with commit 889b7da23abf and fixed in 5.15.137 with commit 6c52b1215904
	Issue introduced in 5.15 with commit 889b7da23abf and fixed in 6.1.59 with commit 1db0724a01b5
	Issue introduced in 5.15 with commit 889b7da23abf and fixed in 6.5.8 with commit 2405f64a95a7
	Issue introduced in 5.15 with commit 889b7da23abf and fixed in 6.6 with commit 5093bbfc10ab

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-2023-52483
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:
	net/mctp/route.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/6c52b12159049046483fdb0c411a0a1869c41a67
	https://git.kernel.org/stable/c/1db0724a01b558feb1ecae551782add1951a114a
	https://git.kernel.org/stable/c/2405f64a95a7a094eb24cba9bcfaffd1ea264de4
	https://git.kernel.org/stable/c/5093bbfc10ab6636b32728e35813cbd79feb063c