Linux: net: wwan: mhi_wwan_mbim: guard against a cyclic NDP chain
What fixes it
- 3ed36ee1b29b028f6bc2ebe100152f61a33df05aLinuxCVE List
- 19b5e8dd884a530d04482e1a8e547f43cad17ed7LinuxCVE List
- 24ade82d6d993274e99c2c6998848751c35292e7LinuxCVE List
- 8dad70ff7e25cbcfbcb5101fdbf36d98003eb653LinuxCVE List
- 829fec45122da58d77a55a3b7ca514dafab98e77LinuxCVE List
- 5d063822ac5184939c1ed377a339a01d8ae814e8LinuxCVE 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:
net: wwan: mhi_wwan_mbim: guard against a cyclic NDP chain
The NDP traversal in mhi_mbim_rx() only stops when wNextNdpIndex is zero. Nothing requires the offsets to advance, so a modem that points an NDP at itself, or at an earlier NDP, keeps the loop spinning forever on one CPU.
Break out when the next NDP offset is not larger than the current one.
Verified in a QEMU guest with a fault injector feeding the driver's receive callback an NTB whose single NDP points at itself: the unpatched driver spins in mhi_mbim_rx() with one CPU pinned at 100% and the thread never returns. With this check the loop terminates within one iteration.
Changes in v2: move the non-increasing check to the wNextNdpIndex retrieval site, as suggested by Loic Poulain, instead of tracking the previous offset in a separate variable.
Text from CVE List
Affected versions 16
- Linuxaffected: aa730a9905b7b079ef2fffdab7f15dbb842f5c7c before 3ed36ee1b29b028f6bc2ebe100152f61a33df05aCVE List
- Linuxaffected: aa730a9905b7b079ef2fffdab7f15dbb842f5c7c before e4b2c7b50d4f4aa1ddfff731b136d65f65b2b526CVE List
- Linuxaffected: aa730a9905b7b079ef2fffdab7f15dbb842f5c7c before 19b5e8dd884a530d04482e1a8e547f43cad17ed7CVE List
- Linuxaffected: aa730a9905b7b079ef2fffdab7f15dbb842f5c7c before 24ade82d6d993274e99c2c6998848751c35292e7CVE List
- Linuxaffected: aa730a9905b7b079ef2fffdab7f15dbb842f5c7c before 8dad70ff7e25cbcfbcb5101fdbf36d98003eb653CVE List
- Linuxaffected: aa730a9905b7b079ef2fffdab7f15dbb842f5c7c before 829fec45122da58d77a55a3b7ca514dafab98e77CVE List
- Linuxaffected: aa730a9905b7b079ef2fffdab7f15dbb842f5c7c before 5d063822ac5184939c1ed377a339a01d8ae814e8CVE List
- Linuxaffected: 5.15CVE List
- Linuxunaffected: all versions before 5.15CVE List
- Linuxunaffected: 5.15.222 through 5.15.*CVE List
- Linuxunaffected: 6.1.189 through 6.1.*CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.54 through 6.18.*CVE List
- Linuxunaffected: 7.2.8 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 7
- git.kernel.org/stable/c/3ed36ee1b29b028f6bc2ebe100152f61a33df05aReferencevia CVE List
- git.kernel.org/stable/c/e4b2c7b50d4f4aa1ddfff731b136d65f65b2b526Referencevia CVE List
- git.kernel.org/stable/c/19b5e8dd884a530d04482e1a8e547f43cad17ed7Referencevia CVE List
- git.kernel.org/stable/c/24ade82d6d993274e99c2c6998848751c35292e7Referencevia CVE List
- git.kernel.org/stable/c/8dad70ff7e25cbcfbcb5101fdbf36d98003eb653Referencevia CVE List
- git.kernel.org/stable/c/829fec45122da58d77a55a3b7ca514dafab98e77Referencevia CVE List
- git.kernel.org/stable/c/5d063822ac5184939c1ed377a339a01d8ae814e8Referencevia CVE List