Średni Odebrany

CVE-2026-19947

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

>_ Opis

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

Pseudosterownik multipleksera urządzenia w sterownikach/misc/devmux/devmux.c udostępnia dwa wywołania systemowe, devmux_select_get() i devmux_select_set(). Gdy włączona jest funkcja CONFIG_USERSPACE, ich weryfikatory trybu użytkownika z_vrfy_devmux_select_get() i z_vrfy_devmux_select_set() są przekazywane bezpośrednio do implementacji jądra bez wykonywania jakiejkolwiek weryfikacji obiektu jądra — bez k_object_access_check() i bez sprawdzania obiektu sterownika. Co więcej, DEVICE_DT_INST_DEFINE() zarejestrowała instancje devmux ze wskaźnikiem API sterownika NULL, co powoduje, że skrypty/build/gen_kobject_list.py całkowicie je pomijają, więc urządzenie devmux nie miało struktury k_object i w ogóle nie można było udzielić lub wstrzymać do niego żadnych uprawnień.

Każdy wątek działający w trybie użytkownika może wykryć defekt: wskaźniki urządzenia, takie jak DEVICE_DT_GET(DT_NODELABEL(devmux0)) to stałe czasu kompilacji dostępne dla kodu aplikacji, a wywołanie systemowe zaakceptowało je z wątku, któremu nigdy nie przyznano dostępu do urządzenia. Implementacje jądra sprawdzają wskaźnik względem statycznej tabeli instancji devmux i sprawdzają indeks selekcji, więc nie jest to problem związany z bezpieczeństwem pamięci; niepowodzenie wynika wyłącznie z autoryzacji. Ekspozycja wymaga CONFIG_USERSPACE=y wraz z eksperymentalnym CONFIG_DEVMUX=y (który zależy od CONFIG_DEVICE_MUTABLE) i węzłem drzewa urządzeń zephyr,devmux.

Nieuprzywilejowany wątek trybu użytkownika może czytać i zmieniać urządzenie docelowe, do którego multiplekser przekazuje dalej, omijając model uprawnień obiektowych przestrzeni użytkownika. Ponieważ devmux przekazuje dane, konfigurację i interfejs API wybranego urządzenia — jego udokumentowane zastosowanie to zephyr, konsola i zephyr, przełączanie powłoki-uart — osoba atakująca może zablokować dane wyjściowe konsoli, dziennika i powłoki, przekierować te dane wyjściowe do urządzenia znajdującego się dalej, które jest w stanie obserwować, lub przenieść wybór do innego wątku, który legalnie korzysta z multipleksera. Wpływ jest ograniczony do zestawu urządzeń podłączonych do drzewa urządzeń; nie jest osiągalny żaden dostęp poza granicami ani dowolne wyłuskiwanie wskaźników.

Poprawka deklaruje __subsystem struct devmux_driver_api i dołącza instancję DEVICE_API(devmux, devmux_api) do każdego urządzenia devmux, tak aby stało się śledzonym obiektem jądra K_OBJ_DRIVER_DEVMUX i dodaje K_OOPS(devmux_inst_get(dev) == SIZE_MAX) plus K_OOPS(k_object_access_check(dev) != 0) do obu weryfikatorów.

>_ 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