{"api_version":"1","generated_at":"2026-10-18T07:53:55+00:00","cve":"CVE-2026-98237","urls":{"html":"https://cve.report/CVE-2026-98237","api":"https://cve.report/api/cve/CVE-2026-98237.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-98237","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-98237"},"summary":{"title":"net: wwan: mhi_wwan_mbim: guard against a cyclic NDP chain","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: wwan: mhi_wwan_mbim: guard against a cyclic NDP chain\n\nThe NDP traversal in mhi_mbim_rx() only stops when wNextNdpIndex is\nzero.  Nothing requires the offsets to advance, so a modem that\npoints an NDP at itself, or at an earlier NDP, keeps the loop\nspinning forever on one CPU.\n\nBreak out when the next NDP offset is not larger than the current\none.\n\n\nVerified in a QEMU guest with a fault injector feeding the driver's\nreceive callback an NTB whose single NDP points at itself: the\nunpatched driver spins in mhi_mbim_rx() with one CPU pinned at 100%\nand the thread never returns.  With this check the loop terminates\nwithin one iteration.\n\nChanges in v2: move the non-increasing check to the wNextNdpIndex\nretrieval site, as suggested by Loic Poulain, instead of tracking\nthe previous offset in a separate variable.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-10-06 09:18:11","updated_at":"2026-10-06 09:18:11"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/829fec45122da58d77a55a3b7ca514dafab98e77","name":"https://git.kernel.org/stable/c/829fec45122da58d77a55a3b7ca514dafab98e77","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/3ed36ee1b29b028f6bc2ebe100152f61a33df05a","name":"https://git.kernel.org/stable/c/3ed36ee1b29b028f6bc2ebe100152f61a33df05a","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/8dad70ff7e25cbcfbcb5101fdbf36d98003eb653","name":"https://git.kernel.org/stable/c/8dad70ff7e25cbcfbcb5101fdbf36d98003eb653","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/24ade82d6d993274e99c2c6998848751c35292e7","name":"https://git.kernel.org/stable/c/24ade82d6d993274e99c2c6998848751c35292e7","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/19b5e8dd884a530d04482e1a8e547f43cad17ed7","name":"https://git.kernel.org/stable/c/19b5e8dd884a530d04482e1a8e547f43cad17ed7","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/e4b2c7b50d4f4aa1ddfff731b136d65f65b2b526","name":"https://git.kernel.org/stable/c/e4b2c7b50d4f4aa1ddfff731b136d65f65b2b526","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/5d063822ac5184939c1ed377a339a01d8ae814e8","name":"https://git.kernel.org/stable/c/5d063822ac5184939c1ed377a339a01d8ae814e8","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-98237","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98237","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected aa730a9905b7b079ef2fffdab7f15dbb842f5c7c 3ed36ee1b29b028f6bc2ebe100152f61a33df05a git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected aa730a9905b7b079ef2fffdab7f15dbb842f5c7c e4b2c7b50d4f4aa1ddfff731b136d65f65b2b526 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected aa730a9905b7b079ef2fffdab7f15dbb842f5c7c 19b5e8dd884a530d04482e1a8e547f43cad17ed7 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected aa730a9905b7b079ef2fffdab7f15dbb842f5c7c 24ade82d6d993274e99c2c6998848751c35292e7 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected aa730a9905b7b079ef2fffdab7f15dbb842f5c7c 8dad70ff7e25cbcfbcb5101fdbf36d98003eb653 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected aa730a9905b7b079ef2fffdab7f15dbb842f5c7c 829fec45122da58d77a55a3b7ca514dafab98e77 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected aa730a9905b7b079ef2fffdab7f15dbb842f5c7c 5d063822ac5184939c1ed377a339a01d8ae814e8 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 5.15","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.15 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.15.222 5.15.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.189 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.158 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.112 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.54 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.8 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3-rc4 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"98237","cve":"CVE-2026-98237","epss":"0.001800000","percentile":"0.069200000","score_date":"2026-10-06","updated_at":"2026-10-07 00:14:55"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["drivers/net/wwan/mhi_wwan_mbim.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"3ed36ee1b29b028f6bc2ebe100152f61a33df05a","status":"affected","version":"aa730a9905b7b079ef2fffdab7f15dbb842f5c7c","versionType":"git"},{"lessThan":"e4b2c7b50d4f4aa1ddfff731b136d65f65b2b526","status":"affected","version":"aa730a9905b7b079ef2fffdab7f15dbb842f5c7c","versionType":"git"},{"lessThan":"19b5e8dd884a530d04482e1a8e547f43cad17ed7","status":"affected","version":"aa730a9905b7b079ef2fffdab7f15dbb842f5c7c","versionType":"git"},{"lessThan":"24ade82d6d993274e99c2c6998848751c35292e7","status":"affected","version":"aa730a9905b7b079ef2fffdab7f15dbb842f5c7c","versionType":"git"},{"lessThan":"8dad70ff7e25cbcfbcb5101fdbf36d98003eb653","status":"affected","version":"aa730a9905b7b079ef2fffdab7f15dbb842f5c7c","versionType":"git"},{"lessThan":"829fec45122da58d77a55a3b7ca514dafab98e77","status":"affected","version":"aa730a9905b7b079ef2fffdab7f15dbb842f5c7c","versionType":"git"},{"lessThan":"5d063822ac5184939c1ed377a339a01d8ae814e8","status":"affected","version":"aa730a9905b7b079ef2fffdab7f15dbb842f5c7c","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/net/wwan/mhi_wwan_mbim.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"5.15"},{"lessThan":"5.15","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"5.15.*","status":"unaffected","version":"5.15.222","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.189","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.158","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.112","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.54","versionType":"semver"},{"lessThanOrEqual":"7.2.*","status":"unaffected","version":"7.2.8","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.3-rc4","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.15.222","versionStartIncluding":"5.15","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.189","versionStartIncluding":"5.15","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.158","versionStartIncluding":"5.15","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.112","versionStartIncluding":"5.15","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.54","versionStartIncluding":"5.15","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.8","versionStartIncluding":"5.15","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3-rc4","versionStartIncluding":"5.15","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: wwan: mhi_wwan_mbim: guard against a cyclic NDP chain\n\nThe NDP traversal in mhi_mbim_rx() only stops when wNextNdpIndex is\nzero.  Nothing requires the offsets to advance, so a modem that\npoints an NDP at itself, or at an earlier NDP, keeps the loop\nspinning forever on one CPU.\n\nBreak out when the next NDP offset is not larger than the current\none.\n\n\nVerified in a QEMU guest with a fault injector feeding the driver's\nreceive callback an NTB whose single NDP points at itself: the\nunpatched driver spins in mhi_mbim_rx() with one CPU pinned at 100%\nand the thread never returns.  With this check the loop terminates\nwithin one iteration.\n\nChanges in v2: move the non-increasing check to the wNextNdpIndex\nretrieval site, as suggested by Loic Poulain, instead of tracking\nthe previous offset in a separate variable."}],"providerMetadata":{"dateUpdated":"2026-10-06T08:45:09.277Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/3ed36ee1b29b028f6bc2ebe100152f61a33df05a"},{"url":"https://git.kernel.org/stable/c/e4b2c7b50d4f4aa1ddfff731b136d65f65b2b526"},{"url":"https://git.kernel.org/stable/c/19b5e8dd884a530d04482e1a8e547f43cad17ed7"},{"url":"https://git.kernel.org/stable/c/24ade82d6d993274e99c2c6998848751c35292e7"},{"url":"https://git.kernel.org/stable/c/8dad70ff7e25cbcfbcb5101fdbf36d98003eb653"},{"url":"https://git.kernel.org/stable/c/829fec45122da58d77a55a3b7ca514dafab98e77"},{"url":"https://git.kernel.org/stable/c/5d063822ac5184939c1ed377a339a01d8ae814e8"}],"title":"net: wwan: mhi_wwan_mbim: guard against a cyclic NDP chain","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-98237","datePublished":"2026-10-06T08:45:09.277Z","dateReserved":"2026-09-25T10:25:14.329Z","dateUpdated":"2026-10-06T08:45:09.277Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-10-06 09:18:11","lastModifiedDate":"2026-10-06 09:18:11","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"98237","Ordinal":"1","Title":"net: wwan: mhi_wwan_mbim: guard against a cyclic NDP chain","CVE":"CVE-2026-98237","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"98237","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: wwan: mhi_wwan_mbim: guard against a cyclic NDP chain\n\nThe NDP traversal in mhi_mbim_rx() only stops when wNextNdpIndex is\nzero.  Nothing requires the offsets to advance, so a modem that\npoints an NDP at itself, or at an earlier NDP, keeps the loop\nspinning forever on one CPU.\n\nBreak out when the next NDP offset is not larger than the current\none.\n\n\nVerified in a QEMU guest with a fault injector feeding the driver's\nreceive callback an NTB whose single NDP points at itself: the\nunpatched driver spins in mhi_mbim_rx() with one CPU pinned at 100%\nand the thread never returns.  With this check the loop terminates\nwithin one iteration.\n\nChanges in v2: move the non-increasing check to the wNextNdpIndex\nretrieval site, as suggested by Loic Poulain, instead of tracking\nthe previous offset in a separate variable.","Type":"Description","Title":"net: wwan: mhi_wwan_mbim: guard against a cyclic NDP chain"}]}}}