KernelScan.io

CRITICAL

net UDP Peek Checksum Race

CVE-2016-10229

CVSS 9.8 / 10.0 NVD

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

KernelScan AI9.8CRITICAL

01

udp.c in the Linux kernel before 4.5 allows remote attackers to execute arbitrary code via UDP traffic that triggers an unsafe second checksum calculation during execution of a recv system call with the MSG_PEEK flag.

02

Engine v0.6.0

Risk summary

An unauthenticated remote UDP sender can trigger a kernel memory-corruption condition when a receiving process peeks at an incoming datagram with an undersized buffer. If the vulnerable path is reached, arbitrary code may execute with kernel privileges, putting reachable UDP services that use this receive pattern at risk.

Affectednet/ipv4/udp.c and net/ipv6/udp.c (UDP subsystem)

Vulnerability analysis

When a peeked datagram is larger than the receiver's buffer, the original receive path could complete checksum validation and then make a second, state-dependent checksum-and-copy decision on the same packet. That repeated handling was unsafe for a short destination buffer and could corrupt kernel memory, leading to arbitrary code execution. The fix retains the result of the first validation and uses the copy path that safely handles truncated user buffers, avoiding a second checksum calculation in both IPv4 and IPv6. An unauthenticated remote sender can reach the flaw through a reachable UDP socket when a target process performs a peek with a buffer smaller than the arriving datagram; no special hardware or local attacker privilege is required.

03

BranchIntroducedFixed inPatch commit
3.10—3.10.10398f57e42cab0
4.5—4.5—
mainline—4.5-rc1197c949e7798
cip/4.4—4.4.42-cip1dfe2042d9606
cip/4.4-rt—4.4.75-cip6-rt1dfe2042d9606

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/4.4Fixed in 4.4.42-cip1
cip/4.4-rtFixed in 4.4.75-cip6-rt1