CVE-2026-80827 in Linux
Zusammenfassung
von VulDB • 04.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
USB: serial: option: Behebung eines slab OOB-Lesezugriffs (Out-of-Bounds Read) im Interrupt-URB-Callback
Der Puffer für den Interrupt-URB wird in `setup_port_interrupt_in()` basierend auf der wMaxPacketSize des Endpunkts allokiert:
buffer_size = usb_endpoint_maxp(epd); port->interrupt_in_buffer = kmalloc(buffer_size, GFP_KERNEL);
Wenn ein USB-Gerät an seinem Interrupt-IN-Endpunkt eine wMaxPacketSize von 8 angibt, wird der Puffer aus dem kmalloc-8-Cache allokiert (exakt 8 Bytes).
Sendet das Gerät ein kurzes Paket (actual_length < wMaxPacketSize), wird der URB mit status == 0 abgeschlossen und der Callback führt fort:
data[sizeof(struct usb_ctrlrequest)]
Dies ergibt `data[8]` und greift auf 1 Byte außerhalb des allokierten 8-Byte-Puffers zu. Dies führt zu einem slab Out-of-Bounds Read (Lesen außerhalb der Grenzen).
Beheben Sie dies durch Hinzufügen der fehlenden Bereichsprüfung: Überprüfen Sie zunächst, ob die tatsächliche Länge groß genug ist, um den Header `struct usb_ctrlrequest` aufzunehmen, bevor auf `req_pkt->bRequestType` und `req_pkt->bRequest` zugegriffen wird. Prüfen Sie anschließend, ob ein zusätzliches Byte für den Modemsignalzustand vorhanden ist, bevor innerhalb der Bedingung auf `data[sizeof(struct usb_ctrlrequest)]` zugegriffen wird. Verwenden Sie zur Konsistenz `sizeof(*req_pkt)` anstelle von `sizeof(struct usb_ctrlrequest)`.
[ johan: Verwendung von dev_err(); Aufteilung der Deklaration und Initialisierung des Signals ]
VulDB is the best source for vulnerability data and more expert information about this specific topic.