Średni Odebrany

CVE-2026-19571

opublikowano:
modyfikacja:
Ocena CVSS
6.7
Średni · v3.1
wektor: CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:H

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

Backend poleceń hosta ITE IT8xxx2 SHI (subsys/mgmt/ec_host_cmd/backends/ec_host_cmd_backend_shi_ite.c) skopiował 8-bajtowy nagłówek żądania hosta z SPI Rx FIFO bezpośrednio do współdzielonego bufora odbiorczego data->in_msg i dopiero potem sprawdził wersję protokołu i uzyskaną długość pakietu. Procedura obsługi przerwań zaakceptowała także potwierdzenie wyboru chipa i przerwanie o długości Rx-valid-length (RVLI) w dowolnym stanie sterownika innym niż SHI_STATE_DISABLED, więc nowy nagłówek mógł zostać przeanalizowany, podczas gdy wątek poleceń hosta nadal przetwarzał poprzednie żądanie z tego samego bufora.

Procesor hosta jest kontrolerem SPI i steruje zarówno wyborem chipa, jak i zegarem. Po wysłaniu dobrze sformułowanego żądania może natychmiast cofnąć potwierdzenie wyboru chipa — co przywraca sterownik do stanu gotowości i ponownie włącza FIFO — i rozpocząć drugą transakcję niosącą nagłówek z data_len = 0xFFFF. Te osiem bajtów jest zapisywanych w in_msg, zanim zbyt duża długość zostanie odrzucona, więc lądują w buforze, którego zawartość zweryfikowana() w subsys/mgmt/ec_host_cmd/ec_host_cmd_handler.c została już sprawdzona. Jeśli wyląduje w oknie, zanim wątek poleceń hosta wykona args.input_buf_size = rx_header->data_len, struktura przekazuje zarejestrowanej procedurze obsługi poleceń długość wejściową 65535 bajtów w buforze 256 bajtów.

Rezultatem jest odczyt wykraczający poza zakres do około 64 KiB poza bufor żądań: procedury obsługi poleceń, które kopiują lub wyświetlają echo bajtów input_buf_size, ujawniają sąsiednią pamięć wbudowanego kontrolera z powrotem do hosta lub przepełniają bufor odpowiedzi, a odczyt poza końcem SRAM powoduje błąd kontrolera. Ta sama rasa umożliwia także zamianę cmd_id i cmd_ver po weryfikacji sumy kontrolnej i po sprawdzeniu procedury obsługi. Eksploatacja wymaga możliwości sterowania międzyprocesorową magistralą SHI (zaatakowany system operacyjny hosta lub fizyczny dostęp do linii SPI) i wygrania wyścigu czasowego, którego kontroler SPI może ponawiać w nieskończoność.

Poprawka analizuje nagłówek do lokalnej struktury ec_host_cmd_request_header i kopiuje go do in_msg dopiero po ograniczeniu długości przez sizeof(data->in_msg) i ignoruje przerwania typu chip-select i RVLI poza SHI_STATE_READY_TO_RECV/SHI_STATE_RECEIVING. Pozostaje resztkowy, ograniczony wyścig: przerwanie na koniec transakcji nadal resetuje stan do gotowości, podczas gdy wątek poleceń hosta jest właścicielem bufora, więc prawidłowe drugie żądanie może nadal nadpisać zawartość żądania w locie, w przeciwieństwie do zaplecza NPCX, które parkuje w SHI_STATE_CNL_RESP_NOT_RDY, gdy bufor jest używany.

>_ Słabości (CWE)

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

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

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org