Description
In the Linux kernel, the following vulnerability has been resolved: net: openvswitch: reject negative ifindex Recent changes in net-next (commit 759ab1edb56c ("net: store netdevs in an xarray")) refactored the handling of pre-assigned ifindexes and let syzbot surface a latent problem in ovs. ovs does not validate ifindex, making it possible to create netdev ports with negative ifindex values. It's easy to repro with YNL: $ ./cli.py --spec netlink/specs/ovs_datapath.yaml \ --do new \ --json '{"upcall-pid": 1, "name":"my-dp"}' $ ./cli.py --spec netlink/specs/ovs_vport.yaml \ --do new \ --json '{"upcall-pid": "00000001", "name": "some-port0", "dp-ifindex":3,"ifindex":4294901760,"type":2}' $ ip link show -65536: some-port0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether 7a:48:21:ad:0b:fb brd ff:ff:ff:ff:ff:ff ... Validate the inputs. Now the second command correctly returns: $ ./cli.py --spec netlink/specs/ovs_vport.yaml \ --do new \ --json '{"upcall-pid": "00000001", "name": "some-port0", "dp-ifindex":3,"ifindex":4294901760,"type":2}' lib.ynl.NlError: Netlink error: Numerical result out of range nl_len = 108 (92) nl_flags = 0x300 nl_type = 2 error: -34 extack: {'msg': 'integer out of range', 'unknown': [[type:4 len:36] b'\x0c\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x03\x00\xff\xff\xff\x7f\x00\x00\x00\x00\x08\x00\x01\x00\x08\x00\x00\x00'], 'bad-attr': '.ifindex'} Accept 0 since it used to be silently ignored.
Product status
54c4ef34c4b6f9720fded620e2893894f9f2c554 (git) before c965a58376146dcfdda186819462e8eb3aadef3a
54c4ef34c4b6f9720fded620e2893894f9f2c554 (git) before 881faff9e548a7ddfb11595be7c1c649217d27db
54c4ef34c4b6f9720fded620e2893894f9f2c554 (git) before a552bfa16bab4ce901ee721346a28c4e483f4066
6.1
Any version before 6.1
6.1.47 (semver)
6.4.12 (semver)
6.5 (original_commit_for_fix)
References
git.kernel.org/...c/c965a58376146dcfdda186819462e8eb3aadef3a
git.kernel.org/...c/881faff9e548a7ddfb11595be7c1c649217d27db
git.kernel.org/...c/a552bfa16bab4ce901ee721346a28c4e483f4066