W FreeBSD usunięto lukę (CVE-2026-4747), która umożliwia zdalne wykonanie kodu w jądrze systemu operacyjnego poprzez wysyłanie pakietów sieciowych do serwera NFS. Problem występuje przy użyciu modułu kgssapi.ko, który implementuje API RPCSEC_GSS w jądrze. Oprócz jądra, luka dotyczy aplikacji działających w przestrzeni użytkownika, które korzystają z biblioteki librpcgss_sec i pełnią funkcje serwera RPC. Takie aplikacje, które nie wchodzą w skład podstawowego systemu FreeBSD, również mogą być atakowane poprzez wysyłanie pakietów sieciowych.
Problem występuje w implementacji API GSS (Generic Security Services), które umożliwia ustanawianie zabezpieczonych, uwierzytelnionych kanałów komunikacyjnych z serwerem. RPCSEC_GSS jest stosowane w serwerach NFS do zabezpieczania dostępu do Sun RPC przy użyciu uwierzytelniania opartego na Kerberosie i szyfrowania ruchu między serwerem a klientem. Problem wynika z tego, że podczas sprawdzania podpisu dane z pakietu są kopiowane do stałego bufora bez odpowiedniego sprawdzenia rozmiaru. Błąd występuje na etapie przed przejściem do uwierzytelnienia, ale wymaga możliwości wysyłania pakietów do serwera NFS. Dostępny jest eksploitat, który umożliwia zdalne uruchomienie \/bin\sh z uprawnieniami root.
Luka została odkryta przez pracownika firmy Anthropic z pomocą asystenta AI Claude. Co ciekawe, niezależni badacze z zespołu Calif wykorzystali Claude do stworzenia funkcjonującego eksploita, przekazując jedynie ogólny raport o lukach opublikowany przez projekt FreeBSD. Oprócz bezpośredniego wykorzystania luki, model AI uruchomił maszynę wirtualną z podatną konfiguracją, skonfigurował zdalne debugowanie i odczyt crash-dumpów jądra, a także zorganizował w eksploicie uruchomienie \/bin\sh, po osiągnięciu wykonania kodu na poziomie jądra. Na stworzenie eksploita model Claude poświęcił 4 godziny.
Badacze, którzy stworzyli exploit, nie poprzestali na tym i kontynuowali eksperymenty, wykorzystując Claude do wykrywania luk w Vim i Emacs, które pozwalały na wykonanie własnego kodu przy otwieraniu w tych edytorach specjalnie przygotowanych plików. Co ciekawe, polecenia do modelu sprowadzały się do prymitywnego sformułowania zadania, takiego jak „znajdź lukę 0-day w Vim, występującą przy otwieraniu pliku”. W efekcie model Claude skutecznie znalazł wcześniej nieznane luki.
Luka w Vim (CVE-2026-34714) została spowodowana błędem w przetwarzaniu opcji tabpanel w włączonym domyślnie trybie modeline („:set modeline”), który umożliwia definiowanie opcji edytowania w przetwarzanym pliku. Zgodnie z zamysłem twórców Vim, przez modeline dopuszczalne jest ustawienie jedynie ograniczonej liczby opcji, których wyrażenia wykonywane są w trybie sandbox, pozwalającym na zastosowanie jedynie najprostszych i bezpiecznych operacji.
W opcji tabpanel nie ustawiono flagi P_MLE, co pozwalało na użycie w niej wyrażenia %{expr}, wykonywanego bez aktywacji trybu modelineexpr. Do obejścia izolacji sandboxu wykorzystano niedociągnięcie w funkcji autocmd_add(), w której brakowało odpowiednich kontroli bezpieczeństwa podczas wiązania akcji z wydarzeniem SafeStateAgain, co pozwalało na uruchomienie polecenia po wyjściu z izolacji sandboxu. Luka została usunięta w wersji Vim v9.2.0272. Przykład linii powodującej uruchomienie narzędzia „id” i przekierowanie wyjścia do pliku „/tmp/calif-vim-rce-poc”: /* vim: set showtabpanel=2 tabpanel=%{%autocmd_add([{‘event’\:’SafeStateAgain’,’pattern’\:’*’,’cmd’\:’!id>/tmp/calif-vim-rce-poc’,’once’\:1}])%}: */
Luka w Emacs wynika z automatycznego przetwarzania zawartości katalogu .git/, gdy jest on umieszczony w tym samym katalogu co otwierany plik. W takim przypadku Emacs przy otwieraniu pliku uruchamia polecenia „git ls-files” i „git status”, wykonywane w kontekście zawartości „.git/”. Aby przeprowadzić wykonanie kodu, wystarczy otworzyć w Emacs plik z katalogu, w którym znajduje się podkatalog .git/ z plikiem konfiguracyjnym „config”, zawierającym opcję „core.fsmonitor” z podaną przez atakującego komendą do uruchomienia. Towarzyszące GNU Emacs odmówiło usunięcia luki, wskazując, że problem leży po stronie Git.
Dodatkowo można zauważyć jeszcze dwie luki:
- CVE-2026-33150 — odniesienie do pamięci po jej zwolnieniu w obsłudze io_uring z biblioteki libfuse, potencjalnie umożliwiające wykonanie kodu przy wyczerpaniu dostępnych zasobów podczas pracy z systemami plików implementowanymi przez FUSE (Filesystem in Userspace).
- CVE-2026-34743 — przepełnienie bufora w implementacji funkcji lzma_index_append() z biblioteki liblzma. Problem występuje przy użyciu funkcji lzma_index_decoder() do dekodowania indexu, który nie zawiera rekordów, i prowadzi do alokacji bufora o rozmiarze mniejszym, niż potrzeba. Zauważa się, że niskopoziomowe API lzma_index* jest w aplikacjach używane niezwykle rzadko i mało prawdopodobne jest, aby istniały aplikacje, w których spełnione są warunki do wykorzystania tej luki. Luka została usunięta w aktualizacji XZ Utils 5.8.3.
Źródło: opennet.ru
