CVE-2026-82961
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
Funkcje obsługi wywołań systemowych GPIO w sterownikach/gpio/gpio_handlers.c nie sprawdziły argumentu pin dostarczonego przez program wywołujący w trybie użytkownika. z_vrfy_gpio_pin_configure(), z_vrfy_gpio_pin_get_config() i z_vrfy_gpio_pin_interrupt_configure() zweryfikowały tylko obiekt urządzenia (K_SYSCALL_DRIVER_GPIO() / K_SYSCALL_OBJ()), a następnie przekazały dostarczony przez rozmówcę gpio_pin_t bezpośrednio do z_impl_gpio_pin_*() i dalej do sterownika. Jedynym sprawdzeniem pinów w include/zephyr/drivers/gpio.h był __ASSERT(gpio_port_pin_is_supported(cfg->port_pin_mask, pin), ...), który kompiluje się do niczego, chyba że włączono CONFIG_ASSERT, więc w wersji produkcyjnej w ogóle nie było sprawdzania.
Sterowniki GPIO używają pinów jako licznika przesunięć i indeksu tablicy, przy udokumentowanym założeniu, że jest to pin obsługiwany przez kontroler. Na przykład w STM32 gpio_stm32_pin_interrupt_configure() zamienia pin w linię EXTI, a stm32_gpio_intc_set_irq_callback() zapisuje dane->cb[line_num].cb i data->cb[line_num].data do tablicy wpisów NUM_EXTI_LINES (domyślnie 16) w sterowniki/interrupt_controller/intc_gpio_stm32.c, chronione jedynie przez skompilowaną funkcję __ASSERT_NO_MSG(); ta sama funkcja następnie odczytuje exti_irq_table[numer_linii] i wywołuje irq_enable() na wyniku. Inne kontrolery indeksują tabele konfiguracyjne o stałym rozmiarze dla poszczególnych pinów w ten sam sposób — sterowniki/gpio/gpio_ite_it8xxx2_v2.c odczytują wskaźnik bazowy MMIO z wuc_base[8] za pomocą numeru PIN wywołującego i wykonują przez niego operację odczytu-modyfikacji-zapisu.
Problem jest osiągalny tylko w kompilacjach z CONFIG_USERSPACE=y (plik jest kompilowany pod tym symbolem) przez wątek trybu użytkownika, któremu przyznano dostęp do obiektu urządzenia GPIO. Takie zezwolenie ma na celu umożliwienie kontroli pinów tego portu; zamiast tego brakująca walidacja umożliwia wątkowi wykonanie w trybie nadzorcy zapisu poza granicami wskaźnika funkcji i powiązanej z nią pustej * tablicy obok tablicy .bss jądra oraz odczyty poza granicami, które zasilają funkcję irq_enable() i dostęp do MMIO — ucieczkę z piaskownicy trybu użytkownika, która może prowadzić do uszkodzenia pamięci jądra, wykonania dowolnego kodu lub awarii.
Poprawka sprawdza poprawność pinu względem gpio_driver_config.port_pin_mask kontrolera za pomocą gpio_port_pin_is_supported() w każdym programie obsługi z_vrfy_ pobierającym piny i w przeciwnym razie zwraca -EINVAL, uzupełnione bezwarunkowym pinem >= Kontrola zakresu GPIO_MAX_PINS_PER_PORT dodana do współdzielonych linii wbudowanych z_impl_gpio_pin_*().
>_ Słabości (CWE)
>_ Referencje
- https://github.com/zephyrproject-rtos/zephyr/commit/020e83e06b35e98a4a3c2354f67e5eee3f163363
- https://github.com/zephyrproject-rtos/zephyr/commit/c9641fa5bfec44892e0cf2d84f78c7c60fca8ad6
- https://github.com/zephyrproject-rtos/zephyr/commit/d145faab7e3a8cea62a8fd7ed5f30ef73e762f59
- https://github.com/zephyrproject-rtos/zephyr/commit/d28a05d5de4420f27ba3de7b9e4442fa056d51de
- https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-4f2x-8qw8-jjgf
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