CVE-2026-99999 PUBLISHED

ipv4: validate checksum_start before completing checksum

Assigner: Linux
Reserved: 25.09.2026 Published: 15.10.2026 Updated: 15.10.2026

In the Linux kernel, the following vulnerability has been resolved:

ipv4: validate checksum_start before completing checksum

If a packet with bad checksum metadata gets into the ipv4 stack, skb_checksum_help can corrupt the network header and cause a bunch of mischief.

This was discovered and reported by Paulos, and has been reporoduced by others independently since.

We really shouldn't allow such packets in, but as a defence in depth measure, let's also check before we complete the checksum.

A more complete validation at input is forthcoming, but needs more work.

Metrics

CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CVSS Score: 9.3

AV:L - A malicious microVM supplies crafted virtio-net checksum metadata with its outbound frame. The VMM writes it to the host TAP, where tun_get_user() feeds the skb to the IPv4 stack and ip_do_fragment() calls skb_checksum_help(); this is a guest/local virtual-device path, not an Internet receive path. AC:L - The guest controls the frame, checksum start and offset, and packet size and can repeat the same fragmentation sequence. No race, timing window, or uncontrollable memory layout is needed; host leak, crash, and code-execution variants were reproduced with crafted packets. PR:N - In the microVM scenario, a tenant workload able to transmit through its assigned virtio-net interface can supply the triggering traffic. It needs no host credentials, capability, or access to /dev/net/tun; the privileged VMM merely forwards guest output to its existing TAP fd. UI:N - The attacker sends the crafted guest packets directly, and host TAP/IPv4 processing invokes checksum completion automatically. No host administrator or other victim must act. S:C - The checksum metadata originates in an untrusted microVM, but skb_checksum_help() and ip_do_fragment() process and corrupt state in the host kernel. The demonstrated leak, crash, and administrator code execution cross the guest-to-host isolation boundary. C:H - After skb_checksum_help() changes an already-validated IPv4 IHL, ip_do_fragment() trusts the new length and ip_frag_next() copies beyond the skb's logical linear head into transmitted IPv4 options. This was demonstrated as continuous host-memory disclosure in guest-emitted packets. I:H - skb_checksum_help() writes at the attacker-controlled checksum position inside an IPv4 header after routing and validation, and downstream code trusts the modified fields. Crafted guest packets using this flaw were demonstrated to execute commands with full administrator privileges on the host. A:H - Malformed checksum offsets reach skb_checksum_help() from IPv4 fragmentation and can trip WARN_ONCE/panic paths or poison the header geometry used downstream. Crafted guest packets were demonstrated to crash the physical host, taking down all sandboxes on it. -- Thanks, Sasha

Product Status

Vendor Linux
Product Linux
Versions Default: unaffected
  • affected from f43798c27684ab925adde7d8acc34c78c6e50df8 to a464d950f31c89565cbaae038cc60db04fe01956 (excl.)
  • affected from f43798c27684ab925adde7d8acc34c78c6e50df8 to 0fab003ef4698e0628060a45a48f14b43ba2a40a (excl.)
  • affected from f43798c27684ab925adde7d8acc34c78c6e50df8 to 94524b7b32691de2e2ce162c04d6cbc9106e5cbf (excl.)
  • affected from f43798c27684ab925adde7d8acc34c78c6e50df8 to a65f69e0f38ffbed1b128029e09097436416dc8b (excl.)
  • affected from f43798c27684ab925adde7d8acc34c78c6e50df8 to 32a8b0adaa18e52aaa0b246b5ffe683075354dbb (excl.)
  • affected from f43798c27684ab925adde7d8acc34c78c6e50df8 to f3e835af6226f1dd12160cbd696081e9b6155de0 (excl.)
  • affected from f43798c27684ab925adde7d8acc34c78c6e50df8 to c3e33464746166264334641dc850a36eef7e6326 (excl.)
  • affected from f43798c27684ab925adde7d8acc34c78c6e50df8 to 6785011f8b16abf40b1e9d8b2e332232b3e68822 (excl.)
Vendor Linux
Product Linux
Versions Default: affected
  • Version 2.6.27 is affected
  • unaffected from 0 to 2.6.27 (excl.)
  • unaffected from 5.10.272 to 5.10.* (incl.)
  • unaffected from 5.15.223 to 5.15.* (incl.)
  • unaffected from 6.1.190 to 6.1.* (incl.)
  • unaffected from 6.6.159 to 6.6.* (incl.)
  • unaffected from 6.12.113 to 6.12.* (incl.)
  • unaffected from 6.18.57 to 6.18.* (incl.)
  • unaffected from 7.2.11 to 7.2.* (incl.)
  • unaffected from 7.3-rc7 to * (incl.)

References