CVE-2026-98969
CVE-2026-98969 · net/sched: em_text: reject unterminated algo before autoload
This page contains facts from public vulnerability sources. Check the original advisory before updating.
This page shows selected source facts. See the linked advisories for the complete description and affected versions.
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
Fix available
- Published
- Updated
Stack: system
Affected products and versions
linux
- Versions
- ≥ d675c989ed2d4ba23dff615330b04371aea83534, < 00bcc303000bac524d62eed054d77372b38ace0f: Affected (git)
- ≥ d675c989ed2d4ba23dff615330b04371aea83534, < 22182f91c6703af6e9832cffe6d22b381031cb5a: Affected (git)
- ≥ d675c989ed2d4ba23dff615330b04371aea83534, < 85e5512369d4fe6e5f2c43712d9f9e01d4ae8437: Affected (git)
- ≥ d675c989ed2d4ba23dff615330b04371aea83534, < b627c6ba20be20334338229b4820baacb9d96826: Affected (git)
- ≥ d675c989ed2d4ba23dff615330b04371aea83534, < c9728fcf2e7fb4a7a8d08ebd9524c3b02ae1a021: Affected (git)
Update to 00bcc303000bac524d62eed054d77372b38ace0f
linux
- Versions
- 2.6.13: Affected
- ≥ 0, < 2.6.13: Not affected (semver)
- ≥ 6.6.160, ≤ 6.6.*: Not affected (semver)
- ≥ 6.12.113, ≤ 6.12.*: Not affected (semver)
- ≥ 6.18.57, ≤ 6.18.*: Not affected (semver)
- ≥ 7.2.11, ≤ 7.2.*: Not affected (semver)
- ≥ 7.3: Not affected (original_commit_for_fix)
No fix published
linux Debian:12
- Versions
- 6.1.106-1
- 6.1.106-2
- 6.1.106-3
- 6.1.112-1
- 6.1.115-1
- 6.1.119-1
- 6.1.123-1
- 6.1.124-1
- 6.1.128-1
- 6.1.129-1
- 6.1.133-1
- 6.1.135-1
- 6.1.137-1
- 6.1.139-1
- 6.1.140-1
- 6.1.147-1
- 6.1.148-1
- 6.1.153-1
- 6.1.158-1
- 6.1.159-1
- 6.1.162-1
- 6.1.164-1
- 6.1.170-1
- 6.1.170-2
- 6.1.170-3
- 6.1.172-1
- 6.1.174-1
- 6.1.176-1
- 6.1.177-1
- 6.1.180-1
- 6.1.187-1
- 6.1.190-1
- 6.1.27-1
- 6.1.37-1
- 6.1.38-1
- 6.1.38-2
- 6.1.38-2~bpo11+1
- 6.1.38-3
- 6.1.38-4
- 6.1.38-4~bpo11+1
- 6.1.52-1
- 6.1.55-1
- 6.1.55-1~bpo11+1
- 6.1.64-1
- 6.1.66-1
- 6.1.67-1
- 6.1.69-1
- 6.1.69-1~bpo11+1
- 6.1.76-1
- 6.1.76-1~bpo11+1
- 6.1.82-1
- 6.1.85-1
- 6.1.90-1
- 6.1.90-1~bpo11+1
- 6.1.94-1
- 6.1.94-1~bpo11+1
- 6.1.98-1
- 6.1.99-1
- 6.10-1~exp1
- 6.10.1-1~exp1
- 6.10.11-1
- 6.10.11-1~bpo12+1
- 6.10.12-1
- 6.10.3-1
- 6.10.4-1
- 6.10.6-1
- 6.10.6-1~bpo12+1
- 6.10.7-1
- 6.10.9-1
- 6.11-1~exp1
- 6.11.10-1
- 6.11.10-1~bpo12+1
- 6.11.2-1
- 6.11.4-1
- 6.11.5-1
- 6.11.5-1~bpo12+1
- 6.11.6-1
- 6.11.7-1
- 6.11.9-1
- 6.11~rc4-1~exp1
- 6.11~rc5-1~exp1
- 6.12.10-1
- 6.12.100-1
- 6.12.101-1
- 6.12.105-1
- 6.12.107-1
- 6.12.11-1
- 6.12.11-1+alpha
- 6.12.11-1+alpha.1
- 6.12.111-1
- 6.12.113-1
- 6.12.12-1
- 6.12.12-1~bpo12+1
- 6.12.13-1
- 6.12.15-1
- 6.12.16-1
- 6.12.17-1
- 6.12.19-1
- 6.12.20-1
- 6.12.21-1
- 6.12.22-1
- 6.12.22-1~bpo12+1
- 6.12.25-1
- 6.12.27-1
- 6.12.27-1~bpo12+1
- 6.12.29-1
- 6.12.3-1
- 6.12.30-1
- 6.12.30-1~bpo12+1
- 6.12.31-1
- 6.12.32-1
- 6.12.32-1~bpo12+1
- 6.12.33-1
- 6.12.33-1~bpo12+1
- 6.12.35-1
- 6.12.35-1~bpo12+1
- 6.12.37-1
- 6.12.38-1
- 6.12.38-1~bpo12+1
- 6.12.41-1
- 6.12.43-1
- 6.12.43-1~bpo12+1
- 6.12.48-1
- 6.12.5-1
- 6.12.57-1
- 6.12.57-1~bpo12+1
- 6.12.6-1
- 6.12.63-1
- 6.12.63-1~bpo12+1
- 6.12.69-1
- 6.12.69-1~bpo12+1
- 6.12.73-1
- 6.12.73-1~bpo12+1
- 6.12.74-1
- 6.12.74-2
- 6.12.74-2~bpo12+1
- 6.12.8-1
- 6.12.85-1
- 6.12.85-1~bpo12+1
- 6.12.86-1
- 6.12.86-1~bpo12+1
- 6.12.88-1
- 6.12.88-1~bpo12+1
- 6.12.9-1
- 6.12.9-1+alpha
- 6.12.9-1~bpo12+1
- 6.12.90-1
- 6.12.90-1~bpo12+1
- 6.12.90-2
- 6.12.90-2~bpo12+1
- 6.12.94-1
- 6.12.94-1~bpo12+1
- 6.12.95-1
- 6.12.95-1~bpo12+1
- 6.12.96-1
- 6.12~rc6-1~exp1
- 6.13.10-1~exp1
- 6.13.11-1~exp1
- 6.13.2-1~exp1
- 6.13.3-1~exp1
- 6.13.4-1~exp1
- 6.13.5-1~exp1
- 6.13.6-1~exp1
- 6.13.7-1~exp1
- 6.13.8-1~exp1
- 6.13.9-1~exp1
- 6.13~rc6-1~exp1
- 6.13~rc7-1~exp1
- 6.14.3-1~exp1
- 6.14.5-1~exp1
- 6.14.6-1~exp1
- 6.15-1~exp1
- 6.15.1-1~exp1
- 6.15.2-1~exp1
- 6.15.3-1~exp1
- 6.15.4-1~exp1
- 6.15.5-1~exp1
- 6.15.6-1~exp1
- 6.15~rc7-1~exp1
- 6.16-1~exp1
- 6.16.1-1~exp1
- 6.16.10-1
- 6.16.11-1
- 6.16.12-1
- 6.16.12-1~bpo13+1
- 6.16.12-2
- 6.16.3-1
- 6.16.3-1~bpo13+1
- 6.16.5-1
- 6.16.6-1
- 6.16.7-1
- 6.16.8-1
- 6.16.9-1
- 6.16~rc7-1~exp1
- 6.17.10-1
- 6.17.11-1
- 6.17.12-1
- 6.17.13-1
- 6.17.13-1~bpo13+1
- 6.17.2-1~exp1
- 6.17.5-1~exp1
- 6.17.6-1
- 6.17.7-1
- 6.17.7-2
- 6.17.8-1
- 6.17.8-1~bpo13+1
- 6.17.9-1
- 6.18.1-1~exp1
- 6.18.10-1
- 6.18.12-1
- 6.18.12-1~bpo13+1
- 6.18.13-1
- 6.18.14-1
- 6.18.15-1
- 6.18.15-1~bpo13+1
- 6.18.2-1~exp1
- 6.18.3-1
- 6.18.5-1
- 6.18.5-1~bpo13+1
- 6.18.8-1
- 6.18.9-1
- 6.18.9-1~bpo13+1
- 6.18~rc4-1~exp1
- 6.18~rc4-1~exp2
- 6.18~rc5-1~exp1
- 6.18~rc6-1~exp1
- 6.18~rc7-1~exp1
- 6.19-1~exp1
- 6.19.10-1
- 6.19.10-1~bpo13+1
- 6.19.11-1
- 6.19.11-1~bpo13+1
- 6.19.12-1
- 6.19.13-1
- 6.19.13-1~bpo13+1
- 6.19.14-1
- 6.19.14-1~bpo13+1
- 6.19.2-1~exp1
- 6.19.3-1~exp1
- 6.19.4-1~exp1
- 6.19.5-1~exp1
- 6.19.6-1
- 6.19.6-2
- 6.19.6-2~bpo13+1
- 6.19.8-1
- 6.19.8-1~bpo13+1
- 6.19~rc4-1~exp1
- 6.19~rc5-1~exp1
- 6.19~rc6-1~exp1
- 6.19~rc7-1~exp1
- 6.19~rc8-1~exp1
- 6.3.1-1~exp1
- 6.3.11-1
- 6.3.2-1~exp1
- 6.3.4-1~exp1
- 6.3.5-1~exp1
- 6.3.7-1
- 6.3.7-1~bpo12+1
- 6.4.1-1~exp1
- 6.4.11-1
- 6.4.13-1
- 6.4.4-1
- 6.4.4-1~bpo12+1
- 6.4.4-2
- 6.4.4-3
- 6.4.4-3~bpo12+1
- 6.4~rc6-1~exp1
- 6.4~rc7-1~exp1
- 6.5.1-1~exp1
- 6.5.10-1
- 6.5.10-1~bpo12+1
- 6.5.13-1
- 6.5.3-1
- 6.5.3-1~bpo12+1
- 6.5.6-1
- 6.5.8-1
- 6.5~rc4-1~exp1
- 6.5~rc6-1~exp1
- 6.5~rc7-1~exp1
- 6.6.11-1
- 6.6.13-1
- 6.6.13-1~bpo12+1
- 6.6.15-1
- 6.6.15-2
- 6.6.3-1~exp1
- 6.6.4-1~exp1
- 6.6.7-1~exp1
- 6.6.8-1
- 6.6.9-1
- 6.7-1~exp1
- 6.7.1-1~exp1
- 6.7.12-1
- 6.7.12-1~bpo12+1
- 6.7.4-1~exp1
- 6.7.7-1
- 6.7.9-1
- 6.7.9-2
- 6.8.11-1
- 6.8.12-1
- 6.8.12-1~bpo12+1
- 6.8.9-1
- 6.9.10-1
- 6.9.10-1~bpo12+1
- 6.9.11-1
- 6.9.12-1
- 6.9.2-1~exp1
- 6.9.7-1
- 6.9.7-1~bpo12+1
- 6.9.8-1
- 6.9.9-1
- 7.0-1~exp1
- 7.0.1-1~exp1
- 7.0.10-1
No fix published
linux Debian:13
- Versions
- 6.12.100-1
- 6.12.101-1
- 6.12.105-1
- 6.12.107-1
- 6.12.111-1
- 6.12.38-1
- 6.12.41-1
- 6.12.43-1
- 6.12.43-1~bpo12+1
- 6.12.48-1
- 6.12.57-1
- 6.12.57-1~bpo12+1
- 6.12.63-1
- 6.12.63-1~bpo12+1
- 6.12.69-1
- 6.12.69-1~bpo12+1
- 6.12.73-1
- 6.12.73-1~bpo12+1
- 6.12.74-1
- 6.12.74-2
- 6.12.74-2~bpo12+1
- 6.12.85-1
- 6.12.85-1~bpo12+1
- 6.12.86-1
- 6.12.86-1~bpo12+1
- 6.12.88-1
- 6.12.88-1~bpo12+1
- 6.12.90-1
- 6.12.90-1~bpo12+1
- 6.12.90-2
- 6.12.90-2~bpo12+1
- 6.12.94-1
- 6.12.94-1~bpo12+1
- 6.12.95-1
- 6.12.95-1~bpo12+1
- 6.12.96-1
- Affected ranges
- ECOSYSTEM: < 6.12.113-1
Update to 6.12.113-1
linux Debian:14
- Versions
- 6.12.100-1
- 6.12.101-1
- 6.12.105-1
- 6.12.107-1
- 6.12.111-1
- 6.12.113-1
- 6.12.38-1
- 6.12.41-1
- 6.12.43-1
- 6.12.43-1~bpo12+1
- 6.12.48-1
- 6.12.57-1
- 6.12.57-1~bpo12+1
- 6.12.63-1
- 6.12.63-1~bpo12+1
- 6.12.69-1
- 6.12.69-1~bpo12+1
- 6.12.73-1
- 6.12.73-1~bpo12+1
- 6.12.74-1
- 6.12.74-2
- 6.12.74-2~bpo12+1
- 6.12.85-1
- 6.12.85-1~bpo12+1
- 6.12.86-1
- 6.12.86-1~bpo12+1
- 6.12.88-1
- 6.12.88-1~bpo12+1
- 6.12.90-1
- 6.12.90-1~bpo12+1
- 6.12.90-2
- 6.12.90-2~bpo12+1
- 6.12.94-1
- 6.12.94-1~bpo12+1
- 6.12.95-1
- 6.12.95-1~bpo12+1
- 6.12.96-1
- 6.13.10-1~exp1
- 6.13.11-1~exp1
- 6.13.2-1~exp1
- 6.13.3-1~exp1
- 6.13.4-1~exp1
- 6.13.5-1~exp1
- 6.13.6-1~exp1
- 6.13.7-1~exp1
- 6.13.8-1~exp1
- 6.13.9-1~exp1
- 6.13~rc6-1~exp1
- 6.13~rc7-1~exp1
- 6.14.3-1~exp1
- 6.14.5-1~exp1
- 6.14.6-1~exp1
- 6.15-1~exp1
- 6.15.1-1~exp1
- 6.15.2-1~exp1
- 6.15.3-1~exp1
- 6.15.4-1~exp1
- 6.15.5-1~exp1
- 6.15.6-1~exp1
- 6.15~rc7-1~exp1
- 6.16-1~exp1
- 6.16.1-1~exp1
- 6.16.10-1
- 6.16.11-1
- 6.16.12-1
- 6.16.12-1~bpo13+1
- 6.16.12-2
- 6.16.3-1
- 6.16.3-1~bpo13+1
- 6.16.5-1
- 6.16.6-1
- 6.16.7-1
- 6.16.8-1
- 6.16.9-1
- 6.16~rc7-1~exp1
- 6.17.10-1
- 6.17.11-1
- 6.17.12-1
- 6.17.13-1
- 6.17.13-1~bpo13+1
- 6.17.2-1~exp1
- 6.17.5-1~exp1
- 6.17.6-1
- 6.17.7-1
- 6.17.7-2
- 6.17.8-1
- 6.17.8-1~bpo13+1
- 6.17.9-1
- 6.18.1-1~exp1
- 6.18.10-1
- 6.18.12-1
- 6.18.12-1~bpo13+1
- 6.18.13-1
- 6.18.14-1
- 6.18.15-1
- 6.18.15-1~bpo13+1
- 6.18.2-1~exp1
- 6.18.3-1
- 6.18.5-1
- 6.18.5-1~bpo13+1
- 6.18.8-1
- 6.18.9-1
- 6.18.9-1~bpo13+1
- 6.18~rc4-1~exp1
- 6.18~rc4-1~exp2
- 6.18~rc5-1~exp1
- 6.18~rc6-1~exp1
- 6.18~rc7-1~exp1
- 6.19-1~exp1
- 6.19.10-1
- 6.19.10-1~bpo13+1
- 6.19.11-1
- 6.19.11-1~bpo13+1
- 6.19.12-1
- 6.19.13-1
- 6.19.13-1~bpo13+1
- 6.19.14-1
- 6.19.14-1~bpo13+1
- 6.19.2-1~exp1
- 6.19.3-1~exp1
- 6.19.4-1~exp1
- 6.19.5-1~exp1
- 6.19.6-1
- 6.19.6-2
- 6.19.6-2~bpo13+1
- 6.19.8-1
- 6.19.8-1~bpo13+1
- 6.19~rc4-1~exp1
- 6.19~rc5-1~exp1
- 6.19~rc6-1~exp1
- 6.19~rc7-1~exp1
- 6.19~rc8-1~exp1
- 7.0-1~exp1
- 7.0.1-1~exp1
- 7.0.10-1
- 7.0.10-1~bpo13+1
- 7.0.12-1
- 7.0.12-2
- 7.0.12-2~bpo13+1
- 7.0.13-1
- 7.0.13-1~bpo13+1
- 7.0.14-1
- 7.0.3-1
- 7.0.4-1
- 7.0.4-1~bpo13+1
- 7.0.7-1
- 7.0.7-1~bpo13+1
- 7.0.9-1
- 7.0.9-1~bpo13+1
- 7.1.1-1~exp1
- 7.1.10-1
- 7.1.12-1
- 7.1.13-1
- 7.1.13-1~bpo13+1
- 7.1.2-1~exp1
- 7.1.3-1
- 7.1.3-1+sunvdc
- 7.1.3-1~bpo13+1
- 7.1.4-1
- 7.1.5-1
- 7.1.6-1
- 7.1.7-1
- 7.1.7-1~bpo13+1
- 7.1.8-1
- 7.1.8-1~bpo13+1
- 7.1.8-2
- 7.1.9-1
- 7.1.9-1+sparc64
- 7.1~rc2-1~exp1
- 7.1~rc3-1~exp1
- 7.1~rc4-1~exp1
- 7.1~rc4-1~exp2
- 7.1~rc5-1~exp1
- 7.1~rc7-1~exp1
- 7.2.10-1
- 7.2.2-1~exp1
- 7.2.3-1~exp1
- 7.2.6-1
- 7.2.6-1~bpo13+1
- 7.2.7-1
- 7.2.8-1
- 7.2.9-1
- 7.2.9-1~bpo13+1
- 7.2~rc3-1~exp1
- 7.2~rc5-1~exp1
- 7.2~rc7-1~exp1
- Affected ranges
- ECOSYSTEM: < 7.2.11-1
Update to 7.2.11-1
Original sources
- https://git.kernel.org/stable/c/00bcc303000bac524d62eed054d77372b38ace0f
- https://git.kernel.org/stable/c/22182f91c6703af6e9832cffe6d22b381031cb5a
- https://git.kernel.org/stable/c/85e5512369d4fe6e5f2c43712d9f9e01d4ae8437
- https://git.kernel.org/stable/c/b627c6ba20be20334338229b4820baacb9d96826
- https://git.kernel.org/stable/c/c9728fcf2e7fb4a7a8d08ebd9524c3b02ae1a021
- https://nvd.nist.gov/vuln/detail/CVE-2026-98969