netfilter: nft_byteorder: remove multi-register support
Summary
| CVE | CVE-2026-99285 |
| State | PUBLISHED |
| Assigner | Linux |
| Source Priority | CVE Program / NVD first with legacy fallback |
| Published | 2026-11-10 18:17:49 UTC |
| Updated | 2026-11-10 18:17:49 UTC |
| Description | In the Linux kernel, the following vulnerability has been resolved:
netfilter: nft_byteorder: remove multi-register support
64bit byteorder conversion is broken when several registers need to be
converted because the source register array advances in steps for 4 bytes
instead of 8:
for (i = ...
src64 = nft_reg_load64(&src[i]);
~~~~~ u32 *src
nft_reg_store64(&dst64[i],
Remove the multi-register support, it has other issues as well:
Pablo points out that commit
caf3ef7468f7 ("netfilter: nf_tables: prevent OOB access in nft_byteorder_eval")
alters semantics: before the loop operated on registers, i.e.
for ( ... )
dst32[i] = htons((u16)src32[i])
.. but after the patch it will operate on bytes, which makes this
useless to convert e.g. concatenations, which store each compound
in its own register.
Multi-convert of u32 has one theoretical application:
ct mark . meta mark . tcp dport @intervalset
Because ct mark and meta mark are host byte order, use with
intervals has to convert the byteorder for ct/meta mark value
to network byte order (bigendian).
nftables emits this:
[ meta load mark => reg 1 ]
[ byteorder reg 1 = hton(reg 1, 4, 4) ]
[ ct load mark => reg 9 ]
[ byteorder reg 9 = hton(reg 9, 4, 4) ]
...
I.e. two separate calls. Theoretically it could be changed to do:
[ meta load mark => reg 1 ]
[ ct load mark => reg 9 ]
[ byteorder reg 1 = htonl(reg 1, 4, 8) ]
...
But then all it would take to change the set to
meta mark . tcp dport . ct mark
... and we'd be back to two "byteorder" calls. IOW, support to
convert a range of registers is both dysfunctional and dubious.
Simplify this: remove the feature.
Pablo Neira Ayuso points out that nftables before 1.1.0 can generate
incorrect byteorder conversions, see 9fe58952c45a,
"evaluate: skip byteorder conversion for selector smaller than 2 bytes"
in nftables.git). Affected rulesets fail to load with this change and
old userspace due to 'len != size' check. |
Vendor Declared Affected Products
| Source | Vendor | Product | Version | Platforms |
|---|
| CNA |
Linux |
Linux |
affected c301f0981fdd3fd1ffac6836b423c4d7a8e0eb63 3c5fb3a6c8118d15e60295e76fb5b879021eef43 git |
Not specified |
| CNA |
Linux |
Linux |
affected c301f0981fdd3fd1ffac6836b423c4d7a8e0eb63 dc29c0478b8564feb9371e715b5a0016eb8903fd git |
Not specified |
| CNA |
Linux |
Linux |
affected c301f0981fdd3fd1ffac6836b423c4d7a8e0eb63 bb061d3de41707415269be75ebf700efb03ec212 git |
Not specified |
| CNA |
Linux |
Linux |
affected fca41e5b687e029f69e3a35a2fa31e2560e538dc git |
Not specified |
| CNA |
Linux |
Linux |
affected 25b42be4e067e107a2559266b54bf07fa5b094fb git |
Not specified |
| CNA |
Linux |
Linux |
affected 9a865a11d6890d4a789db1eaafebdc8bd092b12c git |
Not specified |
| CNA |
Linux |
Linux |
affected b8b514b2a6cdfac24911e4910461bcb9db15ca8d git |
Not specified |
| CNA |
Linux |
Linux |
affected 18a169810cff769a7a697b35058c756805f589e0 git |
Not specified |
| CNA |
Linux |
Linux |
affected 1a605657adc58b3c8e2c1c66aaa5fecd29072135 git |
Not specified |
| CNA |
Linux |
Linux |
affected 013deed31ab15ef287b0045e4e7bd8f250e75b94 git |
Not specified |
| CNA |
Linux |
Linux |
affected 4.19.307 4.20 semver |
Not specified |
| CNA |
Linux |
Linux |
affected 5.4.269 5.5 semver |
Not specified |
| CNA |
Linux |
Linux |
affected 5.10.210 5.11 semver |
Not specified |
| CNA |
Linux |
Linux |
affected 5.15.140 5.16 semver |
Not specified |
| CNA |
Linux |
Linux |
affected 6.1.64 6.2 semver |
Not specified |
| CNA |
Linux |
Linux |
affected 6.5.13 6.6 semver |
Not specified |
| CNA |
Linux |
Linux |
affected 6.6.3 6.7 semver |
Not specified |
| CNA |
Linux |
Linux |
affected 6.7 |
Not specified |
| CNA |
Linux |
Linux |
unaffected 6.7 semver |
Not specified |
| CNA |
Linux |
Linux |
unaffected 6.12.115 6.12.* semver |
Not specified |
| CNA |
Linux |
Linux |
unaffected 6.18.59 6.18.* semver |
Not specified |
| CNA |
Linux |
Linux |
unaffected 7.1 * original_commit_for_fix |
Not specified |
References
| Reference | Source | Link | Tags |
|---|
| git.kernel.org/stable/c/3c5fb3a6c8118d15e60295e76fb5b879021eef43 |
416baaa9-dc9f-4396-8d5f-8c081fb06d67 |
git.kernel.org |
|
| git.kernel.org/stable/c/dc29c0478b8564feb9371e715b5a0016eb8903fd |
416baaa9-dc9f-4396-8d5f-8c081fb06d67 |
git.kernel.org |
|
| git.kernel.org/stable/c/bb061d3de41707415269be75ebf700efb03ec212 |
416baaa9-dc9f-4396-8d5f-8c081fb06d67 |
git.kernel.org |
|
| CVE Program record |
CVE.ORG |
www.cve.org |
canonical |
| NVD vulnerability detail |
NVD |
nvd.nist.gov |
canonical, analysis |
No vendor comments have been submitted for this CVE.
There are currently no legacy QID mappings associated with this CVE.