UBUNTU-CVE-2026-93119: Medium severity ubuntu/linux-hwe-edge vulnerability
In the Linux kernel, the following vulnerability has been resolved: usb: ljca: bound banknum in ljcaenumerategpio() ljcaenumerategpio() reads desc->banknum from the device and loops validpin[i] = getunalignedle32(...) for i < banknum. validpin[] holds only LJCAMAXGPIONUM / 32 = 2 entries. Two checks run before the loop. The reply length must match structsize(desc, bankdesc, banknum). The product pinsperbank banknum must not exceed LJCAMAXGPIONUM. Neither one bounds banknum against the size of validpin[]. The reply is capped at LJCAMAXPAYLOADSIZE (60) bytes, so the structsize check limits banknum to 9. A device that reports banknum 9 with pinsperbank 7 still passes both checks. gpionum is 63 and the reply is 56 bytes. The loop then writes nine u32 into the two entry array and overruns validpin[] on the stack. A broken or malicious LJCA device can therefore overflow the stack. Reject a banknum that does not fit validpin[].
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1 - Compensating control
In ljca_enumerate_gpio(), reject a device-reported bank_num that does not fit valid_pin[] and reject any pins_per_bank * bank_num value exceeding LJCA_MAX_GPIO_NUM; also require the reply length to match struct_size(desc, bank_desc, bank_num) before iterating over valid_pin[].