CVE-2026-78119
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
Sterownik Nuvoton NPCX eSPI analizuje żądania Target-Attached-Flash (TAF) w espi_taf_parse() (drivers/espi/espi_npcx.c), pobierając 12-bitowe pole długości bezpośrednio z nagłówka żądania w FIFO FLASHRXBUF. W przypadku żądań zapisu i RPMC OP1 kopiuje słowa DIV_ROUND_UP(len, 4) do struct espi_taf_pckt.src, stałego 16-słowa (64-bajtowego) elementu struktury statycznej, bez porównywania długości z tym buforem lub z wynegocjowanym rozmiarem ładunku odbieranego eSPI (rx-plsize, 64 bajty na wszystkich układach NPCX/NPCK w drzewie). Zarówno licznik pętli, jak i liczba słów wynosiły uint8_t, więc kopia trwała do 255 iteracji.
Kontroler eSPI, który emituje żądanie flash, którego nagłówek zawiera ładunek większy niż wynegocjowane maksimum, przesyła w związku z tym do 239 32-bitowych zapisów poza koniec struktury — około 956 bajtów wartości poza zakresem zapisanych w pliku .bss — z modułu obsługi przerwań odbiorczych eSPI flash, podczas gdy odczyty źródłowe przechodzą poza koniec 18-wyrazowej tablicy rejestrów FLASHRXBUF do sąsiednich rejestrów eSPI. Ta sama niezweryfikowana długość została następnie przekazana do flash_write() w espi_taf_npcx_flash_write() z 64-bajtowym buforem src jako źródłem, wczytując do 4 KB sąsiedniej pamięci SRAM kontrolera do pamięci flash SPI pod adresem wybranym przez hosta, skąd host może go odczytać. Powiązany bufor stosu o stałym rozmiarze w taf_npcx_completion_handler() został przepełniony czterema bajtami na ścieżce uzupełniania o maksymalnym rozmiarze w układach SoC, których tx-plsize wynosi 64.
Do defektu można dotrzeć tylko po stronie hosta eSPI i tylko poprzez żądanie naruszające wynegocjowany rozmiar ładunku, dlatego wymaga oprogramowania sprzętowego hosta lub kontroli na poziomie magistrali, a nie zwykłego oprogramowania hosta; zgodny zapis o maksymalnej długości dokładnie pasuje do bufora i jest obsługiwany poprawnie. Ponieważ funkcja TAF istnieje specjalnie po to, aby wbudowany kontroler rozstrzygał o dostępie hosta do współdzielonej pamięci flash (espi_taf_check_read_protect() / espi_taf_check_write_protect()), uszkodzenie pamięci kontrolera z pola dostarczonego przez host przekracza granicę zaufania zapewnianą przez tę funkcję; Konsekwencje obejmują awarię lub zawieszenie kontrolera, a także uszkodzenie stanu sterownika, który zamyka obszary ochrony pamięci flash.
Poprawka rozszerza liczniki, odrzuca każde żądanie, którego liczba słów przekracza ARRAY_SIZE(FLASHRXBUF) - NPCX_ESPI_FLASH_HEADER_ADDRESS_LEN i NPCX_TAF_RX_PAYLOAD_WORDS (pochodzące z drzewa urządzeń rx-plsize), oznacza takie pakiety nową nieważną flagą, więc espi_taf_work() zamiast tego odpowiada na nie niepomyślnym zakończeniem ich przetwarzania, ogranicza ładunek transmisji do FLASHTXBUF i dodaje domyślny przypadek dla nieobsługiwanych typów cykli. Dotyczy to tylko konfiguracji z włączoną funkcją CONFIG_ESPI_TAF w obiekcie docelowym NPCX/NPCK; żadna tablica w drzewie domyślnie tego nie włącza.
>_ 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