Linux: eth: nfp: bound the ntuple rule dump by the caller's buffer size
What fixes it
- 82812583b9c69c241da6da4186f14e9df2516488LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
eth: nfp: bound the ntuple rule dump by the caller's buffer size
nfp_net_get_fs_loc() dumps every entry of nn->fs.list into rule_locs[] without consulting cmd->rule_cnt, which is how many entries the caller had room for. ETHTOOL_GRXCLSRLALL requires no CAP_NET_ADMIN and the ioctl sizes the buffer from the rule_cnt userspace passes in, so once an admin has installed flow steering rules any user can ask for fewer slots than there are rules and run off the end of the allocation. A rule_cnt of 0 leaves the buffer pointer NULL and the walk dereferences it.
Bail out with -EMSGSIZE when the buffer fills up, the way the other ntuple capable drivers do, and report how many locations were filled so a shrinking rule list does not leave the caller reading stale slots.
Text from CVE List
Affected versions 10
- Linuxaffected: 9eb03bb1c035ff6e2c3a34046419446588253dda before 82812583b9c69c241da6da4186f14e9df2516488CVE List
- Linuxaffected: 9eb03bb1c035ff6e2c3a34046419446588253dda before a7e023c63e855761c1426cee8d17c2bca32aa339CVE List
- Linuxaffected: 9eb03bb1c035ff6e2c3a34046419446588253dda before ecebfdaab72a504c10f4907bd00fc3b705ec3b12CVE List
- Linuxaffected: 9eb03bb1c035ff6e2c3a34046419446588253dda before f1986bf87b0709c95126fe196cf39e5b8c8453a1CVE List
- Linuxaffected: 6.8CVE List
- Linuxunaffected: all versions before 6.8CVE List
- Linuxunaffected: 6.12.111 through 6.12.*CVE List
- Linuxunaffected: 6.18.53 through 6.18.*CVE List
- Linuxunaffected: 7.2.7 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 4
- git.kernel.org/stable/c/82812583b9c69c241da6da4186f14e9df2516488Referencevia CVE List
- git.kernel.org/stable/c/a7e023c63e855761c1426cee8d17c2bca32aa339Referencevia CVE List
- git.kernel.org/stable/c/ecebfdaab72a504c10f4907bd00fc3b705ec3b12Referencevia CVE List
- git.kernel.org/stable/c/f1986bf87b0709c95126fe196cf39e5b8c8453a1Referencevia CVE List