CVE-2026-47272
WysokieCVSS 7.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 2 - wyżej niż 2% wszystkich znanych CVE
Streszczenie
W wersjach przed 0.9.0, funkcja pusb_pad_compare() w pam_usb nie wymuszała obecności i czytelności pliku pad na urządzeniu USB, co pozwalało użytkownikom na autoryzację bez fizycznego urządzenia. Użytkownik mógł usunąć swój plik ~/.pamusb/device.pad, co skutkowało pomyślną autoryzacją bez wymaganego urządzenia USB.
Ocena ryzyka
Podatność ta stwarza ryzyko nieautoryzowanego dostępu do systemu, ponieważ lokalny użytkownik może obejść wymóg posiadania fizycznego urządzenia USB do autoryzacji.
Rekomendacja
Zaleca się aktualizację do wersji 0.9.0 lub nowszej, aby usunąć tę podatność oraz wprowadzenie dodatkowych środków bezpieczeństwa w celu monitorowania i ochrony dostępu do systemu.
Inne podatności w pam_usb
Zobacz wszystkie- CVE-2026-48983Średnie
W wersjach przed 0.9.2 pam_usb zawiera lukę w postaci warunku wyścigu przy tworzeniu katalogów pad dla poszczególnych urządzeń i użytkowników. Atakujący lokalny może wykorzystać tę lukę, aby zastąpić docelową ścieżkę symlinkiem do katalogu, który kontroluje.
- CVE-2026-48982Średnie
W wersjach przed 0.9.2 pam_usb, podczas aktualizacji pliku jednorazowego klucza, tworzony jest plik tymczasowy bez flagi O_EXCL. To może prowadzić do sytuacji, w której dwa procesy równocześnie aktualizujące ten sam klucz mogą obie odnieść sukces, co skutkuje nadpisywaniem wartości klucza.
- CVE-2026-48981Średnie
W wersjach przed 0.9.2, pam_usb wywołuje xmlReadFile() z flagami=0 podczas ładowania pliku konfiguracyjnego, co pozwala libxml2 na przetwarzanie zewnętrznych odniesień do encji (XXE). Może to prowadzić do nawiązywania połączeń sieciowych lub odczytu lokalnych plików w czasie analizy XML z kontekstu procesu uwierzytelniającego.
- CVE-2026-48980Średnie
W wersjach przed 0.9.2 moduł pam_usb, odpowiedzialny za uwierzytelnianie sprzętowe w systemie Linux, jest podatny na wstrzykiwanie zmiennych środowiskowych. Zmienne XRDP_SESSION, DISPLAY i TMUX mogą być manipulowane przez lokalnego użytkownika, co wpływa na logikę sprawdzania sesji lokalnych i zdalnych.
- CVE-2026-48986Średnie
W wersjach pam_usb 0.9.1 i wcześniejszych występuje błąd, który może prowadzić do nieskończonej pętli DoS z powodu nieprawidłowej inicjalizacji zmiennej *ppid. W funkcji pusb_local_login() ta sama zmienna jest używana jako wejście i wyjście w pętli, co może prowadzić do zablokowania procesu uwierzytelniającego.
- CVE-2026-48985Średnie
W wersjach 0.9.1 i poniżej moduł pam_usb może powodować awarię z powodu dereferencji NULL podczas analizy wyjścia loginctl. Funkcja pusb_is_loginctl_local() wywołuje popen() i odczytuje wynik, co może prowadzić do nieokreślonego zachowania i awarii modułu PAM.
- CVE-2026-48984Średnie
W wersjach 0.9.1 i poniżej, funkcja xfree() w pam_usb zwalnia pamięć bez wcześniejszego wyzerowania zawartości bufora, co prowadzi do ujawnienia wrażliwych danych w zwolnionej pamięci. Może to umożliwić odzyskanie wartości padów lub innych materiałów uwierzytelniających z obszarów pamięci, które zostały zwolnione.
- CVE-2026-47270Średnie
W pam_usb przed wersją 0.9.0 funkcje używane przez mechanizm deny_remote wywoływały niezrewentrantną funkcję strtok(), która przechowuje stan w jednym globalnym wskaźniku. Przy równoczesnych uwierzytelnieniach (np. w GDM) wątki mogą nadpisywać nawzajem swój stan tokenizacji, powodując błędne parsowanie danych sesji tmux lub skanowania /proc. Dodatkowo pusb_tmux_get_client_tty() przekazywał wskaźnik z getenv(TMUX) bezpośrednio do strtok(), co trwale uszkadzało zmienną TMUX w procesie. Podatność naprawiono w wersji 0.9.0.
- CVE-2026-47269Wysokie
W pam_usb w wersjach przed 0.9.0 mechanizm deny_remote sprawdza pole ut_addr_v6 w utmpx, ale testuje tylko pierwsze 32 bity adresu. Adresy IPv4-mapped IPv6 (::ffff:x.x.x.x) mają zerowe pierwsze słowo, więc sesje SSH z IPv4 są błędnie uznawane za lokalne. Umożliwia to obejście ograniczenia deny_remote i uwierzytelnienie przez SSH zarejestrowanym urządzeniem USB.
- CVE-2026-44713Wysokie
W wersjach przed 0.8.7, pam_usb odczytuje zmienną środowiskową $TMUX użytkownika i interpoluje jej wartość bez odpowiedniego oczyszczania, co pozwala na wstrzyknięcie dowolnej składni powłoki. To stwarza ryzyko wykonania nieautoryzowanych poleceń jako root.
Oryginalny opis (angielski, źródło NVD)
pam_usb provides hardware authentication for Linux using ordinary removable media. Prior to 0.9.0, the pusb_pad_compare() function in src/pad.c only verified that the user-side pad (~/.pamusb/device.pad) could be read, but did not enforce that the system-side pad (the pad file on the USB device) was also present and readable. If the user-side pad was deleted or unreadable, the function returned a failure that was treated as non-fatal in certain code paths, allowing authentication to succeed without the USB device being verified. A local user can delete their own ~/.pamusb/device.pad to remove the USB device requirement and authenticate without the physical device. This vulnerability is fixed in 0.9.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

