CVE-2021-4442 in Linux
الملخص
بحسب VulDB • 05/06/2026
في نواة لينكس (Linux kernel)، تم حل الثغرة التالية:
tcp: إضافة اختبارات سلامة (sanity tests) إلى TCP_QUEUE_SEQ
أبلغ Qingyu Li عن خطأ في syzkaller حيث يقوم البرنامج المستنسخ (repro) بتغيير تسلسل الاستلام (RCV SEQ) **بعد** استعادة البيانات في قائمة الانتظار للاستلام (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) ما يلي: [ 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
لا ينبغي السماح بذلك. يجب استخدام TCP_QUEUE_SEQ فقط عندما تكون قوائم الانتظار فارغة.
يصلح هذا التصحيح هذه الحالة، وكذلك مسار الإرسال (tx path).
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.