CVE-2026-48982
ŚrednieCVSS 5.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 2 - wyżej niż 2% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Może to prowadzić do niezgodności wartości klucza, co z kolei może powodować błędy uwierzytelniania lub stworzyć możliwość ponownego użycia klucza w przypadku precyzyjnie wymierzonego ataku.
Rekomendacja
Zaleca się aktualizację do wersji 0.9.2 lub nowszej, aby wyeliminować tę podatność.
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-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.
- CVE-2026-44712Wysokie
pam_usb przed wersją 0.8.7 umożliwia zdalne wykonanie kodu (RCE) z poziomu roota poprzez spreparowany UUID w konfiguracji. Wykonanie polecenia pamusb-conf --reset-pads z takim UUID prowadzi do wykorzystania podatności.
Oryginalny opis (angielski, źródło NVD)
pam_usb provides hardware authentication for Linux using ordinary removable media. In versions prior to 0.9.2, when updating a one-time pad file, a temporary file is created using open() without the O_EXCL flag. Without O_EXCL, the create operation is not atomic: two concurrent processes racing to update the same pad may both succeed in opening the file, with the second write silently overwriting the first. The one-time pad is the core replay-prevention mechanism of pam_usb. A successful race could result in the stored pad value diverging from what either process expected, potentially causing authentication failures or, in a precisely timed attack, creating a window for pad reuse. This issue has been fixed in version 0.9.2.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

