CVE-2021-4442

tcp: add sanity tests to TCP_QUEUE_SEQ

State
Published
Severity
Not scored
Published
Aug 29, 2024
Updated
May 11, 2026
Reserved
Aug 29, 2024

Read the record on cve.org

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.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • ee9952831cfd0bbe834f4a26489d7dce74582e37 to before 319f460237fc2965a80aa9a055044e1da7b3692aAffected
  • ee9952831cfd0bbe834f4a26489d7dce74582e37 to before 3bf899438c123c444f6b644a57784dfbb6b15ad6Affected
  • ee9952831cfd0bbe834f4a26489d7dce74582e37 to before 046f3c1c2ff450fb7ae53650e9a95e0074a61f3eAffected
  • ee9952831cfd0bbe834f4a26489d7dce74582e37 to before 3b72d5a703842f582502d97906f17d6ee122dac2Affected
  • ee9952831cfd0bbe834f4a26489d7dce74582e37 to before 8811f4a9836e31c14ecdf79d9f3cb7c5d463265dAffected
LinuxLinux
  • 3.5Affected
  • before 3.5Not affected
  • 4.19.181 through 4.19.*Not affected
  • 5.4.106 through 5.4.*Not affected
  • 5.10.24 through 5.10.*Not affected
  • 5.11.7 through 5.11.*Not affected
  • 5.12 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.