Subject: CVE-2024-40983: tipc: force a dst refcount before doing decryption

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

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

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

tipc: force a dst refcount before doing decryption

As it says in commit 3bc07321ccc2 ("xfrm: Force a dst refcount before
entering the xfrm type handlers"):

"Crypto requests might return asynchronous. In this case we leave the
 rcu protected region, so force a refcount on the skb's destination
 entry before we enter the xfrm type input/output handlers."

On TIPC decryption path it has the same problem, and skb_dst_force()
should be called before doing decryption to avoid a possible crash.

Shuang reported this issue when this warning is triggered:

  [] WARNING: include/net/dst.h:337 tipc_sk_rcv+0x1055/0x1ea0 [tipc]
  [] Kdump: loaded Tainted: G W --------- - - 4.18.0-496.el8.x86_64+debug
  [] Workqueue: crypto cryptd_queue_worker
  [] RIP: 0010:tipc_sk_rcv+0x1055/0x1ea0 [tipc]
  [] Call Trace:
  [] tipc_sk_mcast_rcv+0x548/0xea0 [tipc]
  [] tipc_rcv+0xcf5/0x1060 [tipc]
  [] tipc_aead_decrypt_done+0x215/0x2e0 [tipc]
  [] cryptd_aead_crypt+0xdb/0x190
  [] cryptd_queue_worker+0xed/0x190
  [] process_one_work+0x93d/0x17e0

The Linux kernel CVE team has assigned CVE-2024-40983 to this issue.

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

	Issue introduced in 5.5 with commit fc1b6d6de220 and fixed in 5.10.221 with commit 3eb1b3962789
	Issue introduced in 5.5 with commit fc1b6d6de220 and fixed in 5.15.162 with commit 692803b39a36
	Issue introduced in 5.5 with commit fc1b6d6de220 and fixed in 6.1.96 with commit 623c90d86a61
	Issue introduced in 5.5 with commit fc1b6d6de220 and fixed in 6.6.36 with commit b57a4a2dc874
	Issue introduced in 5.5 with commit fc1b6d6de220 and fixed in 6.9.7 with commit 6808b4137167
	Issue introduced in 5.5 with commit fc1b6d6de220 and fixed in 6.10 with commit 2ebe8f840c74

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-2024-40983
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/tipc/node.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/3eb1b39627892c4e26cb0162b75725aa5fcc60c8
	https://git.kernel.org/stable/c/692803b39a36e63ac73208e0a3769ae6a2f9bc76
	https://git.kernel.org/stable/c/623c90d86a61e3780f682b32928af469c66ec4c2
	https://git.kernel.org/stable/c/b57a4a2dc8746cea58a922ebe31b6aa629d69d93
	https://git.kernel.org/stable/c/6808b41371670c51feea14f63ade211e78100930
	https://git.kernel.org/stable/c/2ebe8f840c7450ecbfca9d18ac92e9ce9155e269