{"api_version":"1","generated_at":"2026-08-22T08:43:10+00:00","cve":"CVE-2026-72029","urls":{"html":"https://cve.report/CVE-2026-72029","api":"https://cve.report/api/cve/CVE-2026-72029.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-72029","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-72029"},"summary":{"title":"net: wwan: iosm: bound device offsets in the MUX downlink decoder","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: wwan: iosm: bound device offsets in the MUX downlink decoder\n\nmux_dl_adb_decode() walks a chain of aggregated datagram tables using\noffsets and lengths taken from the modem. first_table_index,\nnext_table_index, table_length, datagram_index and datagram_length are\nall device supplied le values. Only first_table_index was checked, and\nonly for being non zero. The decoder then formed adth = block +\nadth_index and read the table header and the datagram entries with no\nbound against the received skb. A modem that reports an index or a\nlength past the downlink buffer makes the decoder read out of bounds.\n\nThe buffer is IPC_MEM_MAX_DL_MUX_LITE_BUF_SIZE and skb->len is at most\nthat, so skb->len is the real limit, but none of these in band offsets\nwere checked against it.\n\nThe table chain is also followed with no forward progress check. The loop\ntakes the next table from adth->next_table_index and stops only when that\nreaches zero. A modem can stage two tables that point at each other, so\nthe loop never ends. It runs in softirq and clones the skb on every pass.\n\nValidate every device offset and length against skb->len before use.\nThe block header must fit. Each table header, on entry and after every\nnext_table_index, must lie inside the skb. The datagram table must fit.\nEach datagram index and length must stay inside the skb. The header\npadding must not exceed the datagram length so the receive length does\nnot wrap. Require each next_table_index to move forward so the chain\ncannot cycle.\n\nThis was reproduced under KASAN as a slab out of bounds read on a normal\ndownlink receive once the iosm net device is up.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-08-15 06:21:02","updated_at":"2026-08-17 06:18:00"},"problem_types":[],"metrics":[{"version":"3.1","source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","score":"8.8","severity":"HIGH","vector":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":8.8,"baseSeverity":"HIGH","attackVector":"ADJACENT_NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"8.8","severity":"HIGH","vector":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","data":{"baseScore":8.8,"baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","version":"3.1"}}],"references":[{"url":"https://git.kernel.org/stable/c/55cfea8e8d9117ad086d1e1a0ff87f306f8e3ad0","name":"https://git.kernel.org/stable/c/55cfea8e8d9117ad086d1e1a0ff87f306f8e3ad0","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/526b8ef54668780c8f69e0211c342763d5dcbad1","name":"https://git.kernel.org/stable/c/526b8ef54668780c8f69e0211c342763d5dcbad1","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/77f0023f22f6a2616ae128e9c93961b24ae52611","name":"https://git.kernel.org/stable/c/77f0023f22f6a2616ae128e9c93961b24ae52611","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/2b822df8e498aa6ca828e16afd8ffec27f7e4c88","name":"https://git.kernel.org/stable/c/2b822df8e498aa6ca828e16afd8ffec27f7e4c88","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/07f5eb6d268a37bd9e131079489655cd599182e0","name":"https://git.kernel.org/stable/c/07f5eb6d268a37bd9e131079489655cd599182e0","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/155851e501d6c649cbcfcca6472dc26269b04b6b","name":"https://git.kernel.org/stable/c/155851e501d6c649cbcfcca6472dc26269b04b6b","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-72029","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-72029","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 1f52d7b622854b8bd7a1be3de095ca2e1f77098e 155851e501d6c649cbcfcca6472dc26269b04b6b git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 1f52d7b622854b8bd7a1be3de095ca2e1f77098e 2b822df8e498aa6ca828e16afd8ffec27f7e4c88 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 1f52d7b622854b8bd7a1be3de095ca2e1f77098e 55cfea8e8d9117ad086d1e1a0ff87f306f8e3ad0 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 1f52d7b622854b8bd7a1be3de095ca2e1f77098e 07f5eb6d268a37bd9e131079489655cd599182e0 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 1f52d7b622854b8bd7a1be3de095ca2e1f77098e 77f0023f22f6a2616ae128e9c93961b24ae52611 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 1f52d7b622854b8bd7a1be3de095ca2e1f77098e 526b8ef54668780c8f69e0211c342763d5dcbad1 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 5.18","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.18 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.178 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.145 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.97 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.40 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1.5 7.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"72029","cve":"CVE-2026-72029","epss":"0.004030000","percentile":"0.334510000","score_date":"2026-08-17","updated_at":"2026-08-18 00:11:47"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["drivers/net/wwan/iosm/iosm_ipc_mux_codec.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"155851e501d6c649cbcfcca6472dc26269b04b6b","status":"affected","version":"1f52d7b622854b8bd7a1be3de095ca2e1f77098e","versionType":"git"},{"lessThan":"2b822df8e498aa6ca828e16afd8ffec27f7e4c88","status":"affected","version":"1f52d7b622854b8bd7a1be3de095ca2e1f77098e","versionType":"git"},{"lessThan":"55cfea8e8d9117ad086d1e1a0ff87f306f8e3ad0","status":"affected","version":"1f52d7b622854b8bd7a1be3de095ca2e1f77098e","versionType":"git"},{"lessThan":"07f5eb6d268a37bd9e131079489655cd599182e0","status":"affected","version":"1f52d7b622854b8bd7a1be3de095ca2e1f77098e","versionType":"git"},{"lessThan":"77f0023f22f6a2616ae128e9c93961b24ae52611","status":"affected","version":"1f52d7b622854b8bd7a1be3de095ca2e1f77098e","versionType":"git"},{"lessThan":"526b8ef54668780c8f69e0211c342763d5dcbad1","status":"affected","version":"1f52d7b622854b8bd7a1be3de095ca2e1f77098e","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/net/wwan/iosm/iosm_ipc_mux_codec.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"5.18"},{"lessThan":"5.18","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.178","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.145","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.97","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.40","versionType":"semver"},{"lessThanOrEqual":"7.1.*","status":"unaffected","version":"7.1.5","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.2","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.178","versionStartIncluding":"5.18","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.145","versionStartIncluding":"5.18","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.97","versionStartIncluding":"5.18","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.40","versionStartIncluding":"5.18","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.1.5","versionStartIncluding":"5.18","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2","versionStartIncluding":"5.18","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: wwan: iosm: bound device offsets in the MUX downlink decoder\n\nmux_dl_adb_decode() walks a chain of aggregated datagram tables using\noffsets and lengths taken from the modem. first_table_index,\nnext_table_index, table_length, datagram_index and datagram_length are\nall device supplied le values. Only first_table_index was checked, and\nonly for being non zero. The decoder then formed adth = block +\nadth_index and read the table header and the datagram entries with no\nbound against the received skb. A modem that reports an index or a\nlength past the downlink buffer makes the decoder read out of bounds.\n\nThe buffer is IPC_MEM_MAX_DL_MUX_LITE_BUF_SIZE and skb->len is at most\nthat, so skb->len is the real limit, but none of these in band offsets\nwere checked against it.\n\nThe table chain is also followed with no forward progress check. The loop\ntakes the next table from adth->next_table_index and stops only when that\nreaches zero. A modem can stage two tables that point at each other, so\nthe loop never ends. It runs in softirq and clones the skb on every pass.\n\nValidate every device offset and length against skb->len before use.\nThe block header must fit. Each table header, on entry and after every\nnext_table_index, must lie inside the skb. The datagram table must fit.\nEach datagram index and length must stay inside the skb. The header\npadding must not exceed the datagram length so the receive length does\nnot wrap. Require each next_table_index to move forward so the chain\ncannot cycle.\n\nThis was reproduced under KASAN as a slab out of bounds read on a normal\ndownlink receive once the iosm net device is up."}],"metrics":[{"cvssV3_1":{"baseScore":8.8,"baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","version":"3.1"},"scenarios":[{"lang":"en","value":"AV:A - The vulnerable MUX decoder processes PCIe IPC downlink buffers from an adjacent Intel M.2 WWAN modem; a remote cellular/baseband attacker who compromises modem firmware can deliver malicious frames without local host access, analogous to Bluetooth/WiFi adjacent-radio threat models.\nAC:L - The modem fully controls in-band offsets and lengths; the bug was reproduced as a KASAN slab OOB read on a normal downlink receive once the iosm netdev is up, requiring no races, special heap layout, or non-default kernel tuning beyond the IOSM driver and hardware.\nPR:N - Exploitation requires no privileges on the victim host; downlink IPC is accepted autonomously from the modem via MSI/tasklet processing, and unprivileged users or user namespaces cannot inject data into this decoder path.\nUI:N - No victim action is needed beyond normal WWAN operation; on M.2-equipped systems the iosm interface is often brought up automatically, after which malicious modem-supplied downlink buffers are decoded without further user interaction.\nS:U - Impact is confined to host kernel memory and networking within the same OS security authority; this is standard kernel driver memory corruption, not a VM escape or cross-authority sandbox bypass.\nC:H - Unvalidated device indices enable slab out-of-bounds reads of kernel heap memory; crafted offsets passed to ipc_mux_net_receive() can skb_pull/clone beyond the skb boundary and leak adjacent kernel data onto the wwan netdev via netif_rx.\nI:H - Attacker-controlled datagram indices and lengths feed skb_pull() and skb_trim() without skb bounds checks, and unchecked header padding can wrap receive lengths, enabling heap-adjacent corruption exploitable for arbitrary code execution.\nA:H - Out-of-bounds reads can trigger kernel oops or panic, and cyclic next_table_index chains cause an unbounded tasklet loop that skb_clones on every pass, exhausting memory and freezing or crashing the system."}]}],"providerMetadata":{"dateUpdated":"2026-08-17T05:39:34.980Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/155851e501d6c649cbcfcca6472dc26269b04b6b"},{"url":"https://git.kernel.org/stable/c/2b822df8e498aa6ca828e16afd8ffec27f7e4c88"},{"url":"https://git.kernel.org/stable/c/55cfea8e8d9117ad086d1e1a0ff87f306f8e3ad0"},{"url":"https://git.kernel.org/stable/c/07f5eb6d268a37bd9e131079489655cd599182e0"},{"url":"https://git.kernel.org/stable/c/77f0023f22f6a2616ae128e9c93961b24ae52611"},{"url":"https://git.kernel.org/stable/c/526b8ef54668780c8f69e0211c342763d5dcbad1"}],"title":"net: wwan: iosm: bound device offsets in the MUX downlink decoder","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-72029","datePublished":"2026-08-15T05:51:52.533Z","dateReserved":"2026-08-09T03:40:39.901Z","dateUpdated":"2026-08-17T05:39:34.980Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-15 06:21:02","lastModifiedDate":"2026-08-17 06:18:00","problem_types":[],"metrics":{"cvssMetricV31":[{"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":8.8,"baseSeverity":"HIGH","attackVector":"ADJACENT_NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"},"exploitabilityScore":2.8,"impactScore":5.9}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"72029","Ordinal":"1","Title":"net: wwan: iosm: bound device offsets in the MUX downlink decode","CVE":"CVE-2026-72029","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"72029","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: wwan: iosm: bound device offsets in the MUX downlink decoder\n\nmux_dl_adb_decode() walks a chain of aggregated datagram tables using\noffsets and lengths taken from the modem. first_table_index,\nnext_table_index, table_length, datagram_index and datagram_length are\nall device supplied le values. Only first_table_index was checked, and\nonly for being non zero. The decoder then formed adth = block +\nadth_index and read the table header and the datagram entries with no\nbound against the received skb. A modem that reports an index or a\nlength past the downlink buffer makes the decoder read out of bounds.\n\nThe buffer is IPC_MEM_MAX_DL_MUX_LITE_BUF_SIZE and skb->len is at most\nthat, so skb->len is the real limit, but none of these in band offsets\nwere checked against it.\n\nThe table chain is also followed with no forward progress check. The loop\ntakes the next table from adth->next_table_index and stops only when that\nreaches zero. A modem can stage two tables that point at each other, so\nthe loop never ends. It runs in softirq and clones the skb on every pass.\n\nValidate every device offset and length against skb->len before use.\nThe block header must fit. Each table header, on entry and after every\nnext_table_index, must lie inside the skb. The datagram table must fit.\nEach datagram index and length must stay inside the skb. The header\npadding must not exceed the datagram length so the receive length does\nnot wrap. Require each next_table_index to move forward so the chain\ncannot cycle.\n\nThis was reproduced under KASAN as a slab out of bounds read on a normal\ndownlink receive once the iosm net device is up.","Type":"Description","Title":"net: wwan: iosm: bound device offsets in the MUX downlink decode"}]}}}