Skip to content
OpenAdvisories
Unscored CVE-2026-99285 EUVD-2026-121397GHSA-vmhm-3cg3-fm3j

In the Linux kernel, the following vulnerability has been resolved: netfilter: nft_byteorder: remove multi-register support 64bit byteorder…

Published Nov 10, 2026 · Assigned by Linux

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.

Affected products

VendorProductAffectedFixed
Linux Linux b8b514b2a6cdfac24911e4910461bcb9db15ca8d —
Linux Linux 25b42be4e067e107a2559266b54bf07fa5b094fb —
Linux Linux patch: 6.18.59 —
Linux Linux 5.10.210 <5.11 —
Linux Linux 6.7 —
Linux Linux 1a605657adc58b3c8e2c1c66aaa5fecd29072135 —
Linux Linux 5.15.140 <5.16 —
Linux Linux 9a865a11d6890d4a789db1eaafebdc8bd092b12c —
Linux Linux c301f0981fdd3fd1ffac6836b423c4d7a8e0eb63 <dc29c0478b8564feb9371e715b5a0016eb8903fd —
Linux Linux patch: 0 —
Linux Linux 6.1.64 <6.2 —
Linux Linux c301f0981fdd3fd1ffac6836b423c4d7a8e0eb63 <bb061d3de41707415269be75ebf700efb03ec212 —
Linux Linux 013deed31ab15ef287b0045e4e7bd8f250e75b94 —
Linux Linux 6.6.3 <6.7 —
Linux Linux 5.4.269 <5.5 —
Linux Linux patch: 6.12.115 —
Linux Linux fca41e5b687e029f69e3a35a2fa31e2560e538dc —
Linux Linux c301f0981fdd3fd1ffac6836b423c4d7a8e0eb63 <3c5fb3a6c8118d15e60295e76fb5b879021eef43 —
Linux Linux 4.19.307 <4.20 —
Linux Linux 18a169810cff769a7a697b35058c756805f589e0 —
Linux Linux 6.5.13 <6.6 —
Linux Linux patch: 7.1 —

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 linux 7.1.3-1 —
Debian 13 linux 6.12.115-1 —
Debian 12 linux No fix yet —

Advisories 1

References