KernelScan.io

HIGH Introduced in 2.6.12

ipvs SchedulerCache Exhaustion

CVE-2026-98857

CVSS 7.5 / 10.0 KernelScan AI

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

01

In the Linux kernel, the following vulnerability has been resolved: ipvs: bound LBLCR and LBLC cache growth ip_vs_lblcr_new() and ip_vs_lblc_new() create cache entries for every previously unseen destination address. The table max_size only tells the periodic collector to reclaim entries after the cache has already exceeded the limit. It does not reclaim entries that the attacker continues to use. Reject new cache entries once either table reaches max_size * 3 / 2. The extra headroom lets the periodic collector catch up while the existing scheduler fallback continues to use the selected destination when cache creation fails. New traffic therefore stays serviceable without growing the tables further.

02

Engine v0.9.0

Risk summary

An unauthenticated network attacker can exhaust kernel memory by sending traffic to many distinct destination addresses through an IPVS load balancer using the LBLC or LBLCR schedulers. The cache grows without bound because the configured max_size is only enforced by a periodic garbage collector, not at allocation time. This leads to system-wide out-of-memory conditions, freezing or crashing the host.

Affectednet/netfilter/ipvs/ip_vs_lblc.c, net/netfilter/ipvs/ip_vs_lblcr.c (IPVS LBLC/LBLCR schedulers)

Vulnerability analysis

The IPVS LBLC and LBLCR schedulers create a cache entry for every new destination address they see. The configured size limit was only enforced by a background cleanup task, so an attacker sending packets to many different destination IPs could force the cache to grow without bound, eventually exhausting kernel memory. The fix adds a hard limit: once the cache reaches 1.5 times its configured size, new entries are refused and the scheduler falls back to its default behavior, keeping the service working while the cleanup catches up. Any network sender that can reach the IPVS load balancer can trigger this — no authentication or local access needed.

03

BranchIntroducedFixed inPatch commit
6.122.6.126.12.11331028d7b9709
6.182.6.126.18.566316d17324bd
6.62.6.126.6.160bc9ff8e64771
7.22.6.127.2.1016c83c047ecf
mainline2.6.127.32a3c3de660f9

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Affected — no CIP fix yet (latest 6.12.112-cip33)
cip/6.1Affected — no CIP fix yet (latest 6.1.189-cip61)
cip/6.1-rtAffected — no CIP fix yet (latest 6.1.189-cip61-rt32)
cip/5.10Affected — no CIP fix yet (latest 5.10.271-cip78)
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)
cip/4.19Affected — no CIP fix yet (latest 4.19.325-cip136)
cip/4.19-rtAffected — no CIP fix yet (latest 4.19.325-cip136-rt50)
cip/4.4Affected — no CIP fix yet (latest 4.4.302-cip115)
cip/4.4-rtAffected — no CIP fix yet (latest 4.4.302-cip115-rt63)