CVE-2026-80901: ipvs: fix the checksum validations
In the Linux kernel, the following vulnerability has been resolved:
ipvs: fix the checksum validations
ipvsinicmpv6() is missing checksum validation for ICMPv6 packets from clients. In fact, as for TCP/UDP we should validate the checksum for ICMP packets only when we mangle the packets on MASQ or on reply for tunnel.
Also, Sashiko points out that handleresponseicmp() being common for IPv4 and IPv6 is missing the pseudo-header calculation while validating ICMPv6 messages from real servers which is a problem if checksum is not validated by the hardware.
Fix the problems by creating ipvschecksumcommoncheck() helper and use it for TCP/UDP/ICMP both for IPv4 and IPv6. Rely on the nfchecksum() for validating the ICMP messages but use it also for TCP and UDP.
Use correct IP offset for IPVSDBGRLPKT for TCP/UDP/SCTP.
IPVS packets (TCP/UDP/SCTP/ICMP) do not need checksum validation on LOCALOUT (local clients or local real servers) and on FORWARD (traffic from servers on LAN). Do it only on LOCALIN, in case nfchecksum() is not called on PREROUTING.
Also, ipvschecksumcomplete() can be marked static.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Update the IPVS checksum validation logic to rely on nf_checksum() when validating ICMP messages (including ICMPv6), instead of skipping checksum validation.
Linux kernel (IPVS) Rely on nf_checksum() for validating ICMP messages = enabled - Configuration
Fix IPVS packet offset handling for IP_VS_DBG_RL_PKT so TCP/UDP/SCTP validations use the correct IP offset.
Linux kernel (IPVS) Use correct IP offset for IP_VS_DBG_RL_PKT for TCP/UDP/SCTP = correct - Configuration
Implement ip_vs_checksum_common_check() as the shared checksum validation helper for IPv4 and IPv6, including pseudo-header handling for TCP/UDP/ICMP.
Linux kernel (IPVS) Create ip_vs_checksum_common_check() = implemented - Configuration
Perform ICMP checksum validation only for LOCAL_IN (local clients) to avoid issues when nf_checksum() is not available for other paths.
Linux kernel (IPVS) Checksum validation scope for ICMP = LOCAL_IN only - Configuration
Adjust IPVS logic so IPVS packets (TCP/UDP/SCTP/ICMP) do not require checksum recalculation during IPVS packet processing; rely on correct checksum validation paths instead.
Linux kernel (IPVS) IPVS checksum behavior for L4 protocols = skip checksums for TCP/UDP/SCTP/ICMP packets
Event History
Frequently Asked Questions
Which deployments are most exposed to this issue?
Systems using Linux IPVS are relevant. The described paths include ICMPv6 traffic from clients and ICMPv6 responses from real servers, particularly where hardware does not validate checksums.
Is every IPVS packet path subject to checksum validation?
No. The fix states that IPVS packets do not require checksum validation on LOCAL_OUT for local clients or local real servers, or on FORWARD for traffic from servers on the LAN. Validation is performed on LOCAL_IN when nf_checksum() was not already called on PRE_ROUTING.
Can the affected Linux kernel versions be identified from this information?
No. The provided data identifies Linux Kernel as the affected software and lists stable-kernel commit references, but does not specify affected or fixed version numbers.