Katalog CVE

CVE-2026-14986

ŚrednieCVSS 6.8
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.18%

Percentyl 8 - wyżej niż 8% wszystkich znanych CVE

Streszczenie

Sterownik I2C ITE it51xxx w trybie pracy jako cel (slave) z buforowaniem kopiuje dane zapisu od hosta do bufora o stałym rozmiarze (domyślnie 256 bajtów) bez sprawdzenia granic przed zapisem. Indeks data->w_index narasta z każdym przerwaniem FIFO i jest zerowany tylko przy STOP lub timeoucie, więc pojedyncza transakcja zapisu dłuższa niż bufor powoduje zapis poza jego granicami. Luka jest wyzwalana przez złośliwego lub błędnie działającego mastera I2C na tej samej magistrali.

Ocena ryzyka

Podatność pozwala na zdalny (z poziomu magistrali I2C) zapis poza granicami bufora, co może doprowadzić do zawieszenia kontrolera lub — przy odpowiednim ukształtowaniu danych — do wykonania dowolnego kodu w kontekście jądra/firmware'u celu. Nie wymaga uprawnień na ofierze, wystarczy dostęp do magistrali I2C.

Rekomendacja

Zaktualizuj sterownik do wersji zawierającej sprawdzenie granic przed zapisem w funkcji target_i2c_fifo_read_to_buf() (poprawka przerywa i resetuje FIFO przed jakimkolwiek zapisem poza buforem). Do czasu wdrożenia poprawki rozważ wyłączenie trybu CONFIG_I2C_TARGET_BUFFER_MODE lub odizolowanie magistrali I2C od niezaufanych urządzeń.

Powiązane podatności

Oryginalny opis (angielski, źródło NVD)

The ITE it51xxx I2C driver, when operating as an I2C target (slave) in buffer mode (CONFIG_I2C_TARGET + CONFIG_I2C_TARGET_BUFFER_MODE), copies host-supplied write data into the fixed-size data->target_in_buffer inside its target FIFO interrupt handler target_i2c_isr_fifo() in drivers/i2c/i2c_ite_it51xxx.c. The copy loop stores to target_in_buffer[i + data->w_index] and only checks data->w_index against sizeof(data->target_in_buffer) after the write has already completed, so the bounds check cannot prevent the overflow. The running index data->w_index accumulates count bytes on every FIFO-fill interrupt of an ongoing transaction and is reset to zero only on a STOP or timeout condition. An I2C host that streams a single write transaction longer than the buffer (default CONFIG_I2C_TARGET_IT51XXX_MAX_BUF_SIZE = 256 bytes) drives data->w_index past the end of the buffer, and each subsequent host byte is written out of bounds into the adjacent data->target_out_buffer and following static device data. The trigger is a malicious or misbehaving I2C master on the same bus (for example a compromised application processor or a rogue device on an exposed I2C bus); no software privilege on the victim is required and the handler runs in the target's kernel/firmware context. Because both the written values and the overflow length are attacker-controlled, this is an out-of-bounds write that can crash the controller or be shaped toward code execution. The fix adds a pre-write bounds check in target_i2c_fifo_read_to_buf() that aborts and resets the FIFO before any out-of-bounds store.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS