LINUX.ORG.RU

Уязвимость в системном вызове execve, предоставляющая root-доступ во FreeBSD

 ,


2

3

Во FreeBSD выявлена уязвимость (CVE-2026-7270), позволяющая непривилегированному пользователю выполнить код с правами ядра и получить root-доступ к системе. Уязвимость затрагивает все выпуски FreeBSD, сформированные с 2013 года. В открытом доступе размещён эксплоит, работа которого проверена на системах с FreeBSD 11.0 по 14.4. Уязвимость устранена в обновлениях FreeBSD 15.0-RELEASE-p7, 14.4-RELEASE-p3, 14.3-RELEASE-p12 и 13.5-RELEASE-p13. Для более старых веток можно использовать патч.

Проблема вызвана переполнением буфера в системном вызове execve, возникающем при обработке префикса, указываемого в первой строке скриптов для определения пути к интерпретатору (например, «#!/bin/sh»). Переполнение возникает при вызове функции memmove из-за неверного составления математического выражения для вычисления размера копируемых в буфер аргументов. Вместо вычитания из «args->endp» значений «args->begin_argv» и «consume», из «args->endp» вычиталось только значение «args->begin_argv», а переменная consume прибавлялась к результату, а не вычиталась, т.е. в результате копировалось больше данных на два значения «consume».

 memmove(args->begin_argv + extend, args->begin_argv + consume,
- args->endp - args->begin_argv + consume);
+ args->endp - (args->begin_argv + consume));

Переполнение позволяет перезаписать размещаемые в соседней области памяти элементы структуры «exec_map» от другого процесса. В эксплоите переполнение задействовано для перезаписи содержимого «exec_map» периодически запускаемых в системе привилегированных процессов. В качестве подобного процесса выбран sshd, который при каждой установке сетевого соединения ответвляет через вызов fork и execve процесс «/usr/libexec/sshd-session» с правами root.

Эксплоит подставляет для данного процесса переменную окружения «LD_PRELOAD=/tmp/evil.so», приводящую к загрузке в контексте sshd-session своей библиотеки. Подставляемая библиотека создаёт в файловой системе исполняемый файл /tmp/rootsh с флагом suid root. Вероятность успешного переполнения оценивается в 0.6%, но благодаря цикличному повтору попыток, успешная эксплуатация достигается примерно за 6 секунд на системе с 4-ядерным CPU.

Кроме того, во FreeBSD устранено ещё несколько уязвимостей:

  • CVE-2026-35547, CVE-2026-39457 - переполнения буфера в библиотеке libnv, используемой в ядре и в приложениях из базовой системы для обработки списков в формате ключ/значение и для организации передачи данных при межпроцессном взаимодействии. Первая проблема вызвана неверным вычислением размера сообщения при обработке специально оформленных заголовков IPC-сообщений. Вторая проблема приводит к переполнению стека при обмене данных через сокет из-за отсутствия проверки соответствия размера дескриптора сокета размеру буфера, используемому в функции select(). Потенциально уязвимости могут использоваться для повышения своих привилегий в системе.
  • CVE-2026-42512 - удалённо эксплуатируемое переполнение буфера в dhclient, возникающее из-за некорректного вычисления размера массива указателей, используемого для передачи переменных окружения в dhclient-script. Не исключается возможность создания эксплоита для удалённого выполнения кода через отправку специально оформленного DHCP-пакета.
  • CVE-2026-7164 - переполнение стека в пакетном фильтре pf, возникающее при обработке специально оформленных пакетов SCTP. Проблема вызвана неограниченным рекурсивным разбором параметров SCTP.
  • CVE-2026-42511 - возможность подстановки в dhclient.conf произвольных директив из-за отсутствия должного экранирования двойных скобок в BOOTP полях, получаемых от внешнего DHCP-сервера. При последующем разборе данного файла процессом dhclient, указанное атакующим поле передаётся в dhclient-script, что может использоваться для выполнения произвольных команд с правами root на системах, использующих dhclient, при обращении к подконтрольному атакующему DHCP-серверу.
  • CVE-2026-6386 - отсутствие должной обработки больших страниц памяти в функции ядра pmap_pkru_update_range(). Непривилегированный пользователь, может заставить pmap_pkru_update_range() обработать память из пространства пользователя как страницу в таблице страниц памяти, и добиться перезаписи области памяти, к которой нет доступа.
  • CVE-2026-5398 - обращение к уже освобождённой области памяти в обработчике TIOCNOTTY, позволяющее непривилегированному процессу получить права root.

>>> Источник (OpenNet)

★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

Похоже, теорема Торвальдса о большом количестве глаз работает и во FreeBSD. Там гораздо меньше ищется багов. Притом что отдельные экспортные оценки свидетельствуют о наличии некоторых явных уязвимостях, не говоря уже о копании вглубину.

Infra_HDC ★★★★★
()

Ну вот, кто там с дырявого линукса убегать хотел? Можете бежать на фряху, в ней теперь безопасно.

imul ★★★★★
()

Новость, конечно, печальная, но баг с execve пофикшен в прод-ветках ещё 29 апреля, а остальные два - 21 апреля.

firkax ★★★★★
()

Бздуны вечно пытаются нагнать GNU/Linux - наконец-то у них это получилось хоть в чём-то :)

zabbal ★★★★☆
()
Ответ на: комментарий от imul

 Можете бежать на фряху, в ней теперь безопасно.

В ней не только безопасно, а ещё ZFS встроена прямо в ядро! (Кажется, про ZFS нужно обязательно написать во фрибсдишном сраче, если я ничего не путаю).

rmu ★★★
()
Последнее исправление: rmu (всего исправлений: 1)

Дежурно напоминаю, что раст не нужен, потому что таких ошибок не бывает.

liksys ★★★★
()
Ответ на: комментарий от imul

Да дыры то закроют, может даже и фряху допилят, а как ты финского отмоешь?

Альтернатива это всегда хорошо. Если фряха помрет - это будет трагедия.

LightDiver ★★★★★
()
Ответ на: комментарий от Infra_HDC

Весь софт будет течь, к сожалению: берём нейронку локальную, ставим задачу взломать на автопоиск, через месяц приходим с пачкой cve. С менее популярным софтом ситуация просто будет сильно хуже. Этот процесс уже собственно начался с недавним латанием сотен уязвимостей Firefox, например.

ac130kz ★★★
()
Последнее исправление: ac130kz (всего исправлений: 1)
Ответ на: комментарий от ac130kz

это если ломать одну конкретную софтину, подозреваю, на этапах взаимодействия между софтом тоже полно дырок, но такой поиск организовывать нужно иначе

может я чего-то не понимаю, просто интуитивно говорю

unclestephen ★★
() автор топика
Ответ на: комментарий от unclestephen

Со временем происходит стандартизация даже во взаимодействии софта. Чем больше стандартизации и универсальных интерфейсов, тем меньше дырок.

Проблем больше там, где каждый создает свою уникальную нетакуську.

Ну, это как я вижу. А опыта у меня чуть меньше, чем никакого.

Вот все ругают электрон, вебмакак итд. А ведь когда собираешь проект из готовых модулей - там уже все продумано, проверено, предусмотрено. Если ты будешь пилить ручную работу с железом, с клавиатурой, мышью - заметишь сколько всего надо проработать, сколько учесть. А потом возьмешь стандартный евдев и там все это уже сделано. А если еще возьмешь либинпут совсем охренеешь как все стало просто. Просто юзай и не переживай. Так и во всем со своими нюансами.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 3)

Бывает.

Спасибо за информацию.

sparkie ★★★★★
()
Ответ на: комментарий от LightDiver

Альтернатива это всегда хорошо.

С этим согласен.

Если фряха помрет - это будет трагедия.

Я бы в плане альтернатив лучше бы в Hurd вкладывался. Там микроядро и лицензия GPL. (Естественно, каждый пилит то, что считает нужным, нехай и фря развивается…)

hobbit ★★★★★
()
Ответ на: комментарий от LightDiver

Согласен. Ну так вот есть поле для желающих развернуться!

hobbit ★★★★★
()
Ответ на: комментарий от Infra_HDC

С т.з. изучения ОС общего назначения, думаю, что фрибсд всё равно лучше, потому что она проще. А такие вот уязвимости как раз можно и рассматривать на лабах по кибер-безопасности.

seiken ★★★★★
()
Ответ на: комментарий от imul

Только если с помощью ИИ.

Хммм.. А кто нибудь уже пытался написать ось полностью при помощи промтов к ИИ? Без строчки реального кода.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 2)
Ответ на: комментарий от LightDiver

Конечно же. Это жаже не обсуждается.

imul ★★★★★
()
Ответ на: комментарий от LightDiver

уже писали, не так давно было несколько новостей на хабре

unclestephen ★★
() автор топика
Ответ на: комментарий от sparkie

Если вам для исползования нужно уметь готовить ФС, ОС - знаичт с вашими ФС, ОС что то не так. В идеале пользователь вообще не должен знать, что у него есть какая то там ОС или ФС. В крайнем случаем он должен подозревать, что это у него было, но он это вылечил еще в молодости.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

может даже и фряху допилят

Я это натурально с конца прошлого века слышу. Через пару тысячелетий, когда Первая Межголактическая будет стартовать в сторону Андромеды, в каморке нижнего трюма, возле подтекающего реактора будет сидеть лысый мутант и, дёргая красным глазом, бормотать «…скоро, уже скоро фрипсдя будет готова в продакшун…»

zabbal ★★★★☆
()
Ответ на: комментарий от LightDiver

а как ты финского отмоешь?

Предлагаю его отменить, поставить венду и выложить пароль.

thesis ★★★★★
()
Ответ на: комментарий от zabbal

скоро, уже скоро фрипсдя будет готова в продакшун

Так во-первых уже была, а во-вторых, с таким продакшеном нахер бы оно друг другу надо.

В смысле, вот это «не годится в продакшын» это как упрекать жену в том, что она не сможет работать шпалоукладчицей в условиях вечной мерзлоты.

thesis ★★★★★
()
Ответ на: комментарий от LightDiver

Ну, так-то оно так, но есть нюансы. Я уже не помню подробностей. При установке Фряхи я задал не существующий сервис. В итоге ФС на него ссылалась и «плевалась» варнингами. Я чуть не полысел окончательно, пока не догадался заглянуть в документацию.

sparkie ★★★★★
()
Ответ на: комментарий от imul

У меня на ней есть проект — форк одной приблуды. Могу в принципе на Линукс, но раз начал...

sparkie ★★★★★
()
Ответ на: комментарий от thesis

с таким продакшеном нахер бы оно друг другу надо

Гениальный тейк! Надо будет запомнить: это не нас в прод не берут, это мы сами туда не хотим потому что прод у вас не той системы :-D

zabbal ★★★★☆
()
Ответ на: комментарий от zabbal

Запомни, конечно. Котиков в плуг не запрягают и т.д. Фряха нам нужна для красоты и слегка извращенной любви, а не для доставки массам в мозг запрещенных высеров сатанинских корпораций посредством протоколов хэтетепе.

thesis ★★★★★
()
Ответ на: комментарий от thesis

Фряха нам нужна для красоты и слегка извращенной любви, а не для доставки массам

Ага, именно поэтому когда Рамблер мигрировал с бзди на линукс была такая громогласная детонация пуканов :-D :-D :-D

zabbal ★★★★☆
()
Ответ на: комментарий от zabbal

По прошествии лет факт подрыва пуканов вокруг сраного рамблера доставляет гораздо больше, чем его тогдашняя причина.

Сходил в гугло, и оказалось, что сотонинская корпорация нетфликс до сих пор пашет на котиках; ну что ж, значит можно и так.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.