CVE-2022-50070

EUVD-2022-55216
In the Linux kernel, the following vulnerability has been resolved:

mptcp: do not queue data on closed subflows

Dipanjan reported a syzbot splat at close time:

WARNING: CPU: 1 PID: 10818 at net/ipv4/af_inet.c:153
inet_sock_destruct+0x6d0/0x8e0 net/ipv4/af_inet.c:153
Modules linked in: uio_ivshmem(OE) uio(E)
CPU: 1 PID: 10818 Comm: kworker/1:16 Tainted: G           OE
5.19.0-rc6-g2eae0556bb9d #2
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
1.13.0-1ubuntu1.1 04/01/2014
Workqueue: events mptcp_worker
RIP: 0010:inet_sock_destruct+0x6d0/0x8e0 net/ipv4/af_inet.c:153
Code: 21 02 00 00 41 8b 9c 24 28 02 00 00 e9 07 ff ff ff e8 34 4d 91
f9 89 ee 4c 89 e7 e8 4a 47 60 ff e9 a6 fc ff ff e8 20 4d 91 f9 <0f> 0b
e9 84 fe ff ff e8 14 4d 91 f9 0f 0b e9 d4 fd ff ff e8 08 4d
RSP: 0018:ffffc9001b35fa78 EFLAGS: 00010246
RAX: 0000000000000000 RBX: 00000000002879d0 RCX: ffff8881326f3b00
RDX: 0000000000000000 RSI: ffff8881326f3b00 RDI: 0000000000000002
RBP: ffff888179662674 R08: ffffffff87e983a0 R09: 0000000000000000
R10: 0000000000000005 R11: 00000000000004ea R12: ffff888179662400
R13: ffff888179662428 R14: 0000000000000001 R15: ffff88817e38e258
FS:  0000000000000000(0000) GS:ffff8881f5f00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000020007bc0 CR3: 0000000179592000 CR4: 0000000000150ee0
Call Trace:
 <TASK>
 __sk_destruct+0x4f/0x8e0 net/core/sock.c:2067
 sk_destruct+0xbd/0xe0 net/core/sock.c:2112
 __sk_free+0xef/0x3d0 net/core/sock.c:2123
 sk_free+0x78/0xa0 net/core/sock.c:2134
 sock_put include/net/sock.h:1927 [inline]
 __mptcp_close_ssk+0x50f/0x780 net/mptcp/protocol.c:2351
 __mptcp_destroy_sock+0x332/0x760 net/mptcp/protocol.c:2828
 mptcp_worker+0x5d2/0xc90 net/mptcp/protocol.c:2586
 process_one_work+0x9cc/0x1650 kernel/workqueue.c:2289
 worker_thread+0x623/0x1070 kernel/workqueue.c:2436
 kthread+0x2e9/0x3a0 kernel/kthread.c:376
 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:302
 </TASK>

The root cause of the problem is that an mptcp-level (re)transmit can
race with mptcp_close() and the packet scheduler checks the subflow
state before acquiring the socket lock: we can try to (re)transmit on
an already closed ssk.

Fix the issue checking again the subflow socket status under the
subflow socket lock protection. Additionally add the missing check
for the fallback-to-tcp case.
ProviderTypeBase ScoreAtk. VectorAtk. ComplexityPriv. RequiredVector
NISTPrimary
7.8 HIGH
LOCAL
LOW
LOW
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Base Score
CVSS 3.x
EPSS Score
Percentile: 2%
Affected Products (NVD)
VendorProductVersion
linuxlinux_kernel
5.10 ≤
𝑥
< 5.15.190
linuxlinux_kernel
5.16 ≤
𝑥
< 5.19.4
𝑥
= Vulnerable software versions
Debian logo
Debian Releases
Debian Product
Codename
linux
bookworm
6.1.137-1
fixed
bookworm (security)
6.1.140-1
fixed
bullseye
vulnerable
bullseye (security)
vulnerable
sid
6.12.32-1
fixed
trixie
6.12.32-1
fixed
trixie (security)
6.12.31-1
fixed
Ubuntu logo
Ubuntu Releases
Ubuntu Product
Codename
linux
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
needs-triage
oracular
needs-triage
plucky
needs-triage
trusty
needs-triage
xenial
needs-triage
linux-allwinner-5.19
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-aws
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
needs-triage
oracular
needs-triage
plucky
needs-triage
trusty
needs-triage
xenial
needs-triage
linux-aws-5.0
bionic
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-aws-5.11
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-aws-5.13
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-aws-5.15
focal
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-aws-5.19
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-aws-5.3
bionic
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-aws-5.4
bionic
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-aws-5.8
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-aws-6.2
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-aws-6.5
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-aws-6.8
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-aws-fips
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-aws-hwe
jammy
dne
noble
dne
oracular
dne
plucky
dne
xenial
needs-triage
linux-azure
bionic
ignored
focal
needs-triage
jammy
needs-triage
noble
needs-triage
oracular
needs-triage
plucky
needs-triage
trusty
needs-triage
xenial
needs-triage
linux-azure-4.15
bionic
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-azure-5.11
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-azure-5.13
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-azure-5.15
focal
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-azure-5.19
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-azure-5.3
bionic
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-azure-5.4
bionic
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-azure-5.8
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-azure-6.11
jammy
dne
noble
needs-triage
oracular
dne
plucky
dne
linux-azure-6.2
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-azure-6.5
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-azure-6.8
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-azure-edge
bionic
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-azure-fde
focal
ignored
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-azure-fde-5.15
focal
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-azure-fde-5.19
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-azure-fde-6.2
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-azure-fips
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-azure-nvidia
jammy
dne
noble
needs-triage
oracular
dne
plucky
dne
linux-bluefield
focal
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-fips
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
xenial
needs-triage
linux-gcp
bionic
ignored
focal
needs-triage
jammy
needs-triage
noble
needs-triage
oracular
needs-triage
plucky
needs-triage
xenial
needs-triage
linux-gcp-4.15
bionic
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-gcp-5.11
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-gcp-5.13
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-gcp-5.15
focal
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-gcp-5.19
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-gcp-5.3
bionic
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-gcp-5.4
bionic
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-gcp-5.8
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-gcp-6.11
jammy
dne
noble
needs-triage
oracular
dne
plucky
dne
linux-gcp-6.2
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-gcp-6.5
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-gcp-6.8
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-gcp-fips
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-gke
focal
ignored
jammy
needs-triage
noble
needs-triage
oracular
dne
plucky
dne
linux-gke-4.15
bionic
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-gke-5.15
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-gke-5.4
bionic
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-gkeop
focal
ignored
jammy
needs-triage
noble
needs-triage
oracular
dne
plucky
dne
linux-gkeop-5.15
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-gkeop-5.4
bionic
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-hwe
bionic
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
xenial
needs-triage
linux-hwe-5.11
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-hwe-5.13
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-hwe-5.15
focal
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-hwe-5.19
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-hwe-5.4
bionic
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-hwe-5.8
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-hwe-6.11
jammy
dne
noble
needs-triage
oracular
dne
plucky
dne
linux-hwe-6.2
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-hwe-6.5
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-hwe-6.8
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-hwe-edge
bionic
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
xenial
ignored
linux-ibm
focal
needs-triage
jammy
needs-triage
noble
needs-triage
oracular
dne
plucky
dne
linux-ibm-5.15
focal
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-ibm-5.4
bionic
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-intel-5.13
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-intel-iot-realtime
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-intel-iotg
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-intel-iotg-5.15
focal
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-iot
focal
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-kvm
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
xenial
needs-triage
linux-lowlatency
jammy
needs-triage
noble
needs-triage
oracular
needs-triage
plucky
dne
linux-lowlatency-hwe-5.15
focal
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-lowlatency-hwe-5.19
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-lowlatency-hwe-6.11
jammy
dne
noble
needs-triage
oracular
dne
plucky
dne
linux-lowlatency-hwe-6.2
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-lowlatency-hwe-6.5
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-lowlatency-hwe-6.8
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-lts-xenial
jammy
dne
noble
dne
oracular
dne
plucky
dne
trusty
needs-triage
linux-nvidia
jammy
needs-triage
noble
needs-triage
oracular
dne
plucky
dne
linux-nvidia-6.2
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-nvidia-6.5
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-nvidia-6.8
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-nvidia-lowlatency
jammy
dne
noble
needs-triage
oracular
dne
plucky
dne
linux-nvidia-tegra
jammy
needs-triage
noble
needs-triage
oracular
dne
plucky
dne
linux-nvidia-tegra-5.15
focal
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-nvidia-tegra-igx
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-oem
bionic
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-oem-5.10
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-oem-5.13
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-oem-5.14
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-oem-5.17
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-oem-5.6
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-oem-6.0
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-oem-6.1
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-oem-6.11
jammy
dne
noble
needs-triage
oracular
dne
plucky
dne
linux-oem-6.14
jammy
dne
noble
needs-triage
oracular
dne
plucky
dne
linux-oem-6.5
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-oem-6.8
jammy
dne
noble
needs-triage
oracular
dne
plucky
dne
linux-oracle
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
needs-triage
oracular
needs-triage
plucky
needs-triage
xenial
needs-triage
linux-oracle-5.0
bionic
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-oracle-5.11
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-oracle-5.13
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-oracle-5.15
focal
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-oracle-5.3
bionic
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-oracle-5.4
bionic
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-oracle-5.8
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-oracle-6.5
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-oracle-6.8
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-raspi
focal
needs-triage
jammy
needs-triage
noble
needs-triage
oracular
needs-triage
plucky
needs-triage
linux-raspi-5.4
bionic
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-raspi-realtime
jammy
dne
noble
needs-triage
oracular
dne
plucky
dne
linux-raspi2
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-realtime
jammy
needs-triage
noble
needs-triage
oracular
needs-triage
plucky
needs-triage
linux-riscv
focal
ignored
jammy
ignored
noble
needs-triage
oracular
needs-triage
plucky
needs-triage
linux-riscv-5.11
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-riscv-5.15
focal
needs-triage
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-riscv-5.19
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-riscv-5.8
focal
ignored
jammy
dne
noble
dne
oracular
dne
plucky
dne
linux-riscv-6.5
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-riscv-6.8
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne
linux-starfive-5.19
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-starfive-6.2
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-starfive-6.5
jammy
ignored
noble
dne
oracular
dne
plucky
dne
linux-xilinx-zynqmp
focal
needs-triage
jammy
needs-triage
noble
dne
oracular
dne
plucky
dne