W FreeBSD znaleziono lukę (CVE-2026-7270), która umożliwia nieuprzywilejowanemu użytkownikowi wykonanie kodu z uprawnieniami jądra i uzyskanie dostępu do systemu jako root. Luka dotyczy wszystkich wydań FreeBSD, które zostały wydane od 2013 roku. W publicznym dostępie znajduje się exploit, którego działanie zostało sprawdzone na systemach od FreeBSD 11.0 do 14.4. Luka została usunięta w aktualizacjach FreeBSD 15.0-RELEASE-p7, 14.4-RELEASE-p3, 14.3-RELEASE-p12 i 13.5-RELEASE-p13. Dla starszych branchy można użyć patcha.
Problem spowodowany jest przepełnieniem bufora w wywołaniu systemowym execve, które występuje podczas przetwarzania prefiksu wskazanego w pierwszej linii skryptów do określenia ścieżki do interpretera (np. "#!\/bin\/sh"). Przepełnienie występuje podczas wywołania funkcji memmove z powodu błędnego sformułowania wyrażenia matematycznego do obliczenia rozmiaru kopiowanych do bufora argumentów. Zamiast odjąć od "args->endp" wartości "args->begin_argv" i "consume", od "args->endp" odjęto tylko wartość "args->begin_argv", a zmienna consume została dodana do wyniku, a nie odjęta, co oznacza, że skopiowano więcej danych o dwa wartości "consume". memmove(args->begin_argv + extend, args->begin_argv + consume, — args->endp — args->begin_argv + consume); + args->endp — (args->begin_argv + consume));
Przepełnienie umożliwia nadpisanie elementów struktury "exec_map", znajdujących się w sąsiednim obszarze pamięci, z innego procesu. W exploicie przepełnienie jest wykorzystywane do nadpisania zawartości "exec_map" okresowo uruchamianych w systemie procesów z uprawnieniami. Jako taki proces wybrano sshd, który przy każdym nawiązaniu połączenia sieciowego fork i execve odpalają proces "/usr/libexec/sshd-session" z uprawnieniami root.
Exploit podstawia dla tego procesu zmienną środowiskową "LD_PRELOAD=\/tmp\/evil.so", co prowadzi do załadowania swojej biblioteki w kontekście sshd-session. Podstawiana biblioteka tworzy w systemie plik wykonywalny "/tmp/rootsh" z flagą suid root. Prawdopodobieństwo udanego przepełnienia ocenia się na 0.6%, ale dzięki cyklicznemu powtarzaniu prób, udane wykorzystanie osiągane jest w ciągu około 6 sekund na systemie z 4-rdzeniowym CPU.

Ponadto, w FreeBSD naprawiono jeszcze kilka innych luk:
- CVE-2026-35547, CVE-2026-39457 — przepełnienie bufora w bibliotece libnv, używanej w jądrze i w aplikacjach systemowych do przetwarzania list w formacie klucz/wartość oraz do organizacji przesyłania danych przy współpracy procesów. Pierwszy problem jest spowodowany błędnym obliczaniem rozmiaru wiadomości podczas przetwarzania specjalnie sformatowanych nagłówków wiadomości IPC. Drugi problem prowadzi do przepełnienia stosu podczas wymiany danych przez gniazdo z powodu braku sprawdzenia zgodności rozmiaru uchwytu gniazda z rozmiarem bufora używanego w funkcji select(). Potencjalne luki w zabezpieczeniach mogą być wykorzystywane do podwyższania swoich uprawnień w systemie.
- CVE-2026-42512 — zdalnie wykorzystywana luka przepełnienia bufora w dhclient, powstająca z powodu nieprawidłowego obliczania rozmiaru tablicy wskaźników, używanej do przesyłania zmiennych środowiskowych do dhclient-script. Nie wyklucza się możliwości stworzenia exploitów do zdalnego wykonania kodu poprzez wysłanie specjalnie sformatowanej paczki DHCP.
- CVE-2026-7164 — przepełnienie stosu w filtrze pakietów pf, występujące podczas przetwarzania specjalnie sformatowanych pakietów SCTP. Problem jest spowodowany nieograniczonym rekurencyjnym rozparciem parametrów SCTP.
- CVE-2026-42511 — możliwość podstawienia dowolnych dyrektyw w dhclient.conf z powodu braku odpowiedniego uciekania podwójnych nawiasów w polach BOOTP, otrzymywanych od zewnętrznego serwera DHCP. Podczas dalszego przetwarzania tego pliku przez proces dhclient, wskazane przez atakującego pole jest przekazywane do dhclient-script, co może być wykorzystane do wykonania dowolnych poleceń z uprawnieniami root na systemach korzystających z dhclient, podczas kontaktu z kontrolowanym przez atakującego serwerem DHCP.
- CVE-2026-6386 — brak odpowiedniego przetwarzania dużych stron pamięci w funkcji jądra pmap_pkru_update_range(). Nieuprzywilejowany użytkownik może zmusić pmap_pkru_update_range() do przetwarzania pamięci z przestrzeni użytkownika jako strony w tabeli stron pamięci, co może prowadzić do nadpisania obszaru pamięci, do którego nie ma dostępu.
- CVE-2026-5398 — dostęp do już zwolnionego obszaru pamięci w obsłudze TIOCNOTTY, co pozwala nieuprzywilejowanemu procesowi uzyskać uprawnienia root.
Źródło: opennet.ru
