Local RedHat Enterprise Linux DoS â?? RHEL 7.1 Kernel crashes on invalid USB device descriptors (digi_acceleport driver)
The Kernel 3.10.0-229.20.1.el7.x86_64 crashes on presentation of a buggy USB device requiring the digi_acceleport driver. The bug was found using the USB-fuzzing framework vUSBf from Sergej Schumilo (github.com/schumilo) using the following device descriptor: bLength: 0x12, bDescriptorType: 0x1, bcdUSB: 0x200, bDeviceClass: 0x3, bDeviceSubClass: 0x0, bDeviceProtocol: 0x0, bMaxPacketSize: 0x40, idVendor: 0x5c5, idProduct: 0x2, bcdDevice: 0x100, iManufacturer: 0x1, iProduct: 0x2, iSerialNumbers: 0x3, bNumConfigurations: 0x1. The digi_acceleport driver does not use the num_ports (struct usb_serial) value for any kind of sanity checks during the initialization process (digi_port_init & digi_startup). Due to an incomplete sanity check, the driver could try to dereference a null-pointer if a malformed device-descriptor is presented (zero-value for bNumEndpoints or no described endpoint-descriptors). This results in a crash of the system.