Skip to content
CVE PROGRAM SOURCE RECORD9.8 Critical

CVE-2026-72020

ipvs: reset full ip_vs_seq structs in ip_vs_conn_new

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.

Affected products

Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.

Linux Linux

Default version status: unaffected

  • 9a05475cebdd6341884b5901e53870be26e65158 to < 3bf9a260188b2a5449cbddc032a749ab433fe328affected
  • 9a05475cebdd6341884b5901e53870be26e65158 to < 6378c5cb360eb1750f88839d7c3613ea92ac1816affected
  • 9a05475cebdd6341884b5901e53870be26e65158 to < 32c299e28b8eea6cbbd23b97dc61401e9ef9c445affected
  • 9a05475cebdd6341884b5901e53870be26e65158 to < 9e36602cbec552286f7e691cfd366525c565ee74affected
  • 9a05475cebdd6341884b5901e53870be26e65158 to < d0eed7177e822cab83141e5c44b2aa345c7fd379affected
  • 9a05475cebdd6341884b5901e53870be26e65158 to < 83fb4c2c5344f02eac929f66de3c9d1adfcde04caffected
  • 9a05475cebdd6341884b5901e53870be26e65158 to < 6335ab62d5fc9ed875279238233fba3462c168f5affected
  • 9a05475cebdd6341884b5901e53870be26e65158 to < 2975324d164c552b028632f107b567302863b7f6affected

Linux Linux

Default version status: affected

  • 3.10affected
  • 0 to < 3.10unaffected
  • 5.10.261 to ≤ 5.10.*unaffected
  • 5.15.212 to ≤ 5.15.*unaffected
  • 6.1.178 to ≤ 6.1.*unaffected
  • 6.6.145 to ≤ 6.6.*unaffected
  • 6.12.97 to ≤ 6.12.*unaffected
  • 6.18.40 to ≤ 6.18.*unaffected
  • 7.1.5 to ≤ 7.1.*unaffected
  • 7.2 to ≤ *unaffected

References