Выпуск OpenBSD 6.2.
Представлен новый выпуск свободной, кросс-платформенной UNIX-подобной операционной системы OpenBSD 6.2. Проект OpenBSD был основан Тэо де Раадтом (Theo de Raadt) в 1995 году, после конфликта с разработчиками NetBSD, в результате которого для Тэо был закрыт доступ к CVS репозиторию NetBSD. После этого Тэо де Раадт с группой единомышленников создал на базе дерева исходных текстов NetBSD новую открытую операционную систему, главными целями развития которой стали переносимость (поддерживается 13 аппаратных платформ), стандартизация, корректная работа, активная безопасность и интегрированные криптографические средства. Размер полного установочного ISO-образа базовой системы OpenBSD 6.2 составляет 340 Мб.
Кроме непосредственно операционной системы, проект OpenBSD известен своими компонентами, которые получили распространение в других системах и зарекомендовали себя как одни из наиболее безопасных и качественных решений. Среди них: LibreSSL (форк OpenSSL), OpenSSH, пакетный фильтр PF, демоны маршрутизации OpenBGPD и OpenOSPFD, NTP-сервер OpenNTPD, почтовый сервер OpenSMTPD, мультиплексор текстового терминала (аналог GNU screen) tmux, демон identd с реализацией протокола IDENT, BSDL-альтернатива пакету GNU groff - mandoc, протокол для организации отказоустойчивых систем CARP (Common Address Redundancy Protocol), легковесный http-сервер.
Основные улучшения:
Clang задействован по умолчанию в качестве компилятора для базовой системы и портов для архитектур amd64 и i386. Поддержка gcc4 сохранена, но теперь позиционируется как опция. Некоторые оптимизации clang отключены из-за возможного негативного влияния на безопасность;
Задействована новая техника рандомизации адресного пространства ядра KARL (Kernel Address Randomized Link), нацеленная на усиление защиты от атак, связанных с манипуляцией структурами и кодом ядра. KARL позволяет изменить первичную раскладку виртуального адресного пространства ядра через выполнение операции перекомпоновки исполняемого файла ядра при каждой перезагрузке, формируя каждый раз уникальный экземпляр ядра, раскладка структур в котором заранее неизвестна;
Добавлена реализация технологии защиты Trapsleds, усложняющей выполнение эксплоитов, использующих технику заимствования кусков кода (ROP, Return-Oriented Programming). Суть метода в применении для заполнения добавочных областей (используются для выравнивания блоков с кодом функций по 16-байтовой границе) инструкций INT3 вместо NOP. В случает выполнения эксплоита попадание на область заполнения на базе INT3 приведёт к возникновению исключения и остановке выполнения (SIGTRAP) вместо выполнения следующих за добавочным блоком инструкций;
Обеспечена перекомпоновка библиотек libcrypto и ld.so при каждом перезапуске с расстановкой входящих в библиотеку объектов в случайном порядке;
Процессы pflogd и tcpdump переведены на модель fork+exec;
В процессах ifstated, at и snmpd задействован механизм изоляции pledge;
Усилена защита, связанная с упаковкой структур и очисткой объектов ядра, перед их передачей в пространство пользователя;
Ядро избавлено от глобальной блокировки (KERNEL_LOCK) при обработке входящих и транзитных пакетов, что положительно отразилось на производительности и привело к снижению задержек;
С целью упрощения стека IPv6 в ядре прекращена поддержка автоконфигурации (IPv6 Stateless Address Autoconfiguration, RFC 4862). Данная возможность теперь реализуется на уровне пользователя процессом slaacd(8);
В pf интегрирована поддержка алгоритма FQ-CoDel (Сontrolled Delay - управляемая задержка), позволяющего существенно поднять производительность работы в беспроводных сетях. В pf также добавлена возможность инспектирования пакетов AH (IP Authentication Header, RFC 4302) и проверки инкапсулированного в них протокола;
В системе распределения памяти для обработки сетевых пакетов реализованы отдельные кэши для каждого ядра CPU;
Улучшения в системе виртуализации VMM: В утилиту vmctl добавлена возможность миграции приостановленных виртуальных машин и манипуляции снапшотами памяти виртуальных окружений; В гостевых системах обеспечена поддержка доступа к инструкциям AVX/AVX2 CPU; Добавлена поддержка AMD SVM/RVI. Размер памяти виртуальных окружений увеличен до 32GB на системах amd64. Внесена большая порция улучшений в код эмуляции устройств;
Улучшения в инсталляторе: осуществлён переход на Allotment Routing Table (ART), реализована генерация уникального образа ядра, обеспечен запуск скриптов install.site и upgrade.site после завершения установки и обновления, расширена выводимая информация о дисках, на системах amd64 задействовано расширение AES-NI;
Представлена новая функция freezero, выполняющая операцию освобождение памяти с обнулением содержимого;
Добавлен новый системный вызов futex;
В библиотеке pthread представлена новая реализация mutex и условных переменных (condition variable), позволяющая увеличить отзывчивость многопоточных приложений;
Добавлена собственная реализация POSIX xlocale;
В функции malloc при указании опции "F" улучшено определение случаев двойного освобождения одного блока памяти;
Включен автоматический переход в спящий режим при низком заряде аккумулятора;
Добавлены утилиты ctfdump и ctfconv для манипуляции файлами в формате CTF (Compact C Type Format);
Добавлена система трассировки процессов fktrace;
В беспроводном стеке теперь отдаётся предпочтения частоте 5GHz, а не 2GHz, в процессе выбора точки доступа;
В rtadvd добавлена поддержка рекомендаций по снижению энергопотребления RFC 7772 ("Reducing Energy Consumption of Router Advertisements");
В утилиту nc добавлены опции: "-W recvlimit" для завершения работы после получения заданного числа пакетов, "-T tlscompat" для включения TLS-протоколов из категории "compat" в libtls, "-Z" для сохранения сертификата удалённого хоста в формате PEM;
В bgpd обеспечена поддержка виртуальных маршрутизаторов через запуск своего экземпляра bgpd для каждого домена маршрутизации;
В dhcpd добавлена поддержка выражения echo-client-id и обеспечена обработка сообщений DHCPINFORM от клиентов на другой стороне DHCP-шлюза;
Обновлена версия почтового сервера OpenSMTPD, в которой устранена утечка файловых дескрипторов, прекращена поддержка синтаксиса "listen secure" и удалена поддержка фильтров (позиционировались как экспериментальная возможность);
Обновлён пакет OpenSSH 7.6, подробный обзор улучшений можно посмотреть здесь;
Обновлён пакет LibreSSL, подробный обзор улучшений можно посмотреть в анонсах выпусков 2.6.0 и 2.6.1;
Число портов для архитектуры AMD64 составило 9728 , для i386 - 9685. Из находящихся в портах приложений, отмечены:
CMake 3.9.3
Chromium 61.0.3163.100
GCC 4.9.4
GNOME 3.24.2
Go 1.9
JDK 8u144
KDE 3.5.10 и 4.14.3;
LLVM/Clang 5.0.0
LibreOffice 5.2.7.2
Lua 5.1.5, 5.2.4, and 5.3.4
MariaDB 10.0.32
Mozilla Firefox 52.4.0esr и 56.0.0
Mozilla Thunderbird 52.2.1
Node.js 6.11.2
OpenLDAP 2.3.43 и 2.4.45
PHP 5.6.31 и 7.0.23
Postfix 3.2.2 и 3.3-20170910
PostgreSQL 9.6.5
Python 2.7.14 и 3.6.2
Ruby 1.8.7.374, 2.1.9, 2.2.8, 2.3.5 и 2.4.2
Rust 1.20.0
Sendmail 8.16.0.21
SQLite3 3.20.1
Vim 8.0.0987
Xfce 4.12
Компоненты от сторонних разработчиков, входящие в состав OpenBSD 6.2:
Графический стек Xenocara на базе X.Org server 1.18.4 с патчами, freetype 2.8.0, fontconfig 2.12.4, Mesa 13.0.6, xterm 330, xkeyboard-config 2.20 и т.п.)
LLVM/Clang 4.0.0 (c патчами)
GСС 4.2.1 (c патчами) и 3.3.6 (c патчами)
Perl 5.24.2 (c патчами)
NSD 4.1.175
Unbound 1.6.6
Ncurses 5.7
Binutils 2.17 (c патчами)
Gdb 6.3 (c патчами)
Awk в версии от 10 августа 2011 г.
Expat 2.1.4
Расширена поддержка оборудования: Значительно расширено число драйверов для платформы ARM; Добавлен драйвер hvs для хранилища Hyper-V. Добавлена поддержка беспроводных карт на базе чипов Intel 8265 и 3168, RTL8192CE, RT5360 и RTS525A.
Выпуск OpenBSD 6.2