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) было вызвано и сокет принимает соединения.
Различные новые пользовательские функции
- Добавлена 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 name – env(1) для удаления переменной из окружения.
OpenBSD 7.6 доступна для загрузки здесь. Полный список изменений и дополнений смотрите здесь.