CVE-2026-90055 in Linux
Resumen
por VulDB • 2026-09-18
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
usb: atm: usbatm: corregir la inicialización incorrecta de ci_range
syzbot reportó un desplazamiento fuera de límites (shift-out-of-bounds) en __vcc_connect():
UBSAN: shift-out-of-bounds in net/atm/common.c:382:32 exponente del desplazamiento -1 es negativo CPU: 0 UID: 0 PID: 5987 Comm: syz.0.18 Not tainted syzkaller #0 PREEMPT(full) Nombre del hardware: Google Compute Engine/Google Compute Engine, BIOS Google 08/05/2026 Rastro de llamadas (Call Trace): <TASK> dump_stack_lvl+0xe8/0x150 lib/dump_stack.c:120 ubsan_epilogue+0xa/0x30 lib/ubsan.c:233 __ubsan_handle_shift_out_of_bounds+0x36d/0x400 lib/ubsan.c:494 __vcc_connect+0x14b4/0x19c0 net/atm/common.c:382 vcc_connect+0x328/0x8f0 net/atm/common.c:498 pvc_bind+0x272/0x380 net/atm/pvc.c:52 __sys_bind+0x2e3/0x410 net/socket.c:1976 __x64_sys_bind+0x7a/0x90 net/socket.c:1979 ...
Los campos ci_range de los dispositivos ATM (vpi_bits y vci_bits) representan el número de bits admitidos para la direccionamiento VPI y VCI en el dispositivo. net/atm/common.c utiliza directamente estos campos como contadores de desplazamiento de bits: vpi >> dev->ci_range.vpi_bits vci >> dev->ci_range.vci_bits 1 << vcc->dev->ci_range.vpi_bits 1 << vcc->dev->ci_range.vci_bits
usbatm_atm_init() establece ci_range.vpi_bits y ci_range.vci_bits en ATM_CI_MAX (-1), que está definido en <uapi/linux/atmdev.h> como un valor centinela para las solicitudes de usuario ATM_SETCIRANGE, no como un recuento válido de bits. Desplazar por -1 es un comportamiento indefinido y genera advertencias UBSAN.
Los encabezados de celdas UNI ATM permiten hasta 8 bits para VPI (0..255) y 16 bits para VCI (0..65535). Inicializar vpi_bits a 8 y vci_bits a 16, tal como lo hace solos-pci.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.