[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2024082945-CVE-2021-4442-0a5f@gregkh>
Date: Thu, 29 Aug 2024 11:06:46 +0200
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: CVE-2021-4442: tcp: add sanity tests to TCP_QUEUE_SEQ
Description
===========
In the Linux kernel, the following vulnerability has been resolved:
tcp: add sanity tests to TCP_QUEUE_SEQ
Qingyu Li reported a syzkaller bug where the repro
changes RCV SEQ _after_ restoring data in the receive queue.
mprotect(0x4aa000, 12288, PROT_READ) = 0
mmap(0x1ffff000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x1ffff000
mmap(0x20000000, 16777216, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x20000000
mmap(0x21000000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x21000000
socket(AF_INET6, SOCK_STREAM, IPPROTO_IP) = 3
setsockopt(3, SOL_TCP, TCP_REPAIR, [1], 4) = 0
connect(3, {sa_family=AF_INET6, sin6_port=htons(0), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_scope_id=0}, 28) = 0
setsockopt(3, SOL_TCP, TCP_REPAIR_QUEUE, [1], 4) = 0
sendmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="0x0000000000000003\0\0", iov_len=20}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 20
setsockopt(3, SOL_TCP, TCP_REPAIR, [0], 4) = 0
setsockopt(3, SOL_TCP, TCP_QUEUE_SEQ, [128], 4) = 0
recvfrom(3, NULL, 20, 0, NULL, NULL) = -1 ECONNRESET (Connection reset by peer)
syslog shows:
[ 111.205099] TCP recvmsg seq # bug 2: copied 80, seq 0, rcvnxt 80, fl 0
[ 111.207894] WARNING: CPU: 1 PID: 356 at net/ipv4/tcp.c:2343 tcp_recvmsg_locked+0x90e/0x29a0
This should not be allowed. TCP_QUEUE_SEQ should only be used
when queues are empty.
This patch fixes this case, and the tx path as well.
The Linux kernel CVE team has assigned CVE-2021-4442 to this issue.
Affected and fixed versions
===========================
Issue introduced in 3.5 with commit ee9952831cfd and fixed in 4.19.181 with commit 319f460237fc
Issue introduced in 3.5 with commit ee9952831cfd and fixed in 5.4.106 with commit 3bf899438c12
Issue introduced in 3.5 with commit ee9952831cfd and fixed in 5.10.24 with commit 046f3c1c2ff4
Issue introduced in 3.5 with commit ee9952831cfd and fixed in 5.11.7 with commit 3b72d5a70384
Issue introduced in 3.5 with commit ee9952831cfd and fixed in 5.12 with commit 8811f4a9836e
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-2021-4442
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/ipv4/tcp.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/319f460237fc2965a80aa9a055044e1da7b3692a
https://git.kernel.org/stable/c/3bf899438c123c444f6b644a57784dfbb6b15ad6
https://git.kernel.org/stable/c/046f3c1c2ff450fb7ae53650e9a95e0074a61f3e
https://git.kernel.org/stable/c/3b72d5a703842f582502d97906f17d6ee122dac2
https://git.kernel.org/stable/c/8811f4a9836e31c14ecdf79d9f3cb7c5d463265d
Powered by blists - more mailing lists