Представлен новый выпуск свободной, кросс-платформенной 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. Драйвер для GPU Intel (inteldrm) обновлён до состояния драйвере из ядра Linux 4.4.70 и теперь включает поддержку графических подсистем чипов Skylake, Kaby Lake и Cherryview, а также улучшенную поддержку Broadwell и Valleyview.