CVE-2026-72029: net: wwan: iosm: bound device offsets in the MUX downlink decoder
Greg Kroah-Hartman <[email protected]>
| Newsgroups | org.kernel.vger.linux-cve-announce |
|---|---|
| Message-ID | <2026081511-CVE-2026-72029-63b3@gregkh> |
From: Greg Kroah-Hartman <[email protected]> Description =========== In the Linux kernel, the following vulnerability has been resolved: net: wwan: iosm: bound device offsets in the MUX downlink decoder mux_dl_adb_decode() walks a chain of aggregated datagram tables using offsets and lengths taken from the modem. first_table_index, next_table_index, table_length, datagram_index and datagram_length are all device supplied le values. Only first_table_index was checked, and only for being non zero. The decoder then formed adth = block + adth_index and read the table header and the datagram entries with no bound against the received skb. A modem that reports an index or a length past the downlink buffer makes the decoder read out of bounds. The buffer is IPC_MEM_MAX_DL_MUX_LITE_BUF_SIZE and skb->len is at most that, so skb->len is the real limit, but none of these in band offsets were checked against it. The table chain is also followed with no forward progress check. The loop takes the next table from adth->next_table_index and stops only when that reaches zero. A modem can stage two tables that point at each other, so the loop never ends. It runs in softirq and clones the skb on every pass. Validate every device offset and length against skb->len before use. The block header must fit. Each table header, on entry and after every next_table_index, must lie inside the skb. The datagram table must fit. Each datagram index and length must stay inside the skb. The header padding must not exceed the datagram length so the receive length does not wrap. Require each next_table_index to move forward so the chain cannot cycle. This was reproduced under KASAN as a slab out of bounds read on a normal downlink receive once the iosm net device is up. The Linux kernel CVE team has assigned CVE-2026-72029 to this issue. Affected and fixed versions =========================== Issue introduced in 5.18 with commit 1f52d7b622854b8bd7a1be3de095ca2e1f77098e and fixed in 6.1.178 with commit 155851e501d6c649cbcfcca6472dc26269b04b6b Issue introduced in 5.18 with commit 1f52d7b622854b8bd7a1be3de095ca2e1f77098e and fixed in 6.6.145 with commit 2b822df8e498aa6ca828e16afd8ffec27f7e4c88 Issue introduced in 5.18 with commit 1f52d7b622854b8bd7a1be3de095ca2e1f77098e and fixed in 6.12.97 with commit 55cfea8e8d9117ad086d1e1a0ff87f306f8e3ad0 Issue introduced in 5.18 with commit 1f52d7b622854b8bd7a1be3de095ca2e1f77098e and fixed in 6.18.40 with commit 07f5eb6d268a37bd9e131079489655cd599182e0 Issue introduced in 5.18 with commit 1f52d7b622854b8bd7a1be3de095ca2e1f77098e and fixed in 7.1.5 with commit 77f0023f22f6a2616ae128e9c93961b24ae52611 Issue introduced in 5.18 with commit 1f52d7b622854b8bd7a1be3de095ca2e1f77098e and fixed in 7.2-rc2 with commit 526b8ef54668780c8f69e0211c342763d5dcbad1 Please see https://www.kernel.org for a full list of currently supported kernel versions by the kernel community. Unaffected versions might change over time as fixes are backported to older supported kernel versions. The official CVE entry at https://cve.org/CVERecord/?id=CVE-2026-72029 will be updated if fixes are backported, please check that for the most up to date information about this issue. Affected files ============== The file(s) affected by this issue are: drivers/net/wwan/iosm/iosm_ipc_mux_codec.c Mitigation ========== The Linux kernel CVE team recommends that you update to the latest stable kernel version for this, and many other bugfixes. Individual changes are never tested alone, but rather are part of a larger kernel release. Cherry-picking individual commits is not recommended or supported by the Linux kernel community at all. If however, updating to the latest release is impossible, the individual changes to resolve this issue can be found at these commits: https://git.kernel.org/stable/c/155851e501d6c649cbcfcca6472dc26269b04b6b https://git.kernel.org/stable/c/2b822df8e498aa6ca828e16afd8ffec27f7e4c88 https://git.kernel.org/stable/c/55cfea8e8d9117ad086d1e1a0ff87f306f8e3ad0 https://git.kernel.org/stable/c/07f5eb6d268a37bd9e131079489655cd599182e0 https://git.kernel.org/stable/c/77f0023f22f6a2616ae128e9c93961b24ae52611 https://git.kernel.org/stable/c/526b8ef54668780c8f69e0211c342763d5dcbad1