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

net/sched: em_text: reject unterminated algo before autoload

This is a follow-up to commit 9c572a83037a ("net/sched: fix potential
stack infoleak in em_text_dump()"), which zero-initialised the dump-side
struct. Sashiko pointed at a pre-existing bug that exposed the change-side
input-validation gap open.

em_text_change() casts the raw netlink attribute payload to struct
tcf_em_text and passes conf->algo, a 16-byte array with no enforced NUL
terminator, to textsearch_prepare(). On the TS_AUTOLOAD retry
textsearch_prepare() calls request_module("ts_%s", algo); vsnprintf()
walks %s until it finds a NUL, so an algo[] with no NUL reads past the
array into the adjacent struct fields and payload and feeds those bytes
to the usermode helper command line. This is an out-of-bounds read and
a kernel memory disclosure.

Reject the attribute when no NUL exists within TC_EM_TEXT_ALGOSIZ bytes,
matching the check xt_string has had since 3ab720881b6e.

Conditions to recreate the bug:
- CAP_NET_ADMIN on the target netns (namespace-local via unshare -Urn
is enough)
- install clsact on an interface, then add a basic filter with one text
ematch whose algo[] is 16 bytes with no NUL (e.g. "A"*16) and
pattern_len at least 1
- the add fails with -ENOENT and the kernel invokes modprobe with a
module name made of "ts_" plus the 16 bytes and the adjacent payload
Published: 2026-10-23
Score: 3.3 Low
EPSS: < 1% Very Low
KEV: No
Impact: Kernel Memory Disclosure
Action: Update Kernel
AI Analysis

Impact

In the Linux kernel, an out‑of‑bounds read occurs when the em_text match algorithm name is supplied without a terminating NUL byte. The kernel copies the 16‑byte algorithm string into a structure, then passes it to a helper function that interprets the string as a module name. Because the string has no NUL terminator, the function reads past the array boundary, consumes adjacent memory, and produces an untrusted module name. The kernel then attempts to load a module powered that name, leaking kernel memory contents to user space, providing a kernel data disclosure. A local administrator with CAP_NET_ADMIN privileges on a network namespace can trigger the flaw by installing the clsact qdisc, adding a filter with a text ematch where the algo string contains no NUL byte, and setting a pattern length. The kernel will refuse to add the filter, emit an ENOENT error, and invoke the module loader with a malformed module name, causing the memory read. The vulnerability triggers only after specific privileged operations; it is not a remote code execution flaw. However, it provides an attacker with kernel memory which could be leveraged for further attacks or information gathering. No public exploit has been reported, but the EPSS score is around 0.00168 (<1%), and the lack of a hard KEV flag does not diminish the potential impact for systems that remain unpatched.

Affected Systems

The flaw resides in the Linux kernel’s traffic‑control subsystem (net/sched). All Linux kernel releases before the patch that added a NUL‑terminator check in the em_text handling are affected; the CVE data does not specify an explicit version range.

Risk and Exploitability

The CVSS score is 3.3, the EPSS score is around 0.00168 (<1%), and the flaw is not listed in the CISA KEV catalog. The vulnerability can be exploited by an attacker with CAP_NET_ADMIN privileges on a local or namespace‑isolated system. An attacker crafts a netlink attribute that supplies a 16‑byte em_text algorithm name without a NUL byte, causing an out‑of‑bounds read and a kernel memory disclosure. Because the attack requires privileged policy changes, remote exploitation is unlikely, but on a compromised or misconfigured host the disclosure could be a stepping‑stone for further compromise.

Generated by OpenCVE AI on October 29, 2026 at 22:38 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that contains the commit which zero‑initialises the em_text dump structure and rejects algorithm strings without a null terminator
  • If upgrading is not immediately feasible, ensure that any user‑controlled netlink attributes specifying an em_text algo string are null‑terminated and within the allowed size before acceptance by the kernel
  • Configure the system so that the module loader (modprobe) cannot be invoked with arbitrary names from untrusted contexts by disabling auto‑loading of kernel modules or restricting module_path and module_blacklist

Generated by OpenCVE AI on October 29, 2026 at 22:38 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 30 Oct 2026 13:00:00 +0000


Thu, 29 Oct 2026 20:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-119
CWE-788

Thu, 29 Oct 2026 12:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-125
References
Metrics threat_severity

None

cvssV3_1

{'score': 3.3, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N'}

threat_severity

Low


Fri, 23 Oct 2026 19:45:00 +0000

Type Values Removed Values Added
First Time appeared Linux linux
Vendors & Products Linux linux

Fri, 23 Oct 2026 17:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-119
CWE-788

Fri, 23 Oct 2026 12:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: net/sched: em_text: reject unterminated algo before autoload This is a follow-up to commit 9c572a83037a ("net/sched: fix potential stack infoleak in em_text_dump()"), which zero-initialised the dump-side struct. Sashiko pointed at a pre-existing bug that exposed the change-side input-validation gap open. em_text_change() casts the raw netlink attribute payload to struct tcf_em_text and passes conf->algo, a 16-byte array with no enforced NUL terminator, to textsearch_prepare(). On the TS_AUTOLOAD retry textsearch_prepare() calls request_module("ts_%s", algo); vsnprintf() walks %s until it finds a NUL, so an algo[] with no NUL reads past the array into the adjacent struct fields and payload and feeds those bytes to the usermode helper command line. This is an out-of-bounds read and a kernel memory disclosure. Reject the attribute when no NUL exists within TC_EM_TEXT_ALGOSIZ bytes, matching the check xt_string has had since 3ab720881b6e. Conditions to recreate the bug: - CAP_NET_ADMIN on the target netns (namespace-local via unshare -Urn is enough) - install clsact on an interface, then add a basic filter with one text ematch whose algo[] is 16 bytes with no NUL (e.g. "A"*16) and pattern_len at least 1 - the add fails with -ENOENT and the kernel invokes modprobe with a module name made of "ts_" plus the 16 bytes and the adjacent payload
Title net/sched: em_text: reject unterminated algo before autoload
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-30T12:40:35.763Z

Reserved: 2026-09-25T10:25:14.383Z

Link: CVE-2026-98969

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-23T13:17:18.440

Modified: 2026-10-30T13:21:33.367

Link: CVE-2026-98969

cve-icon Redhat

Severity : Low

Publid Date: 2026-10-23T00:00:00Z

Links: CVE-2026-98969 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-29T22:45:03Z

Weaknesses