CVE-2026-72020

ipvs: reset full ip_vs_seq structs in ip_vs_conn_new

State
Published
Severity
9.8 Critical
Published
Aug 15, 2026
Updated
Oct 19, 2026
Reserved
Aug 9, 2026

Read the record on cve.org

Description

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

ipvs: reset full ip_vs_seq structs in ip_vs_conn_new

Commit 9a05475cebdd ("ipvs: avoid kmem_cache_zalloc in ip_vs_conn_new") changed ip_vs_conn_new() to allocate an ip_vs_conn object with kmem_cache_alloc(). The function then initializes many fields explicitly, but only resets in_seq.delta and out_seq.delta in the two struct ip_vs_seq members.

That leaves init_seq and previous_delta uninitialized. This is normally harmless while the corresponding IP_VS_CONN_F_IN_SEQ or IP_VS_CONN_F_OUT_SEQ flag is clear. For connections learned from a sync message, however, ip_vs_proc_conn() preserves those flags from IP_VS_CONN_F_BACKUP_MASK and passes opt=NULL when the message omits IPVS_OPT_SEQ_DATA. In that case the new connection can be hashed with SEQ flags set but with the rest of in_seq/out_seq still containing stale slab data.

When a packet for such a connection is later handled by an IPVS application helper, vs_fix_seq() and vs_fix_ack_seq() use previous_delta and init_seq to rewrite TCP sequence numbers. A malformed sync message can therefore make forwarded packets carry stale slab bytes in their TCP seq/ack numbers, and can also corrupt the forwarded TCP flow.

Reset both struct ip_vs_seq members completely before publishing the connection. This matches the existing "reset struct ip_vs_seq" comment and keeps the sequence-adjustment gates inactive unless valid sequence data is installed later.

Scores

CVSSScoreVectorSource
3.19.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

  • CWE-457 Use of Uninitialized Variable

Affected Products

ProductVersions
LinuxLinux
  • 9a05475cebdd6341884b5901e53870be26e65158 to before 3bf9a260188b2a5449cbddc032a749ab433fe328Affected
  • 9a05475cebdd6341884b5901e53870be26e65158 to before 6378c5cb360eb1750f88839d7c3613ea92ac1816Affected
  • 9a05475cebdd6341884b5901e53870be26e65158 to before 32c299e28b8eea6cbbd23b97dc61401e9ef9c445Affected
  • 9a05475cebdd6341884b5901e53870be26e65158 to before 9e36602cbec552286f7e691cfd366525c565ee74Affected
  • 9a05475cebdd6341884b5901e53870be26e65158 to before d0eed7177e822cab83141e5c44b2aa345c7fd379Affected
  • 9a05475cebdd6341884b5901e53870be26e65158 to before 83fb4c2c5344f02eac929f66de3c9d1adfcde04cAffected
  • 9a05475cebdd6341884b5901e53870be26e65158 to before 6335ab62d5fc9ed875279238233fba3462c168f5Affected
  • 9a05475cebdd6341884b5901e53870be26e65158 to before 2975324d164c552b028632f107b567302863b7f6Affected
LinuxLinux
  • 3.10Affected
  • before 3.10Not affected
  • 5.10.261 through 5.10.*Not affected
  • 5.15.212 through 5.15.*Not affected
  • 6.1.178 through 6.1.*Not affected
  • 6.6.145 through 6.6.*Not affected
  • 6.12.97 through 6.12.*Not affected
  • 6.18.40 through 6.18.*Not affected
  • 7.1.5 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.