CVE-2026-47269
WysokieCVSS 7.4Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 23 - wyżej niż 23% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący posiadający fizyczny dostęp do zarejestrowanego urządzenia USB może zalogować się przez SSH na podatnym systemie, mimo włączonego deny_remote, co podważa założenia kontroli dostępu. Dotyczy to zwłaszcza systemów Ubuntu i Debian z sshd nasłuchującym na ::.
Rekomendacja
Zaktualizuj pam_usb do wersji 0.9.0 lub nowszej. Do czasu aktualizacji rozważ ograniczenie deny_remote lub wymuszenie połączeń wyłącznie przez IPv6/IPv4 w sposób, który nie tworzy adresów mapowanych.
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-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. Prior to 0.9.0, pam_usb's deny_remote feature checks utmpx ut_addr_v6 to detect whether an authentication request originates from a remote session. The outer guard was if (utent->ut_addr_v6[0] != 0), which only tests the first 32-bit word of the 128-bit address field. IPv4-mapped IPv6 addresses (::ffff:x.x.x.x) store the IPv4 address in ut_addr_v6[3] with ut_addr_v6[0] == 0. On systems where the SSH daemon listens on :: (IPv6 wildcard) with AddressFamily any -- common on Ubuntu and Debian -- incoming IPv4 connections are recorded in utmpx as IPv4-mapped IPv6 addresses. The outer check evaluates to false, the remote-detection block is skipped entirely, and the session is treated as local. deny_remote=true does not block the authentication. An attacker with physical access to a registered USB device can authenticate over SSH on an affected system as if they were sitting at a local terminal, bypassing the deny_remote restriction. This vulnerability is fixed in 0.9.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

