В 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 се допуска настройването само на ограничен брой опции, чийто изрази се изпълняват в режим на пясъчник, допускащ само най-простите безопасни операции.
Флагът P_MLE не е бил зададен за опцията tabpanel, което е позволявало да се използва изразът %{expr}, който се изпълнява без активиране на режима modelineexpr. За заобикаляне на изолацията на пясъчника е била използвана недообработката в функцията autocmd_add(), в която липсват необходимите проверки за безопасност при свързването на действие с събитие SafeStateAgain, което е позволявало организирането на стартиране на команда след излизане от изолацията на пясъчника. Уязвимостта е отстранена в версията на 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
