Podatności FreeBSD kernel
17 znanych podatności CVE w FreeBSD kernel, przetłumaczonych i ocenionych.
- CVE-2026-58088Wysokie
Kod zrzutu rdzenia ELF zliczał liczbę wpisów mapy VM, które można zrzucić, alokował bufor dla odpowiednich nagłówków programów, a następnie iterował po mapie drugi raz, aby je wypełnić. Proces współdzielący przestrzeń adresową przez rfork(2) może zmienić mapę między dwoma przebiegami, co powoduje zapis nagłówków programów poza końcem bufora. Nieuprzywilejowany użytkownik lokalny współdzielący przestrzeń adresową z procesem, który zrzuca rdzeń, może wywołać zapis poza zakresem na stercie jądra, potencjalnie prowadząc do eskalacji uprawnień.
- CVE-2026-58087Wysokie
Polecenia GETALL i SETALL w semctl(2) rejestrowały liczbę semaforów w docelowym zestawie, zwalniały blokadę chroniącą zestaw, alokowały bufor o rozmiarze odpowiadającym tej liczbie i ponownie przejmowały blokadę. Do weryfikacji, czy zestaw nie został zastąpiony w międzyczasie, używano sprawdzenia numeru sekwencji, ale numer sekwencji zawija się po 0x8000 cyklach tworzenia/niszczenia. Poprzez szybkie niszczenie i odtwarzanie zestawów semaforów pod tym samym indeksem, inny proces może spowodować zawinięcie numeru sekwencji, co pozwala zestawowi z inną liczbą semaforów przejść walidację. Kolejna kopia odczytuje lub zapisuje poza końcem przydzielonego bufora. Nieuprzywilejowany użytkownik lokalny może wywołać odczyty i zapisy poza zakresem na pamięci sterty jądra, potencjalnie prowadząc do eskalacji uprawnień.
- CVE-2026-58086Wysokie
W wyniku niezamierzonego efektu ubocznego niepowiązanej zmiany kodu, PRIV_KTRACE był zawsze odmawiany uwięzionemu użytkownikowi root. Śledzenie skonfigurowane przez uwięzionego roota nie było zatem oznaczane jako uprzywilejowane. Nieuprzywilejowany użytkownik w więzieniu, który ma uprawnienia do debugowania procesu docelowego, może zmodyfikować flagi ktrace(2) uwięzionego roota lub całkowicie wyłączyć śledzenie. Uwięziony root nie może zatem wiarygodnie śledzić nieuprzywilejowanych procesów.
- CVE-2026-58085Wysokie
Po wysłaniu operacji deszyfrowania do OCF i otrzymaniu wyniku, sterownik wg(4) nie sprawdzał, czy krok weryfikacji MAC zakończył się sukcesem. Sterownik w ten sposób po cichu akceptował pakiety z nieprawidłowym tagiem uwierzytelniającym Poly1305. Zdalny atakujący, który może wysyłać pakiety UDP do punktu końcowego WireGuard i który może odgadnąć granice okna powtórzeń odbiorcy, może wstrzyknąć sfałszowane lub zmodyfikowane pakiety danych transportowych do tunelu. Zdalny atakujący, który może przechwycić pakiety WireGuard przeznaczone dla hosta FreeBSD, może zmodyfikować szyfrogram i uwierzytelnione dane bez wykrycia przez odbiorcę.
- CVE-2026-58084Średnie
Aby pobrać poprzednią wartość timera, jądro wywołuje realtimer_gettime(), które uzyskuje bieżący czas dla zegara timera. Dla timera używającego CLOCK_TAI może to się nie powieść, gdy nie skonfigurowano offsetu TAI, ale zwracany błąd nie był sprawdzany, więc niezainicjalizowany bufor wyjściowy był kopiowany do przestrzeni użytkownika. Nieuprzywilejowany użytkownik lokalny może uzyskać niezainicjalizowaną pamięć stosu jądra, tworząc timer POSIX z CLOCK_TAI i wywołując timer_settime(2), potencjalnie ujawniając wrażliwe dane jądra.
- CVE-2026-58083Wysokie
Podczas kopiowania knotes w trakcie fork, knote z filtrem opartym na timerze mógł zostać wyzwolony i umieszczony na liście aktywnej kqueue przed zakończeniem kopiowania. Procedura kopiowania nie uwzględniała tego i mogła umieścić nowy knote po raz drugi, uszkadzając listę aktywną. Ponadto procedura kopiowania nie trzymała odpowiednich blokad podczas odczytu stanu knote, co pozwalało na dalsze wyścigi. Nieuprzywilejowany użytkownik lokalny może wywołać use-after-free w jądrze, potencjalnie prowadząc do eskalacji uprawnień.
- CVE-2026-49425Średnie
Procedura obsługi compat32 kevent() tłumaczy 64-bitową strukturę kevent na strukturę 32-bitową zadeklarowaną na stosie. Nie wyzerowała ona najpierw struktury na stosie. Nieuprzywilejowany użytkownik może zaobserwować niewielką ilość niezainicjalizowanych danych ze stosu jądra, które mogą zawierać wrażliwe informacje.
- CVE-2026-49423Niskie
Podczas budowania tablicy iovec dla odebranego rekordu TLS 1.2 CBC, funkcja ktls_ocf_tls_cbc_decrypt() zwiększała indeks iovec dla każdego mbuf w łańcuchu, w tym dla mbufów pominiętych, ponieważ zawierały tylko bajty nagłówka TLS. Pozostawiło to niezainicjalizowane wpisy w tablicy iovec, która została przydzielona bez zerowania. Zdalny peer TLS może spowodować, że jądro odczyta niezainicjalizowane wpisy iovec podczas obliczania HMAC, co prowadzi do paniki jądra. Peer musi kontrolować segmentację TCP tak, aby pierwszy mbuf rekordu CBC zawierał tylko 5-bajtowy nagłówek rekordu TLS.
- CVE-2026-49428Wysokie
Niektóre wywołania systemowe, takie jak open(2) z flagą O_TRUNC oraz fspacectl(2), mogły nieprawidłowo zwalniać pamięć w obiektach largepage. Operacje te nie są dozwolone na obiektach largepage, ale implementacja tego nie weryfikowała. Nieuprzywilejowany lokalny użytkownik może wykorzystać ten błąd, aby uzyskać dostęp do zwolnionej pamięci jądra, co może prowadzić do eskalacji uprawnień.
- CVE-2026-49427Wysokie
Strony należące do obiektów pamięci współdzielonej largepage nie były jawnie przypięte (wired). Gdy sendfile(2) przesyłał taki obiekt z flagą SF_NOCACHE, zwalniał bazowe strony po transmisji, mimo że istniejące mapowania nadal się do nich odnosiły. Nieuprzywilejowany lokalny użytkownik może wykorzystać ten błąd, aby uzyskać dostęp do zwolnionej pamięci jądra, co może prowadzić do eskalacji uprawnień.
- CVE-2026-49426Niskie
Podczas audytowania wywołania systemowego wykonanego przez ptrace(PT_SC_REMOTE), jądro przekazywało wartość zwracaną przez wewnętrzną funkcję konfigurującą do AUDIT_SYSCALL_EXIT() zamiast rzeczywistego wyniku wykonanego wywołania systemowego. W rezultacie zatwierdzone rekordy audytu dla wywołań systemowych, które zwróciły błąd, nie odzwierciedlają prawdziwego wyniku operacji - wskazują, że operacja się powiodła, podczas gdy w rzeczywistości nie powiodła się. Rekordy audytu dla wywołań systemowych wykonanych przez ptrace(PT_SC_REMOTE) mogą pokazywać nieprawidłowy status błędu. Atakujący z możliwością debugowania procesu może to wykorzystać do tworzenia mylących śladów audytu, potencjalnie podważając systemy wykrywania intruzów oparte na audycie (IDS).
- CVE-2026-49422Wysokie
Handler setsockopt(2) dla RACK zwalnia blokadę połączenia, aby skopiować dane opcji z przestrzeni użytkownika, a następnie ponownie ją przejmuje. Po ponownym przejęciu weryfikuje, czy stos TCP nie został przełączony, ale nie przeładowuje swojego wskaźnika do bloku sterowania połączeniem stosu. Jeśli przestrzeń użytkownika przełączy stosy dwukrotnie w tym oknie, kontrola zakończy się sukcesem, ale zapisany wskaźnik będzie odnosił się do zwolnionej pamięci. Ten błąd może być wykorzystany przez nieuprzywilejowanego lokalnego użytkownika do eskalacji uprawnień.
- CVE-2026-49421Wysokie
Funkcja jądra implementująca unlinkat(2) i funlinkat(2) walidowała flagę AT_RESOLVE_BENEATH, ale nie przekazywała jej do podstawowego wyszukiwania ścieżki. Flaga była po cichu ignorowana, więc ograniczenie rozwiązywania ścieżki nie było faktycznie stosowane. Proces używający AT_RESOLVE_BENEATH z unlinkat(2) lub funlinkat(2) w celu ograniczenia rozwiązywania ścieżki może faktycznie rozwiązywać ścieżki powyżej katalogu początkowego. Osoba wywołująca polegająca na tej fladze do ograniczania ścieżek może usunąć pliki poza zamierzonym drzewem katalogów.
- CVE-2026-49416Wysokie
Podatność w jądrze FreeBSD w handlerze ioctl CONS_HISTORY pozwala nieuprzywilejowanemu użytkownikowi lokalnemu na zapis poza przydzielonym buforem. Duża wartość rozmiaru historii powoduje przepełnienie liczb całkowitych w obliczeniach rozmiaru bufora, co prowadzi do zbyt małej alokacji sterty i późniejszego zapisu poza jej granicami.
- CVE-2026-49414Wysokie
W programie ładującym obrazy ELF stwierdzono błąd polegający na tym, że flagi preferencji ASLR dla procesów były czyszczone po obliczeniu adresu bazowego PIE, a nie przed. W rezultacie żądane przez użytkownika wyłączenie ASLR było nadal aktywne w momencie wyboru adresu bazowego.
- CVE-2026-45252Średnie
W jądrze FreeBSD (fusefs) podczas obsługi rozszerzonych atrybutów, moduł jądra fusefs wywołuje strlen() na buforze dostarczonym przez demona przestrzeni użytkownika bez uprzedniego sprawdzenia, czy cała lista jest zakończona znakiem NUL. Złośliwy demon może wysłać listę niezakończoną NUL, co powoduje odczyt poza zakresem jednego bufora i potencjalny zapis poza zakresem drugiego bufora.
- CVE-2026-45251Wysokie
W jądrze FreeBSD deskryptor pliku może zostać zamknięty, podczas gdy wątek jest zablokowany w wywołaniu poll(2) lub select(2) oczekującym na ten deskryptor. Ponieważ zablokowany wątek nie przechowuje referencji do obiektu, zamknięcie może spowodować zwolnienie obiektu, podczas gdy wątek pozostaje zablokowany. W przypadku niektórych typów deskryptorów jądro nie usuwa zablokowanych wątków z kolejki oczekujących przed zwolnieniem obiektu, co prowadzi do podatności use-after-free. Może to być wykorzystane przez nieuprzywilejowanego lokalnego użytkownika do uzyskania uprawnień superużytkownika.

