Разработчики: | The OpenBSD Foundation |
Дата премьеры системы: | 2022/04/22 |
Дата последнего релиза: | 2023/03/10 |
Технологии: | ОС |
Содержание |
2023: OpenBSD 7.3
10 апреля 2023 года стало известно о том, что представлен выпуск свободной UNIX-подобной операционной системы OpenBSD 7.3. Проект OpenBSD был основан Тэо де Раадтом (Theo de Raadt) в 1995 году после конфликта с разработчиками NetBSD, в результате которого для Тэо был закрыт доступ к CVS репозиторию NetBSD. После этого Тэо де Раадт с группой единомышленников создал на базе дерева исходных текстов NetBSD открытую операционную систему, главными целями развития которой стали переносимость (поддерживается 13 аппаратных платформ), стандартизация, корректная работа, проактивная безопасность и интегрированные криптографические средства. Размер полного установочного ISO-образа базовой системы OpenBSD 7.3 составляет 620 МБ.
Как сообщалось, кроме непосредственно операционной системы, проект 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-сервер, утилита синхронизации файлов OpenRSYNC.
Основные изменения:
- Реализованы системные вызовы waitid (ожидание изменения состояния процесса), pinsyscall (для передачи информации о точке входа execve для защиты от ROP-эксплоитов), getthrname и setthrname (получение и установка имени потока).
- Для всех архитектур задействован clockintr, независящий от оборудования планировщик прерываний от таймера.
- Добавлен sysctl kern.autoconf_serial, который можно использовать для отслеживания изменения состояния device tree в ядре из пространства пользователя.
- Усовершенствована поддержка многопроцессорных систем (SMP). Переведены в разряд mp-safe фильтры событий для устройств tun и tap. Избавлены от блокировок функции select, pselect, poll, ppoll, getsockopt, setsockopt, mmap, munmap, mprotect, sched_yield, minherit и utrace, а также ioctl SIOCGIFCONF, SIOCGIFGMEMB, SIOCGIFGATTR и SIOCGIFGLIST. Оптимизирована работа с блокировками в пакетном фильтре pf. Оптимизирована производительность системы и сетевого стека на многоядерных системах.
- Реализация фреймворка drm (Direct Rendering Manager) синхронизирована с ядром Linux 6.1.15 (в прошлом выпуске - 5.15.69). В драйвер amdgpu добавлена поддержка GPU Ryzen 7000 "Raphael", Ryzen 7020 "Mendocino", Ryzen 7045 "Dragon Range", Radeon RX 7900 XT/XTX "Navi 31", Radeon RX 7600M (XT), 7700S и 7600S "Navi 33". В amdgpu добавлена поддержка управления фоновой подсветкой и обеспечена работаg xbacklight при использовании X.Org-драйвера modesetting. В Mesa по умолчанию включено кэширование шейдеров.
- Внесены изменения в гипервизор VMM.
- Реализованы возможности для дополнительной защиты памяти процессов в пространстве пользователя: системный вызов mimmutable и связанная с ним одноимённая библиотечная функция, позволяющая зафиксировать права доступа при отражении в память (memory mappings). После фиксации, выставленные для области памяти права, например, запрет на запись и исполнение, невозможно в дальнейшем изменить через последующие вызовы функций mmap(), mprotect() и munmap(), которые при попытке изменения будут выдавать ошибку EPERM.
- На архитектуре AMD64 для системных вызовов включён механизм защиты RETGUARD, нацеленный на усложнение выполнения эксплоитов, построенных с использованием заимствования кусков кода и приёмов возвратно-ориентированного программирования.
- Включена защита от эксплуатации уязвимостей, основанная на случайной перекомпоновке исполняемого файла sshd при каждой загрузке системы. Перекомпоновка позволяет сделать малопредсказуемым смещения функций в sshd, что затруднит создание эксплоитов, использующих методы возвратно-ориентированного программирования.
- Обеспечена более агрессивная рандомизация расположения стека на 64-разрядных системах.
- Добавлена защита от уязвимости Spectre-BHB в микроархитектурных структурах процессоров.
- На процессорах ARM64 для пространства пользователя и ядра задействован флаг DIT (Data Independent Timing) для блокирования атак по сторонним каналам, манипулирующих зависимостью времени выполнения инструкций от обрабатываемых в этих инструкциях данных.
- Предоставления возможность использования lladdr при определении сетевых конфигураций. Например, помимо привязки к имени интерфейса (hostname.fxp0) можно использовать привязку к MAC-адресу (hostname.00:00:6e:00:34:8f).
- Оптимизирована поддержка перехода в спящий режим для систем на базе архитектуры ARM64.
- Значительно расширена поддержка ARM-чипов Apple.
- Добавлена поддержка дополнительного оборудования и включены в состав обновленные драйверы.
- В драйвере bwfm для беспроводных карт на базе чипов Broadcom и Cypress реализована поддержка шифрования для WEP.
- В инсталляторе оптимизирована работа с программными RAID и реализована начальная поддержка шифрования дисков (Guided Disk Encryption).
- В tmux ("terminal multiplexer") добавлены команды scroll-top и scroll-bottom для прокрутки курсора в начало и конец * Обновлены пакеты LibreSSL и OpenSSH. Подробный обзор изменений можно посмотреть в обзорах LibreSSL 3.7.0, OpenSSH 9.2 и OpenSSH 9.3.
- Число портов для архитектуры AMD64 составило 11764 (было 11451), для aarch64 - 11561 (было 11261), для i386 - 10572 (было 10225). Среди версий приложений в портах:
- Asterisk 16.30.0, 18.17.0 и 20.2.0
- Audacity 3.2.5
- CMake 3.25.2
- Chromium 111.0.5563.110
- Emacs 28.2
- FFmpeg 4.4.3
- GCC 8.4.0 и 11.2.0
- GHC 9.2.7
- GNOME 43.3
- Go 1.20.1
- JDK 8u362, 11.0.18 и 17.0.6
- KDE Gears 22.12.3
- KDE Frameworks 5.103.0
- Krita 5.1.5
- LLVM/Clang 13.0.0
- LibreOffice 7.5.1.2
- Lua 5.1.5, 5.2.4, 5.3.6 и 5.4.4
- MariaDB 10.9.4
- Mono 6.12.0.182
- Mozilla Firefox 111.0 и ESR 102.9.0
- Mozilla Thunderbird 102.9.0
- Mutt 2.2.9 и NeoMutt 20220429
- Node.js 18.15.0
- OCaml 4.12.1
- OpenLDAP 2.6.4
- PHP 7.4.33, 8.0.28, 8.1.16 и 8.2.3
- Postfix 3.5.17 и 3.7.3
- PostgreSQL 15.2
- Python 2.7.18, 3.9.16, 3.10.10 и 3.11.2
- Qt 5.15.8 и 6.4.2
- R 4.2.1
- Ruby 3.0.5, 3.1.3 и 3.2.1
- Rust 1.68.0
- SQLite 2.8.17 и 3.41.0
- Shotcut 22.12.21
- Sudo 1.9.13.3
- Suricata 6.0.10
- Tcl/Tk 8.5.19 и 8.6.13
- TeX Live 2022
- Vim 9.0.1388 и Neovim 0.8.3
- Xfce 4.18
- Обновлены компоненты от сторонних разработчиков, входящие в состав OpenBSD 7.3:
- Графический стек Xenocara на базе X.Org 7.7 с xserver 1.21.6 + патчи, freetype 2.12.1, fontconfig 2.14, Mesa 22.3.4, xterm 378, xkeyboard-config 2.20, fonttosfnt 1.2.2.
- LLVM/Clang 13.0.0 (+ патчи)
- GCC 4.2.1 (+ патчи) и 3.3.6 (+ патчи)
- Perl 5.36.1 (+ патчи)
- NSD 4.6.1
- Unbound 1.17
- Ncurses 5.7
- Binutils 2.17 (+ патчи)
- Gdb 6.3 (+ патч )
- Awk 12.9.2022
- Expat 2.5.0[1].
2022
OpenBSD 7.1
22 апреля 2022 года стало известно о том, что представлен выпуск свободной кросс-платформенной UNIX-подобной операционной системы OpenBSD 7.1.
Как сообщалось, основные изменения:
- Объявлена готовой к использованию поддержка компьютеров Mac, оснащённых ARM-чипом Apple M1 (Apple Silicon), таких как Apple M1 Pro/Max и Apple T2 Macs. Добавлены драйверы для SPI, I2C, контроллера DMA, клавиатуры, тачпада, управления питанием и производительностью. Обеспечена поддержка Wi-Fi, GPIO, framebuffer, USB, экрана, накопителей NVMe.
- Оптимизирована поддержка архитектуры ARM64. Добавлены драйверы gpiocharger, gpioleds и gpiokeys, обеспечивающие поддержку зарядок, подсветок и кнопок, подключаемых к GPIO (например, так сделано в Pinebook Pro). Добавлены драйверы: mpfclock (PolarFire SoC MSS clock controller), cdsdhc (Cadence SD/SDIO/eMMC host controller), mpfiic (PolarFire SoC MSS I2C controller) и mpfgpio (PolarFire SoC MSS GPIO).
- Оптимизирована поддержка архитектуры RISC-V 64, для которой включены драйверы uhid и fido, обеспечена поддержка установки на диски с GPT.
- В утилите mount_msdos по умолчанию включено использование длинных имён файлов.
- Переработан код сборщика мусора для unix-сокетов.
- sysctl hw.perfpolicy по умолчанию выставлен в значение "auto", подразумевающее включение режима полной производительности при подключении стационарного питания и использование адаптивного алгоритма при питании от аккумулятора.
- Оптимизирована поддержка многопроцессорных систем (SMP). Переведены в разряд mp-safe фильтры событий неименованных каналов, kqread, звука и сокетов, а также механизм BPF. Системные вызовы poll, select, ppoll и pselect переписаны и теперь реализованы поверх kqueue. Избавлены от блокировок системные вызовы kevent, getsockname, getpeername, accept и accept4. Добавлен интерфейс ядра для атомарных функций load и store, позволяющих использовать типы int и long в элементах структур, к которым применяется подсчёт ссылок.
- Реализация фреймворка drm (Direct Rendering Manager) синхронизирована с ядром Linux 5.15.26 (в прошлом выпуске - 5.10.65). В драйвер inteldrm добавлена поддержка чипов Intel на базе микроархитектур Elkhart Lake, Jasper Lake и Rocket Lake. В драйвере amdgpu реализована поддержка APU/GPU Van Gogh, Rembrandt "Yellow Carp" Ryzen 6000, Navi 22 "Navy Flounder", Navi 23 "Dimgrey Cavefish" и Navi 24 "Beige Goby".
- В библиотеке FreeType включён субпиксельный рендеринг шрифтов.
- Добавлена утилита realpath для вывода абсолютного пути к файлу.
- В утилиту rcctl добавлена команда "ls rogue" для показа фоновых процессов, которые запущены, но не включены в rc.conf.local.
- BPFtrace реализована поддержка переменных для проверок. В btrace добавлены скрипты kprofile.bt для профилирования стека ядра и runqlat.bt для выявления задержек в работе планировщика.
- В libc добавлена поддержка RFC6840, определяющего поддержку флага AD и настройки 'trust-ad' для DNSSEC.
- В apm и apmd включён показ прогнозируемого времени перезарядки аккумулятора.
- Предоставлена возможность хранения БД capability в /etc/login.conf.d для оптимизации добавления из пакетов собственных классов учётных записей.
- В malloc обеспечено кэширование регионов памяти размером от 128k до 2M.
- В архиваторе pax реализована поддержка расширенных заголовков с данными mtime, atime и ctime.
- В утилиты gzip и gunzip добавлена опция "-k" для сохранения исходного файла.
- В утилиту openrsync добавлены опции: "--compare-dest" для проверки наличия файлов в дополнительных каталогах; "--max-size" и "--min-size" для ограничения размера файлов.
- Добавлена команда seq для вывода последовательностей чисел.
- Из FreeBSD 13 перенесена универсальная программная реализация тригонометрических функций (реализации на ассемблере * для x86 отключены).
- Из FreeBSD перенесена реализация функций lrint, lrintf, llrint и llrintf (ранее применялась реализация из NetBSD).
- В утилите fdisk отмечены многочисленные изменения и исправления, связанные с работой с дисковыми разделами.
- Добавлена поддержка обновленного оборудования, в том числе контроллера Intel PCH GPIO (для платформ Cannon Lake H и Tiger Lake H), NXP PCF85063A/TP RTC, Synopsys Designware UART, Intel 2.5Gb Ethernet, SIMCom SIM7600, RTL8156B, MediaTek MT7601U USB wifi, BCM4387 wifi.
- В состав включены перелицензированные прошивки для беспроводных чипов Realtek, позволяющие использовать драйверы rsu, rtwn и urtwn без ручной загрузки прошивок.
- В драйверах ixl (Intel Ethernet 700), ix (Intel 82598/82599/X540/X550) и aq (Aquantia AQC1xx) включена поддержка аппаратной обработки VLAN-тегов и вычисления/проверки контрольных сумм для IPv4, TCP4/6 и UDP4/6.
- Добавлен звуковой драйвер для чипов Intel Jasper Lake. Добавлена поддержка игрового контроллера XBox One.
- В беспроводном стеке IEEE 802.11 реализована поддержка каналов 40MHz для режима 802.11n и начальная поддержка стандарта 802.11ac (VHT). Для драйверов добавлен опциональный обработчик фонового сканирования. При выборе точки доступа приоритетными теперь являются точки с каналами 5GHz, а уже потом выбираются точки с каналами 2GHz.
- Переписана реализация драйвера vxlan, который теперь работает независимо от подсистемы bridge.
- В инсталляторе переработана логика вызова утилиты pkg_add для сокращения интенсивности перемещений файлов в процессе обновления. В файле install.site документирован процесс настройки установки и обновления. Для всех архитектур в состав добавлены прошивки, распространение которых разрешено в сторонних продуктах. Для установки проприетарных прошивок, доступных на установочном носителе, задействована утилита fw_update.
- В xterm из соображений безопасности отключено по умолчанию отслеживание мыши.
- В usbhidctl и usbhidaction обеспечена изоляция доступа к файловой системе при помощи системного вызова unveil.
- В dhcpd по умолчанию обеспечено прикрепление и к сетевым интерфейсам, находящимся в неактивном состоянии (down) для того, чтобы обеспечить приём пакетов сразу после того, как сетевой интерфейс будет активирован.
- В OpenSMTPD (smtpd) включена по умолчанию проверка TLS для исходящих подключений "smtps://" и "smtp+tls://".
- В httpd реализована проверка версии протокола, добавлена возможность определения собственных файлов с текстами ошибок и оптимизирована обработка данных в сжатом виде, в том числе в httpd.conf добавлена опция gzip-static для доставки предварительно сжатых файлов с выставлением флага gzip в заголовке content-encoding.
- В IPsec в параметре proto из iked.conf разрешено указание списка протоколов. В утилиту ikectl добавлена команда "show certinfo" для показа заслуживающих доверия удостоверяющих центров и сертификатов. В iked оптимизирована обработка фрагментированных сообщений.
- В rpki-client добавлена поддержка проверки отрытых ключей BGPsec Router и оптимизирована проверка сертификатов X509.
- Добавлен кэш верифицированных файлов. Оптимизирована совместимость с RFC 6488.
- bgpd добавлен параметр "port", который можно использовать в секциях "listen on" и "neighbor" для привязки к нестандартному номеру сетевого порта. Проведён рефакторинг кода для работы с RIB (Routing Information Base), выполненный с оглядкой на обеспечение в будущем поддержки multipath.
- В консольном оконном менеджере tmux ("terminal multiplexer") расширены возможности для цветного вывода. Добавлены команды pane-border-format, cursor-colour и cursor-style.
- В LibreSSL выполнено портирование из OpenSSL поддержки RFC 3779 (расширения X.509 для IP-адресов и автономных систем) и механизма Certificate Transparency (независимого публичного лога всех выданных и отозванных сертификатов, который даёт возможность проводить независимый аудит всех изменений и действий удостоверяющих центров, и позволяет сразу отслеживать любые попытки скрытого создания поддельных записей). Оптимизирована совместимость с OpenSSL 1.1 и задействованы идентичные с OpenSSL имена шифров для TLSv1.3. Многие функции переведены на использование calloc(). В libssl и libcrypto добавлена большая порция вызовов.
- Обновлён пакет OpenSSH. Подробный обзор улучшений можно посмотреть в обзорах OpenSSH 8.9 и OpenSSH 9.0. Утилита scp переведена по умолчанию на использование SFTP вместо устаревшего протокола SCP/RCP.
- Число портов для архитектуры AMD64 составило 11301 (было 11325), для aarch64 - 11081 (было 11034), для i386 - 10136 (было 10248). Среди версий приложений в портах:
- Asterisk 16.25.1, 18.11.1 и 19.3.1
- Audacity 2.4.2
- CMake 3.20.3
- Chromium 100.0.4896.75
- Emacs 27.2
- FFmpeg 4.4.1
- GCC 8.4.0 и 11.2.0
- GNOME 41.5
- Go 1.17.7
- JDK 8u322, 11.0.14 и 17.0.2
- KDE Applications 21.12.2
- KDE Frameworks 5.91.0
- Krita 5.0.2
- LLVM/Clang 13.0.0
- LibreOffice 7.3.2.2
- Lua 5.1.5, 5.2.4 и 5.3.6
- MariaDB 10.6.7
- Mono 6.12.0.122
- Firefox 99.0 и ESR 91.8.0
- Thunderbird 91.8.0
- Mutt 2.2.2 и NeoMutt 20211029
- Node.js 16.14.2
- OpenLDAP 2.4.59
- PHP 7.4.28, 8.0.17 и 8.1.4
- Postfix 3.5.14
- PostgreSQL 14.2
- Python 2.7.18, 3.8.13, 3.9.12 и 3.10.4
- Qt 5.15.2 и 6.0.4
- R 4.1.2
- Ruby 2.7.5, 3.0.3 и 3.1.1
- Rust 1.59.0
- SQLite 2.8.17 и 3.38.2
- Shotcut 21.10.31
- Sudo 1.9.10
- Suricata 6.0.4
- Tcl/Tk 8.5.19 и 8.6.8
- TeX Live 2021
- Vim 8.2.4600 и Neovim 0.6.1
- Xfce 4.16
- Обновлены компоненты от сторонних разработчиков, входящие в состав OpenBSD 7.1:
- Графический стек Xenocara на базе X.Org 7.7 с xserver 1.21.1 + патчи, freetype 2.11.0, fontconfig 2.12.94, Mesa 21.3.7, xterm 369, xkeyboard-config 2.20, fonttosfnt 1.2.2.
- LLVM/Clang 13.0.0 (+ патчи)
- GCC 4.2.1 (+ патчи) и 3.3.6 (+ патчи)
- Perl 5.32.1 (+ патчи)
- NSD 4.4.0
- Unbound 1.15.0
- Ncurses 5.7
- Binutils 2.17 (+ патчи)
- Gdb 6.3 (+ патч )
- Awk 12.10.2021
- Expat 2.4.7[2]
Обнаружение уязвимости, приводящей к переполнению буфера
В фоновом процессе slaacd, отвечающем в OpenBSD за автоконфигурацию адресов IPv6 (IPv6 Stateless Address Autoconfiguration, RFC 4862), выявлена уязвимость, приводящая к переполнению буфера при получении специально оформленного анонса маршрутизатора IPv6 (RA, Router Advertisement). Об этом стало известно 25 марта 2022 года.
Изначально функциональность автонастройки адресов IPv6 была реализована на уровне ядра, но начиная с OpenBSD 6.2 была вынесена в отдельный непривилегированный процесс slaacd. Указанный процесс отвечает за отправку сообщений RS (Router Solicitation) и разбора ответов RA (Router Advertisement) с информацией о маршрутизаторе и параметрах сетевого подключения.
В феврале в slaacd была исправлена ошибка, приводящая к аварийному завершению в случае указания 7 серверов в списке RDNSS (Recursive DNS Servers). Подобная оплошность привлекла внимание независимых исследователей, которые попытались изучить код slaacd на предмет других ошибок, возникающих при разборе полей в сообщениях RA. Анализ показал, что в коде имеется ещё одна проблема, проявляющаяся при обработке поля DNSSL (DNS Search List), включающего списков доменных имён и шаблонов хостов для DNS.Метавселенная ВДНХ
Каждое имя в списке DNSSL кодируется с использованием разделителя с нулевым кодом и промежуточных однобайтовых меток, определяющих размер следом идущих данных. Уязвимость вызвана тем, что в коде разбора списка поле с размером копируется в переменную со знаковым типом integer ("len = data[pos]"). Соответственно, в случае указания в поле значения с выставленным старшим битом, это значение будет воспринято в условном операторе как отрицательное число и проверка на максимальный допустимый размер ("if (len > 63 || len + pos + 1 > datalen) {") не сработает, что приведёт к выполнению вызова memcpy с параметром, размер копируемых данных при котором превышает размер буфера[3].
Выпуск переносимой редакции пакета LibreSSL 3.5.0
4 марта 2022 года стало известно о выпуске проектом OpenBSD переносимой редакции пакета LibreSSL 3.5.0, в рамках которого развивается форк OpenSSL, нацеленный на обеспечение более высокого уровня безопасности. Подробнее здесь.
2021: OpenBSD 7.0 с 64-битным портом RISC-V
14 октября 2021 года состоялся релиз OpenBSD 7.0 с 64-битным портом RISC-V и улучшенной поддержкой процессоров производства Apple.
Данная версия содержит многочисленные улучшения:
- Добавлена поддержка 64-битной системы RISC-V с начальной платформой riscv64;
- Улучшена стабильность работы на платформе ARM64 благодаря обновленным драйверам процессора Apple M1 для USB, GPIO, SPMI и хранилища NVMe. Также в OpenBSD 7.0 добавили возможность установки на диск с GPT;
- На AMD64 отключили компилятор base-gcc;
- Улучшена стабильность SMP;
- В обновленной версии больше нет целевых платформ OpenBSD/SGI;
- Код ядра DRM теперь поддерживает Linux 5.10.65 и улучшена совместимость с Tiger Lake;
- Добавлена поддержка AMD GPU DRM для Navi 12, Navi 21, Arcturus и Cezanne;
- Обновления паков LLVM Clang 11.1, Go 1.17, GCC 8.4.0/11.2, KDE Applications 21.08.1, Xfce 4.16[4].
2019: OpenBSD 6.5
Во-первых, в OpenBSD 6.5 появилась переносимая версия bgpd, адаптированная для работы в других операционных системах. Во-вторых, Xenocara и tcpdump теперь лишены привилегий суперпользователя, а компоновщиком по умолчанию для amd64 и i386 стал LLD. Для архитектуры mips64 добавлена поддержка сборки с использованием транслятора Clang[5].
В свою очередь, Clang получил усовершенствованные механизмы блокировки атак с использованием возвратно-ориентированного программирования (ROP). Кроме того, в Clang была улучшена производительность и безопасность при включенном механизме безопасности RETGUARD. Этот механизм предназначен для усложнения процесса выполнения эксплоитов, созданных с помощью заимствованных частей кода и ROP. RETGUARD теперь также используется в качестве защиты стека на amd64 и arm64.
Среди других существенных изменений в OpenBSD 6.5 можно также отметить усовершенствование поддержки MPLS, усиление защиты от кибератак с использованием ROP, а также добавление рекурсивного DNS-сервера unwind и собственной реализации утилиты rsync. Ядро OpenBSD получило детектор неопределенного поведения.
Помимо прочего, новая версия ОС получила обновление для почтового сервера OpenSMTPD. В частности, в smtpd.conf теперь присутствует новый критерий сопоставлений "from rdns". С его помощью сеансы могут выбираться на основе резолвинга обратного DNS.
2017: Функция рандомизации ядра
В июле 2017 года появилась информация о том, что разработчики OpenBSD тестируют новую функцию операционной системы, которая позволит радикально повысить ее защищенность от кибератак - систему рандомизации ядра.
Технология, получившая название KARL (Kernel Address Randomized Link - Рандомизированные связи адресов ядра), подразумевает, что при каждой перезагрузке или каждом обновлении в случайном порядке формируется новый двоичный файл ядра на основе подключения объектных модулей и runtime-компонентов. В результате указатели между функциями и данными ядра каждый раз оказываются новыми, а значит, новым оказывается и само ядро.
Технологию KARL разрабатывает сам Тео де Раадт, основатель проекта OpenBSD. KARL существенным образом отличается от технологии ASLR (рандомизации адресного пространства), применяемого во многих современных операционных системах в качестве одного из средств защиты от вредоносного ПО. При использовании ASLR меняются адресные пространства памяти, так что, например, эксплойты, нацеленные на определенные адреса в оперативной памяти машины, не могут их найти и, соответственно, оказываются бессильны.
В случае с KARL каждый раз меняется структура всего ядра, а не только памяти. Эта функция разрабатывается в течение последних двух месяцев, и уже доступна в тестовых релизах OpenBSD 6.1, говорится в сообщении от 4 июля 2017 года.
В Linux 4.12 с прошлой недели активна по умолчанию система рандомизации адресного пространства ядра (Kernel Address Space Layout Randomization - KASLR). Аналогичная система давно уже применяется в Windows.
Ключевая разница между KARL и KASLR заключается в том, что в первом случае в одну и ту же область памяти загружаются разные версии двоичного файла ядра, а во-втором - одно и то же ядро загружается в случайную область памяти.
KARL выглядит более эффективным средством защиты ядра, чем даже KASRL, - считает Георгий Лагода, генеральный директор компании SEC Consult Services. - В этом случае все ключевые функции ОС рандомизируются и киберзлоумышленникам и вредоносному ПО окажется намного сложнее определить адрес интересующей их "мишени" - он будет каждый раз разным. |
Будет ли методика KARL реализована в будущих версиях Linux или Windows, пока неизвестно. На данный момент она не применяется нигде, кроме OpenBSD.
2016
OpenBSD 6.0
1 сентября 2016 вышло обновление свободной ОС OpenBSD 6.0.
В этой версии OpenBSD улучшена поддержка ARM7, прекращена поддержка архитектуры VAX, много внимания уделено драйверам и чистке кода. Улучшения затронули сетевой стек, безопасность (W^X включён по умолчанию, устранены systrace и поддержка эмуляции Linux)[6]. В рамках работы над Unicode UTF-8 включён в XTerm по умолчанию. Пакеты OpenSMTPD, OpenSSH, OpenNTPD и LibreSSL, поддержкой которых также занимается проект OpenBSD, получили обновления.
Релиз OpenBSD 5.9
29 марта 2016 года вышел релиз операционной системы OpenBSD 5.9. Размер полного установочного ISO-образа базовой системы OpenBSD 5.9 213 Мб[7].
В блоге разработчики сообщили, что этот релиз - последний OpenBSD с поддержкой архитектуры VAX. Нехватка рабочего оборудования не позволила подготовить полноценный релиз, поэтому несколько недель назад было принято решение отказаться от этой архитектуры, не поддерживающей разделяемые библиотеки. Следующая по этой же причине вероятно может стать 32-битная архитектура SPARC.
Основные изменения в релизе
- Реализован новый механизм изоляции системных вызовов Pledge, который отличается максимальным упрощением применения политик безопасности. Pledge требует внесения в приложения специальных аннотаций, но вместо детализации на уровне отдельных системных вызовов, манипулирует классами доступа. После сборки и запуска модифицированного приложения, ядро берёт на себя работу по контролю соблюдения заданных правил. В настоящее время на защиту при помощи Pledge переведено около 70% приложений базовой системы (453 из 707);
- Поддержка загрузки на системах с UEFI;
- Значительное улучшение поддержки таблиц разделов GPT (GUID Partition Table). В инсталляторе добавлена поддержка установки на разделы GPT. В softraid добавлена возможность использования разделов GPT. Диски с размером сектора не равным 512 по умолчанию разбиваются с использованием GPT;
- Новая реализация утилиты less, основанная на форке, поддерживаемом Гарреттом Д'Аморе (Garrett D'Amore), лидером проекта Illumos. Форк отличается от оригинального less чисткой кодовой базы, переходом с termcap на terminfo, более строгой совместимостью с POSIX и оптимизацией для использования на системах POSIX SUSv3.
- В состав включены компоненты Xen domU, обеспечивающие работу в роли гостевой системы под управлением гипервизора Xen. Поддержка Xen включена только для архитектуры AMD64 и позволяет использовать OpenBSD в облачных системах на базе Xen без необходимости пересборки из исходных текстов. В состав включены драйверы viocon (консоль на базе virtio), xen (инициализация Xen domU и поддержка режима PVHVM), xspd (XenSource Platform Device), xnf (паравиртуализованный сетевой интерфейс);
- Сетевой стек на очередной шаг приблизился к полному избавлению от глобальной блокировки, мешающей распараллеливанию операций на многоядерных системах. Обработка входящих сетевых пакетов теперь производится в несколько параллельных потоков. Распараллеливание добавлено для интерфейсов carp(4), trunk(4) и vlan(4), обработки Ethernet-кадров, ARP и MPLS, сопоставления фильтров BPF, Rx и Tx очередей драйверов ix(4), myx(4), em(4), bge(4), bnx(4), vmx(4), gem(4), re(4) и cas(4);
- Новое псевдо-устройство pair для создания связанных виртуальных Ethernet-интерфейсов;
- Новый демон маршрутизации eigrpd с реализацией протокола EIGRP (Enhanced Interior Gateway Routing Protocol);
- В стек IPsec для протокола ESP добавлена поддержка режима аутентификацированного шифрования Chacha20-Poly1305;
- Удалена поддержка всех локалей, за исключением UTF-8 и С. Однобайтовые локали, такие как ISO-8859-1, CP1251 и KOI-8, теперь не входят в состав базовой системы. Данный шаг является компромисом, позволившим обеспечить полноценную и качественную поддержку универсальной кодировки UTF-8, ценой исключения устаревших однобайтовых кодировок. Локаль "C" реализована путём эмуляции через UTF-8. Поддержка UTF-8 добавлена в утилиты calendar(1), colrm(1), cut(1), fmt(1), ls(1), ps(1), rs(1), ul(1), uniq(1) и wc(1).
- В libc проведена большая чистка, удалено более 100 внутренних и устаревших интерфейсов, удалена поддержка NLS (Native language support). Для вызова внутренних функций в libc задействованы локальные ссылки, что привело к ускорению связывания;
- В адресном пространстве ядра на системах i386 по умолчанию активирован режим W^X при котором страницы памяти не могут быть одновременно доступны на запись и исполнение;
- Из ядра Linux 3.14.52 портирован драйвер inteldrm с начальной поддержкой GPU Intel Broadwell и Bay Trail;
- Новые драйверы: asmc (Apple System Management Controller), pchtemp(датчики температуры Intel (X99, C610, 9. 100), uonerng (Moonbase Otago OneRNG), dwiic (Synopsys DesignWare I2C controller), ikbd, ims и imt (клавиатуры, мыши и тачпады HID-over-i2c), efifb (EFI frame buffer);
- В драйверы iwm и iwn добавлена поддержка WiFi 802.11n;
- Обновлена версия почтового сервера OpenSMTPD 5.9.1, в котором проведена работа по усилению безопасности, добавлена экспериментальная поддержка API для внешних фильтров, размещённых в портах, обеспечена установка заголовка Message-Id;
- Обновлена реализация NTP-сервера OpenNTPD 5.9;
- Обновлён пакет OpenSSH 7.2, подробный обзор улучшений можно посмотреть здесь;
- Обновлён пакет LibreSSL 2.3.2, подробный обзор улучшений можно посмотреть в анонсах выпусков 2.3.0, 2.3.1 и 2.3.2;
- Число портов для архитектуры AMD64 составило 9295, для i386 - 9290. Из находящихся в портах приложений, отмечены:
- Chromium 48.0.2564.116
- Emacs 21.4, 24.5
- GCC 4.9.3
- GNOME 3.18.2
- Go 1.5.3
- JDK 7u80 и 8u72
- KDE 3.5.10 и 4.14.3
- LLVM/Clang 3.5 (20140228)
- LibreOffice 5.0.4.2
- MariaDB 10.0.23
- Mono 4.2.1.102
- Mozilla Firefox 38.6.1esr и 44.0.2
- Mozilla Thunderbird 38.6.0
- Node.js 4.3.0
- OpenLDAP 2.3.43 и 2.4.43
- PHP 5.4.45, 5.5.32 и 5.6.18
- Postfix 3.0.3
- PostgreSQL 9.4.6
- Python 2.7.11, 3.4.4 и 3.5.1
- R 3.2.3
- Ruby 1.8.7.374, 2.0.0.648, 2.1.8, 2.2.4 и 2.3.0
- Rust 1.6.0
- Sendmail 8.15.2
- Sudo 1.8.15
- Tcl/Tk 8.5.18 и 8.6.4
- Vim 7.4.900
- Xfce 4.12
- Компоненты от сторонних разработчиков, входящие в состав OpenBSD 5.9:
- Графический стек Xenocara на базе X.Org server 1.17.4 с патчами, freetype 2.6.2, fontconfig 2.11.1, Mesa 11.0.9, xterm 322, xkeyboard-config 2.17 и т.п.)
- Gcc 4.2.1 (c патчами) и 3.3.6 (c патчами)
- Perl 5.20.2 (c патчами)
- SQLite 3.9.2 (c патчами)
- NSD 4.1.7
- Unbound 1.5.7
- Ncurses 5.7
- Binutils 2.17 (c патчами)
- Gdb 6.3 (c патчами)
- Awk в версии от 10 августа 2011 г.
Включена поддержка Xen
14 января 2016 года сообщество разработчиков OpenBSD сообщило о подключении поддержки гипервизора Xen в OpenBSD для архитектуры AMD 64[8].
В действующей ветке OpenBSD включены компоненты, обеспечивающие работу в роли гостевой системы под управлением гипервизора Xen. Поддержка Xen включена только для архитектуры AMD 64 и позволяет использовать OpenBSD в облачных системах на базе Xen без необходимости пересборки из исходных текстов.
2015: Вышел релиз версии OpenBSD 5.7
1 мая 2015 года вышел релиз операционной системы OpenBSD 5.7. При развитии OpenBSD внимание уделяется переносимости (поддерживается 21 аппаратная платформа), стандартизации, корректной работе, активной безопасности и интегрированным криптографическим средствам. Размер полного установочного ISO-образа базовой системы 208 Мб[9].
Кроме непосредственно операционной системы проект 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-сервер.
Основные дополнения
- Усиление безопасности:
- К адресному пространству ядра применён режим защиты памяти W^X (Write XOR Execute), при котором страницы памяти не могут быть доступными и на запись и на исполнение кода (или запись или исполнение, но не одновременно);
- Удалён код для поддержки загружаемых модулей ядра и procfs;
- Проведён обстоятельный аудит подсистем на предмет перехода на использование системного вызова reallocarray, позволяющего выделить память для нескольких отличающихся по размеру объектов без дополнительных затрат на очистку памяти, но с сохранением средств борьбы с целочисленными переполнениями;
- Проведена работа по замене вызовов select на poll;
- В качестве первого шага для минимизации возможности совершения атаки на раздел /var, директория /var/tmp преобразована в символическую ссылку на /tmp;
- В реализацию memcpy добавлена защита от перекрытия областей памяти, если факт подобного перекрытия выявлен, то программа принудительно завершается с выводом соответствующего предупреждения в syslog. При необходимости перекрытия областей следует использовать memmove;
- Вызовы rand, random, drand48, lrand48, mrand48 и srand48 переведены на использование генератора arc4random. Для получения детерминированных случайных чисел введены новые функции srand_deterministic, srandom_deterministic, seed48_deterministic и lcong48_deterministic;
- При возврате из спящего и ждущего режимов, при пробуждении виртуальных машин, задействованы различные методы для сброса генератора случайных чисел;
- Все архитектуры переведены на статический формат PIE, т.е. все статически собранные исполняемые файлы в /bin и /sbin теперь содержат случайным образом расположенные сегменты "text";
- Код ядра и ssh для работы с AES синхронизирован с кодом из OpenSSL/LibreSSL.
В утилите passwd прекращена поддержка всех методов хэширования, кроме blowfish;
- В генераторе случайных чисел и при генерации начальных номеров последовательностей в TCP вместо MD5 задействован SHA512;
- Добавлен драйвер xhci, обеспечивающий поддержку устройств с интерфейсом USB 3.0, соответствующих спецификации XHCI (eXtensible Host Controller Interface). Значительно расширена поддержка сетевых устройств, в том числе представлен новый драйвер iwm для беспроводных карт Intel 7260, 7265 и 3160;
- Для управления фоновыми процессами и системными сервисами представлена новая утилита rcctl;
- Из базовой системы удалены nginx и sendmail, вместо которых предлагается http-сервер собственной разработки и OpenSMTPD. Прекращена поддержка DNS-сервера BIND, вместо которого рекомендуется использовать nsd и unbound. Nginx, bind и sendmail могут быть установлены из портов.
- Улучшения в сетевом стеке: Большинство операций с IP-адресами переведены на таблицы маршрутизации, заменившие собой RB-деревья и списки адресов IPv4. Для хэширования в пакетном фильтре PF, сетевых мостах, trunk-интерфейсах и PCB задействован алгоритм SipHash. Настройка CARP теперь требует явного создания родительского интерфейса carpdev. Слой mbuf избавлен от глобальной блокировки и признан mpsafe. Представлены новые структуры mbuf_list и mbuf_queue, а также API для работы с ними;
- Улучшения в инсталляторе: Наборы etc и xetc, в том числе включающие файлы rc и rc.conf, теперь не поставляются отдельно, а включены в состав наборов base и xbase. Улучшено определение файла со сценарием автоматизированной установки, если присутствуют файл /auto_install.conf или /auto_upgrade.conf инсталлятор теперь сразу запускает автоматический режим.
- Системы Syslogd и inetd переведены с select на libevent. В Syslogd добавлена поддержка отправки и приёма сообщений по UDP, TCP и TLS, при том, что для TCP и TLS реализованы средства автоматического восстановления соединения после разрыва канала связи;
- В tftp снято ограничение на размер принимаемых и отправляемых файлов, которые ранее не могли превышать 65536 байт;
- В реализации ряда функций libc для архитектуры amd64 задействованы быстрые ассемблерные оптимизации;
- Расширены возможности http-сервера от проекта OpenBSD. Прекращена поддержка SSLv2/3, улучшена поддержка ECDHE/DHE в TLS. Упрощено создание виртуальных хостов на основе определения псевдонимов по IP и именам хостов. Добавлена поддержка basic-аутентификации, определения своих кодов возврата, перенаправления и макросов для URL. Добавлена опция "root strip" для чистки начала пути для CGI-скриптов. Обеспечена возможность создания лога в директории, отличной от /var/www/logs. Реализация FastCGI доведена до совместимости со многими известными web-приложениями.
- В новой версии почтового сервера OpenSMTPD прекращена поддержка SSLv3, добавлена поддержка новых парсеров сообщений и заголовков, добавлена опция append-domain, обеспечена возможность отправки сообщений локальному пользователю без определения домена.
- Обновлён пакет OpenSSH 6.8, подробный обзор улучшений можно посмотреть здесь;
- Обновлён пакет LibreSSL 2.1.5, подробный обзор улучшений можно посмотреть в анонсах выпусков 2.1.0, 2.1.2, 2.1.4 и 2.1.5.
- Число портов превысило 9000 (полгода назад было 8800). Из находящихся в портах приложений, отмечены:
- Chromium 40.0.2214.115
- Emacs 21.4 и 24.4
- GCC 4.8.4 и 4.9.2
- GHC 7.8.4
- GNOME 3.14.2
- Go 1.4.1
- Groff 1.22.3
- JDK 1.7.0.71
- KDE 3.5.10 и 4.14.3
- LLVM/Clang 3.5 (20140228)
- LibreOffice 4.3.5.2
- MariaDB 10.0.16
- Mono 3.12.0
- Mozilla Firefox 31.4.0esr и 35.0.1
- Mozilla Thunderbird 31.4.0
- Node.js 0.10.35
- OpenLDAP 2.3.43 и 2.4.40
- PHP 5.3.29, 5.4.38, 5.5.22 и 5.6.5
- Postfix 2.11.4
- PostgreSQL 9.4.1
- Python 2.7.9 и 3.4.2
- R 3.1.2
- Ruby 1.8.7.374, 1.9.3.551, 2.0.0.598, 2.1.5 и 2.2.0
- Sendmail 8.15.1
- Tcl/Tk 8.5.16 и 8.6.2
- TeX Live 2013
- Vim 7.4.475
- Xfce 4.10
Компоненты от сторонних разработчиков, входящие в состав OpenBSD 5.7:
- Xenocara, основанная на X.Org 7.7 с xserver 1.16.4 + patches, freetype 2.5.5, fontconfig 2.11.1, Mesa 10.2.9, xterm 314, xkeyboard-config 2.13;
- GCC 4.2.1 (с патчами) и 3.3.6 (с патчами);
- Perl 5.20.1 (с патчами)
- SQLite 3.8.6 (с патчами)
- Unbound 1.5.2
- NSD 4.1.1
- Sudo 1.7.2p8
- Ncurses 5.7
- Binutils 2.15 (с патчами)
- Gdb 6.3 (с патчами)
- Less 458 (с патчами)
- Awk в версии от 10 августа 2011 г.
2011: OpenBSD 5.0
1 ноября 2011 года вышла версия 5.0 операционной системы OpenBSD, позиционирующейся как наиболее безопасная среди существующих ОС. В новой версии системы добавлены: поддержка свыше 4 Гб оперативной памяти во всех возможных архитектурах; ACPI-драйвер для ноутбуков Toshiba acpitoshiba(4); утилита fw_update(1) для установки и обновления закрытых прошивок, исполняющаяся, в том числе при первом запуске установленной системы; поддержка Wake on LAN сетевой инфраструктурой системы и драйверами xl(4), re(4) и vr(4); полная поддержка так называемых Disklabel Unique Identifiers (DUID), позволяющая обращаться к разделам без указания имён устройств.
В базовую систему включен ранее вышедший OpenSSH 5.9 (открытая безопасная оболочка — набор программ, обеспечивающих шифрование сеансов связи по компьютерным сетям с использованием протокола SSH). Как и ранее, для архитектур amd64, i386, macppc и sparc64 поддерживается загрузка и установка ОС с CD. Для системы подготовлено более 7200 портов, среди которых KDE 3.5.10, Gnome 2.32.2, Xfce 4.8.0, LibreOffice 3.4.1.3, Chromium 12.0.742.122 и др. Поставляемая сборка Xorg под названием Xenocara базируется на X.Org 7.6 (xserver 1.9 с патчами, freetype 2.4.5, fontconfig 2.8.0, Mesa 7.8.2, xterm 270, xkeyboard-config 2.3 и др.). Система доступна для загрузки на официальных зеркалах, в том числе на российском.
Примечания
- ↑ Выпуск OpenBSD 7.3
- ↑ Выпуск OpenBSD 7.1
- ↑ Удалённая уязвимость в IPv6-стеке OpenBSD
- ↑ [ https://www.securitylab.ru/news/525678.php Вышла OpenBSD 7.0]
- ↑ Вышла новая версия OpenBSD 6.5
- ↑ OpenBSD 6.0 — новый релиз свободной операционной системы
- ↑ Досрочно выпущен OpenBSD 5.9
- ↑ В OpenBSD включена поддержка Xen
- ↑ Релиз операционной системы OpenBSD 5.7
Подрядчики-лидеры по количеству проектов
НППКТ (17)
Almi Partner, Алми партнер (ГК Алми) (7)
РусБИТех-Астра (ГК \"Астра\")
Кортис (4)
Крок (4)
Другие (46)
НППКТ (23)
Кортис (7)
Ред Софт (Red Soft) (5)
ОТР-БИТ (ОТР - безопасность информационных технологий) (2)
Базальт СПО (BaseALT) ранее ALT Linux (1)
Другие (8)
Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров
Microsoft (80, 144)
Ред Софт (Red Soft) (3, 66)
РусБИТех-Астра (ГК Астра) (3, 45)
НППКТ (2, 41)
ИВК (3, 27)
Другие (302, 133)
НППКТ (1, 17)
РусБИТех-Астра (ГК Астра) (2, 9)
Ред Софт (Red Soft) (1, 8)
Almi Partner, Алми партнер (ГК Алми) (1, 7)
Microsoft (2, 6)
Другие (11, 19)
НППКТ (1, 23)
Ред Софт (Red Soft) (1, 13)
ИВК (2, 4)
Базальт СПО (BaseALT) ранее ALT Linux (3, 3)
РусБИТех-Астра (ГК Астра) (2, 3)
Другие (0, 0)
Ред Софт (Red Soft) (1, 6)
ИВК (1, 2)
Базальт СПО (BaseALT) ранее ALT Linux (1, 2)
Атлант (ГК Applite) (1, 1)
Microsoft (1, 1)
Другие (0, 0)
Ред Софт (Red Soft) (1, 9)
Synology (SLMP PTE) (1, 1)
Jolla (Sailfish Holding) (1, 1)
Открытая мобильная платформа (ОМП) (1, 1)
Другие (0, 0)
Распределение систем по количеству проектов, не включая партнерские решения
Ред ОС (Red OS) - 61
Microsoft Windows - 60
НППКТ: ОСнова (Операционная система общего назначения, ОС ОН) - 41
Astra Linux Common Edition - 27
Astra Linux Special Edition - 21
Другие 197
НППКТ: ОСнова (Операционная система общего назначения, ОС ОН) - 17
Ред ОС (Red OS) - 8
AlterOS - 7
Astra Linux Common Edition - 7
Microsoft Windows - 5
Другие 18
НППКТ: ОСнова (Операционная система общего назначения, ОС ОН) - 23
Ред ОС (Red OS) - 13
Astra Linux Common Edition - 2
Альт Рабочая станция - 2
ОС Альт (ранее Альт Линукс (ALT Linux) - 2
Другие 2
Ред ОС (Red OS) - 6
ОС Альт (ранее Альт Линукс (ALT Linux) - 2
Windows Server 2019 - 1
Атлант ОС - 1
Другие 0