Available in editions: Open/CE, BE, SE, SE+, Ultimate/EE, Core
The module lifecycle stage: General Availability
The module has 7 alerts.
The module is not enabled by default in any bundles.
Parameters
Schema version: 1
- objectsettings
- objectsettings.ipv4OptionsGuard
Mitigation of CVE-2026-98432 (use-after-free in the Linux IPv4 TCP handshake triggered by a TCP SYN with IP options).
A sidecar of the CNI agent installs a filter into the host network namespace and into every pod network namespace on the node, including pods started later. The filter matches IPv4 TCP SYN packets and IPv4 fragments carrying IP options.
The filter follows the iptables mode (nft or legacy) that iptables-wrapper selects on the node, the same as the other Deckhouse components. In the nft mode, the filter uses native nftables expressions. In the legacy mode, it uses iptables with the
u32match. No kernel modules are loaded unlessallowKernelModuleLoadis set. If the kernel modules of the selected mode are not loaded but those of the other mode are, the filter uses the other mode, and the node is reported by theD8IPv4OptionsGuardBackendMismatchalert. A node that cannot be protected is reported by theD8IPv4OptionsGuardNodeUnprotectedalert.To exclude a node (for example, a node with CIPSO labeled networking), set the
ipv4-options-guard.deckhouse.io/disabled: "true"label on it: the changes are reverted on that node.The mitigation does not fix the vulnerability: update the node kernel as soon as a fixed version is available.
- booleansettings.ipv4OptionsGuard.allowKernelModuleLoad
The filter needs the
nf_tableskernel module in the nft mode and theip_tables,iptable_raw,xt_tcpudpandxt_u32kernel modules in the legacy mode.By default, kernel modules are not loaded: if a module of the mode selected by iptables-wrapper is not loaded, the filter uses the other mode when its modules are loaded, and the node is reported as unprotected otherwise. Set to
trueto load the modules of the selected mode.Default:
false - booleansettings.ipv4OptionsGuard.disableMPTCP
In the
Enforcemode, setnet.mptcp.enabled=0in the host and in every pod network namespace. This removes the precondition of the published exploit.Listeners opened before the change stay MPTCP until the process is restarted. After a node reboot, MPTCP on the host is disabled again once the CNI agent starts.
Default:
true - stringsettings.ipv4OptionsGuard.mode
Operating mode.
If the mode is not set, it is
Enforcein clusters installed with the mitigation andAuditin clusters that existed before it.Audit— matching packets are only counted (thed8_ipv4_options_guard_matched_packets_totalmetric and theD8IPv4OptionsGuardMatchedTrafficalert). Use it to check that no workload relies on IP options. While any node is in this mode, theD8IPv4OptionsGuardAuditModealert reminds that the cluster is not protected yet.Enforce— matching packets are dropped, and MPTCP is disabled ifdisableMPTCPis set.Disabled— the filter is removed from all network namespaces, including running pods, andnet.mptcp.enabledis restored to the value it had before.
The mode is applied without restarting the CNI agent pods.
Allowed values:
Audit,Enforce,Disabled
- stringsettings.podNetworkMode
Work mode.
NOTE! All cluster nodes must be rebooted after switching work mode. You can change the parameter only in bare metal clusters.
Default:
HostGWAllowed values:
HostGW,VXLAN

