Выпущена OpenBSD 7.6

OpenBSD – свободная, многоплатформенная UNIX-подобная операционная система на базе 4.4BSD. 57-й выпуск, OpenBSD 7.6, содержит новые возможности, различные улучшения, исправления ошибок и доработки.

Улучшения в области безопасности

  • В компилятор добавлен параметр -fret-clean, по умолчанию выключенный. Эта новая опция заставляет вызывающую программу очищать адрес возврата из стека после завершения вызова. Опция -fret-clean была включена в amd64 для libc, libcrypto, ld.so, ядра и всех инструментов ssh.
  • Раскрытие определения цели ветвления (BTI) для пользовательского окружения и обеспечение генерации LLVM кода с инструкциями BTI.
  • Включили PAC в дополнение к BTI на arm64, чтобы JIT-код соответствовал стандартной защите от ветвлений, предоставляемой нашим базовым компилятором.
  • Ограничили NFS-соединения, которые должны исходить из зарезервированного порта, но разрешили нулевые запросы (они же пинги сервера) из нерезервированных портов в nfs.
  • Сделали локальные порты, привязанные в connect(2), уникальными для каждого laddr, а не глобально уникальными.
  • Применены правила pinsyscalls(2) для нестатических текстовых сегментов.
  • Добавлены pledge и unveil в rpcinfo(8).
  • Добавлен AUDIO_GETDEV в аудио pledge(2).

Внесены изменения в брандмауэр pf(4)

  • Добавлено отображение счетчиков пересборки фрагментов pf(4) в pfctl(8) и systat(1).
  • Исправлено отсутствие TCP-состояния pfsync(4) для однорангового соединения назначения, что уменьшило избыточный pfsync трафик.
  • Позволяет пользователям определять таблицы внутри якоря так же, как они могут определять глобальные таблицы в pf.conf(5). Ранее для этого требовался отдельный вызов pfctl -a foo -t bar.

Новые возможности в сетевом стеке

  • Сделано так, что PPP-интерфейсы могут работать в rdomain(4) и устанавливать маршрут по умолчанию в том же домене маршрутизации.
  • Введено rport(4) для соединения уровня 3 «точка-точка» между доменами маршрутизации. Аналогично pair(4), но более эффективно, поскольку не добавляет Ethernet-заголовки.
  • Реализована IPv6-пересылка только по IPsec (sysctl net.inet6.ip6.forwarding = 2), что эквивалентно net.inet.ip.forwarding = 2 для IPv4.
  • Добавлены BIOCSETFNR в bpf(4), как и BIOCSETF, без сброса буфера и статистики.
  • Реализовано SO_ACCEPTCONN в getsockopt(2), которое может быть использовано для проверки того, что listen(2) было вызвано и сокет принимает соединения.

Различные новые пользовательские функции

  • Добавлен scandirat(3) из FreeBSD.
  • Добавлена elf_aux_info(3), предназначенная для того, чтобы пользовательская среда могла подглядывать в AT_HWCAP и AT_HWCAP2, используя интерфейс из FreeBSD.
  • Добавлена недостающая функция wcsnlen(3) для нахождения длины широкой строки (т.е. wcslen(3) с аргументом max len).
  • Импортирована libva 2.22.0, реализация VA-API (API видеоускорения). VA-API предоставляет доступ к возможностям аппаратного ускорения графики для обработки видео.
  • Добавлены опции -u nameenv(1) для удаления переменной из окружения.

OpenBSD 7.6 доступна для загрузки здесь. Полный список изменений и дополнений смотрите здесь.