Read the docs
TI-2022-25877 Aliases CVE-2022-50396GHSA-8gwc-c833-gwmc

net: sched: fix memory leak in tcindex_set_parms

Priority LOW 24CWE-401Published · Updated

Key facts

Attack vector
Local
Privileges required
Low
User interaction
None
Attack complexity
Low
Impact type
Denial of service
Confidentiality · integrity · availability
None · None · High
Fix status
Partial Red Hat: 8 fixed, 4 without a fix

Attack profile from CVSS 3.1 · CISA ADP. Fix status from CNA and Red Hat. Impact type from CWE-401.

Summary

In the Linux kernel, the following vulnerability has been resolved: net: sched: fix memory leak in tcindex_set_parms Syzkaller reports a memory leak as follows: ==================================== BUG: memory leak unreferenced object 0xffff88810c287f00 (size 256): comm "syz-executor105", pid 3600, jiffies 4294943292 (age 12.990s) hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace: [<ffffffff814cf9f0>] kmalloc_trace+0x20/0x90 mm/slab_common.c:1046 [<ffffffff839c9e07>] kmalloc include/linux/slab.h:576 [inline] [<ffffffff839c9e07>] kmalloc_array include/linux/slab.h:627 [inline] [<ffffffff839c9e07>] kcalloc include/linux/slab.h:659 [inline] [<ffffffff839c9e07>] tcf_exts_init include/net/pkt_cls.h:250 [inline] [<ffffffff839c9e07>] tcindex_set_parms+0xa7/0xbe0 net/sched/cls_tcindex.c:342 [<ffffffff839caa1f>] tcindex_change+0xdf/0x120 net/sched/cls_tcindex.c:553 [<ffffffff8394db62>] tc_new_tfilter+0x4f2/0x1100 net/sched/cls_api.c:2147 [<ffffffff8389e91c>] rtnetlink_rcv_msg+0x4dc/0x5d0 net/core/rtnetlink.c:6082 [<ffffffff839eba67>] netlink_rcv_skb+0x87/0x1d0 net/netlink/af_netlink.c:2540 [<ffffffff839eab87>] netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline] [<ffffffff839eab87>] netlink_unicast+0x397/0x4c0 net/netlink/af_netlink.c:1345 [<ffffffff839eb046>] netlink_sendmsg+0x396/0x710 net/netlink/af_netlink.c:1921 [<ffffffff8383e796>] sock_sendmsg_nosec net/socket.c:714 [inline] [<ffffffff8383e796>] sock_sendmsg+0x56/0x80 net/socket.c:734 [<ffffffff8383eb08>] ____sys_sendmsg+0x178/0x410 net/socket.c:2482 [<ffffffff83843678>] ___sys_sendmsg+0xa8/0x110 net/socket.c:2536 [<ffffffff838439c5>] __sys_sendmmsg+0x105/0x330 net/socket.c:2622 [<ffffffff83843c14>] __do_sys_sendmmsg net/socket.c:2651 [inline] [<ffffffff83843c14>] __se_sys_sendmmsg net/socket.c:2648 [inline] [<ffffffff83843c14>] __x64_sys_sendmmsg+0x24/0x30 net/socket.c:2648 [<ffffffff84605fd5>] do_syscall_x64 arch/x86/entry/common.c:50 [inline] [<ffffffff84605fd5>] do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80 [<ffffffff84800087>] entry_SYSCALL_64_after_hwframe+0x63/0xcd ==================================== Kernel uses tcindex_change() to change an existing filter properties. Yet the problem is that, during the process of changing, if `old_r` is retrieved from `p->perfect`, then kernel uses tcindex_alloc_perfect_hash() to newly allocate filter results, uses tcindex_filter_result_init() to clear the old filter result, without destroying its tcf_exts structure, which triggers the above memory leak. To be more specific, there are only two source for the `old_r`, according to the tcindex_lookup(). `old_r` is retrieved from `p->perfect`, or `old_r` is retrieved from `p->h`. * If `old_r` is retrieved from `p->perfect`, kernel uses tcindex_alloc_perfect_hash() to newly allocate the filter results. Then `r` is assigned with `cp->perfect + handle`, which is newly allocated. So condition `old_r && old_r != r` is true in this situation, and kernel uses tcindex_filter_result_init() to clear the old filter result, without destroying its tcf_exts structure * If `old_r` is retrieved from `p->h`, then `p->perfect` is NULL according to the tcindex_lookup(). Considering that `cp->h` is directly copied from `p->h` and `p->perfect` is NULL, `r` is assigned with `tcindex_lookup(cp, handle)`, whose value should be the same as `old_r`, so condition `old_r && old_r != r` is false in this situation, kernel ignores using tcindex_filter_result_init() to clear the old filter result. So only when `old_r` is retrieved from `p->perfect` does kernel use tcindex_filter_result_init() to clear the old filter result, which triggers the above memory leak. Considering that there already exists a tc_filter_wq workqueue to destroy the old tcindex_d ---truncated---

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00174 6th percentileScored 2026-11-07
Fix Partial Linux (Linux): 4.14.308, 4.19.276, 5.4.229 +10Red Hat: 3 advisoriesRed Hat: 8 fixed, 4 without a fix

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
LinuxLinux4.9 and later4.14.308, 4.19.276, 5.4.229, 5.4.235, 5.10.163, 5.10.173, 5.15.87, 5.15.100, 6.0.19, 6.1.5, 6.1.18, 6.2.5, 6.2Patch availableCNA
  • Linux VendorLinux Affected 4.9 and later Fixed in 4.14.308, 4.19.276, 5.4.229, 5.4.235, 5.10.163, 5.10.173, 5.15.87, 5.15.100, 6.0.19, 6.1.5, 6.1.18, 6.2.5, 6.2 Patch available CNA

CPE configurations NVD · 1

CPEVersionsRoleVendor
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*4.9 to before 4.14.308; 4.15 to before 4.19.276; 4.20 to before 5.4.235; 5.5 to before 5.10.173; 5.11 to before 5.15.100; 5.16 to before 6.0.19; 6.1 to before 6.1.18; 6.2 to before 6.2.5VulnerableLinux
  • cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* Versions 4.9 to before 4.14.308; 4.15 to before 4.19.276; 4.20 to before 5.4.235; 5.5 to before 5.10.173; 5.11 to before 5.15.100; 5.16 to before 6.0.19; 6.1 to before 6.1.18; 6.2 to before 6.2.5 Vulnerable ·Linux

Remediation

  • Fix · CNA Linux (Linux) Fixed in 4.14.308, 4.19.276, 5.4.229, 5.4.235, 5.10.163, 5.10.173, 5.15.87, 5.15.100, 6.0.19, 6.1.5, 6.1.18, 6.2.5, 6.2

Red Hat 3 advisories

  • RHSA-2023:7077 Released 2023-11-14 · Red Hat rating Important
    kernel security, bug fix, and enhancement update
    • Red Hat CodeReady Linux Builder (v. 8) kernel-tools-libs-devel-4.18.0-513.5.1.el8_9
    • Red Hat Enterprise Linux BaseOS (v. 8) bpftool-4.18.0-513.5.1.el8_9, kernel-4.18.0-513.5.1.el8_9, kernel-abi-stablelists-4.18.0-513.5.1.el8_9 +19
  • RHSA-2023:4130 Released 2023-07-18 · Red Hat rating Important
    kernel security and bug fix update
    • Red Hat CodeReady Linux Builder EUS (v.8.6) kernel-tools-libs-devel-4.18.0-372.64.1.el8_6
    • Red Hat Enterprise Linux BaseOS EUS (v.8.6) bpftool-4.18.0-372.64.1.el8_6, kernel-4.18.0-372.64.1.el8_6, kernel-abi-stablelists-4.18.0-372.64.1.el8_6 +19
    • Red Hat Virtualization 4 Hypervisor for RHEL 8 kernel-devel-4.18.0-372.64.1.el8_6, perf-4.18.0-372.64.1.el8_6
  • RHSA-2023:2458 Released 2023-05-09 · Red Hat rating Important
    kernel security, bug fix, and enhancement update
    • Red Hat Enterprise Linux AppStream (v. 9) kernel-64k-debug-devel-5.14.0-284.11.1.el9_2, kernel-64k-debug-devel-matched-5.14.0-284.11.1.el9_2, kernel-64k-devel-5.14.0-284.11.1.el9_2 +10
    • Red Hat Enterprise Linux BaseOS (v. 9) bpftool-7.0.0-284.11.1.el9_2, kernel-5.14.0-284.11.1.el9_2, kernel-64k-5.14.0-284.11.1.el9_2 +29
    • Red Hat Enterprise Linux CRB (v. 9) kernel-tools-libs-devel-5.14.0-284.11.1.el9_2

Vendor assessments

Red Hat

Red Hat rating: Moderate. Red Hat's page for this CVE →

ProductStatusPlan or fix
Red Hat Enterprise Linux 6AffectedNo fix planned: Out of support scope
Red Hat Enterprise Linux 7AffectedNo fix planned: Out of support scope
Red Hat Enterprise Linux 8AffectedNo fix planned: Out of support scope
Red Hat Enterprise Linux 9AffectedNo fix yet: Fix deferred
Red Hat CodeReady Linux Builder (v. 8)Fixed RHSA-2023:7077
Red Hat CodeReady Linux Builder EUS (v.8.6)Fixed RHSA-2023:4130
Red Hat Enterprise Linux AppStream (v. 9)Fixed RHSA-2023:2458
Red Hat Enterprise Linux BaseOS (v. 8)Fixed RHSA-2023:7077
Red Hat Enterprise Linux BaseOS (v. 9)Fixed RHSA-2023:2458
Red Hat Enterprise Linux BaseOS EUS (v.8.6)Fixed RHSA-2023:4130
Red Hat Enterprise Linux CRB (v. 9)Fixed RHSA-2023:2458
Red Hat Virtualization 4 Hypervisor for RHEL 8Fixed RHSA-2023:4130
Not affected: 1 product
  • Red Hat Enterprise Linux 10

Timeline

  1. 2026-10-02 Threatist record created from CVE-2022-50396
  2. 2026-10-03 Alias added: GHSA-8gwc-c833-gwmc

References

  • TI-2025-26358 tls: fix handling of zero-length records on the rx_list KEVCVSS 3.1CRITICAL 9.8
  • TI-2026-38352 netfilter: bridge: make ebt_snat ARP rewrite writable KEVCVSS 3.1HIGH 8.8
  • TI-2013-05264 The (1) get_user and (2) put_user API functions in the Linux kernel before 3.5.5 on the… KEVCVSS 3.1HIGH 8.8
  • TI-2022-00125 Integer overflow in kernel KEVCVSS 3.1HIGH 8.4
  • TI-2013-01864 The perf_swevent_init function in kernel/events/core.c in the Linux kernel before 3.8.9… KEVCVSS 3.1HIGH 8.4
  • TI-2021-05514 Heap Out-Of-Bounds Write in Netfilter IP6T_SO_SET_REPLACE KEVCVSS 3.1HIGH 8.3
See all 15278 →

Sources