Skip to content
CVE PROGRAM SOURCE RECORDUnscored

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.

Affected products

Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.

Linux Linux

Default version status: unaffected

  • ee9952831cfd0bbe834f4a26489d7dce74582e37 to < 319f460237fc2965a80aa9a055044e1da7b3692aaffected
  • ee9952831cfd0bbe834f4a26489d7dce74582e37 to < 3bf899438c123c444f6b644a57784dfbb6b15ad6affected
  • ee9952831cfd0bbe834f4a26489d7dce74582e37 to < 046f3c1c2ff450fb7ae53650e9a95e0074a61f3eaffected
  • ee9952831cfd0bbe834f4a26489d7dce74582e37 to < 3b72d5a703842f582502d97906f17d6ee122dac2affected
  • ee9952831cfd0bbe834f4a26489d7dce74582e37 to < 8811f4a9836e31c14ecdf79d9f3cb7c5d463265daffected

Linux Linux

Default version status: affected

  • 3.5affected
  • 0 to < 3.5unaffected
  • 4.19.181 to ≤ 4.19.*unaffected
  • 5.4.106 to ≤ 5.4.*unaffected
  • 5.10.24 to ≤ 5.10.*unaffected
  • 5.11.7 to ≤ 5.11.*unaffected
  • 5.12 to ≤ *unaffected

References