Дистанционно експлоатирани уязвимости в ядрото на FreeBSD, Vim и Emacs

В FreeBSD е намерена уязвимост (CVE-2026-4747), която позволява чрез изпращане на мрежови пакети до NFS сървъра да се постигне изпълнение на код на ниво ядро. Проблемът се проявява при използването на модула kgssapi.ko, който реализира API RPCSEC_GSS от страна на ядрото. Освен ядрото, уязвимостта засяга приложения в потребителското пространство, използващи библиотеката librpcgss_sec и изпълняващи функции на RPC сървера. Подобни приложения, които не са част от основната система FreeBSD, също могат да бъдат атакувани чрез изпращане на мрежови пакети.

Проблемът присъства в реализацията на API GSS (Generic Security Services), който позволява установяването на защитени аутентифицирани канали за свързване с сървъра.. RPCSEC_GSS се използва в NFS сървъри за защита на достъпа до Sun RPC, като прилага удостоверяване на база Kerberos и криптиране на трафика между сървъра и клиента. Проблемът произтича от това, че при проверка на подписа данните от пакета се копират в фиксирано буферно пространство без необходимата проверка на размера. Грешката се проявява на етапа преди удостоверяването, но изисква възможност за изпращане на мрежови пакети до NFS сървъра. Наличен е експлойт, който позволява отдалечено стартиране на /bin/sh с права root.

Уязвимостта е била открита от служител на компанията Anthropic с помощта на AI асистента Claude. Забележително е, че външни изследователи от екипа Calif са използвали Claude за написване на работен експлоит, предоставяйки на него само публикуваната от проекта FreeBSD обща информация за уязвимостта. Освен директното експлоатиране на уязвимостта, AI моделът е разгрял виртуална машина с уязвима конфигурация, настроил отдалечен отладчик и четене на ядрените crash-дъмпове, както и организирал изпълнението на /bin/sh в експлоита, след като е успял да постигне изпълнение на код на ниво ядро. За създаването на експлоита са били изразходвани 4 часа работа на модела Claude.

Създалите експлоита изследователи не се ограничили само с това и продължили експериментите, използвайки Claude за откриване на уязвимости във Vim и Emacs, позволяващи изпълнението на техния код при отварянето на специално оформени файлове в редакторите. Забележително е, че промптите към модела са се състояли в примитивно задаване на задача, като "намери 0-day уязвимост във Vim, която възниква при отварянето на файл". В резултат на това моделът Claude успешно е открил преди неизвестни уязвимости.

Уязвимостта в Vim (CVE-2026-34714) е предизвикана от грешка при обработката на опцията tabpanel в режим modeline, включен по подразбиране (":set modeline"), който предоставя възможности за определяне на опции за редактиране в обработвания файл. Според разработчиците на Vim, чрез modeline се допуска настройването само на ограничен брой опции, чиито изрази се изпълняват в режим на песSandbox, допускащ използването само на най-простите безопасни операции.

Опцията tabpanel не е била настроена с флага P_MLE, което е позволило да се използва израза %{expr}, който се изпълнява без активиране на режима modelineexpr. За заобикаляне на изолирането в песSandbox е била използвана недоизпълненост в функцията autocmd_add(), в която липсват подходящи проверки за сигурност при свързването на действието с събитието SafeStateAgain, което е позволило извършването на команда след излизането от песSandbox изолацията. Уязвимостта е отстранена в изданието Vim v9.2.0272. Пример за ред, който води до изпълнението на командата "id" и насочването на изхода в файл "\/tmp\/calif-vim-rce-poc": /* vim: set showtabpanel=2 tabpanel=%{%autocmd_add([{‘event’\:’SafeStateAgain’,’pattern’\:’*’,’cmd’\:’!id>\/tmp\/calif-vim-rce-poc’,’once’\:1}])%}: */

Уязвимост в Emacs е причинена от автоматичната обработка на съдържанието на каталога .git/, когато той е разположен в един и същ каталог с отваряния файл. В този случай Emacs при отварянето на файла изпълнява командите „git ls-files“ и „git status“, които се изпълняват в контекста на съдържанието на „.git/“. За да се осъществи изпълнението на кода, е достатъчно да се отвори файл в Emacs от каталог, в който има подкаталог .git/ с конфигурационен файл „config“, включващ опцията „core.fsmonitor“ с командата за стартиране, зададена от атакуващия. Съпътстващият GNU Emacs отказа да отстрани уязвимостта, посочвайки, че проблемът е в Git.

Допълнително може да се отбележат още две уязвимости:

  • CVE-2026-33150 — достъп до памет след освобождаването ѝ в io_uring-обработчика от библиотеката libfuse, потенциално позволяваща изпълнение на код при изчерпване на наличните ресурси по време на работа с файловите системи, реализирани чрез FUSE (Filesystem in Userspace).
  • CVE-2026-34743 — уязвимост за буферно препълване в реализацията на функцията lzma_index_append() от библиотеката liblzma. Проблемът се проявява при използване на функцията lzma_index_decoder() за декодиране на индекс, който не съдържа записи, и води до заделяне на буфер с размер по-малък от необходимия. Отбелязва се, че нискоуровневият API lzma_index* се използва изключително рядко в приложения и е малко вероятно да има приложения, в които да се изпълняват необходимите условия за експлоатация на индекса. Уязвимостта е отстранена в актуализацията XZ Utils 5.8.3.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster