CVE-2026-80780

Veröffentlicht am 4. September 2026

Im Linux-Kernel wurde die folgende Sicherheitslücke behoben: HID: pidff: OOB-Schreibzugriff, wenn hid->inputs leer ist hid_pidff_init_with_quirks() leitet sein input_dev aus list_entry(hid->inputs.next, struct hid_input, list) ab, ohne zuvor zu prüfen, ob hid->inputs nicht leer ist. Das Listenelement von struct hid_input befindet sich an Offset 0, daher liefert list_entry() bei einer leeren Liste &hid->inputs selbst, und der folgende Ladevorgang von hidinput->input liest ein unabhängiges Member von struct hid_device. dev ist dann ein typverfälschter Pointer, und die Force-Feedback-Initialisierung schreibt über ihn: Jedes set_bit(FF_*, dev->ffbit) speichert 8 Bytes bei dev + 192, hinter dem Ende des Objekts, auf das dev tatsächlich verweist, und input_ff_create() fügt weitere Schreibvorgänge eines Heap-Pointers und zweier Funktions-Pointer hinzu. Bis zu hid-universal-pidff war der einzige Aufrufer hid_pidff_init() aus usbhid, das unter HID_CLAIMED_INPUT ausgeführt wird und daher immer mindestens ein hid_input besitzt. universal_pidff_probe() startet das Gerät mit HID_CONNECT_DEFAULT & ~HID_CONNECT_FF und ruft anschließend hid_pidff_init_with_quirks() direkt auf, sobald der Deskriptor eine PID-Usage Page enthält, wodurch diese Prüfung umgangen wird. Ein Report-Deskriptor, dessen einzige Application Collection sich auf HID_UP_PID befindet, lässt hid->inputs leer, während hid_connect() über den hidraw-Claim weiterhin erfolgreich ist, sodass die Ausführung den nicht abgesicherten list_entry() erreicht. Der Schreibvorgang findet im USB-Probe-Pfad auf der Hotplug-Workqueue statt, sodass das Anschließen eines bösartigen Geräts ausreicht, um ihn auszulösen; weder Angreifer-Software noch ein angemeldeter Benutzer sind erforderlich. KASAN meldet einen 8-Byte-Out-of-Bounds-Schreibzugriff in hid_pidff_init_with_quirks(), der von universal_pidff_probe() aus erreicht wird. Vor dem Ableiten von dev auf eine leere Liste prüfen und -ENODEV zurückgeben, wie es die anderen HID-Force-Feedback-Treiber bereits tun. universal_pidff_probe() gibt den Fehler weiter und wickelt die Ausführung zurück ab. Entdeckt von XBOW, analysiert von Baul Lee <[email protected]>

Verwandte Artikel

This product uses the NVD API but is not endorsed or certified by the NVD.

Die technische Beschreibung ist unsere Übersetzung des englischen NVD-Originaltexts.

CVE-Datenbank