Обзор первого выпуска LibreSSL
Разработчики проекта OpenBSD представили первый выпуск LibreSSL (форк OpenSSL), нацеленный на обеспечение более высокого уровня безопасности. Из особенностей LibreSSL можно отметить ориентацию на качественную поддержку протоколов SSL/TLS с удалением излишней функциональности и проведением значительной чистки и переработки кодовой базы. При разработке LibreSSL также проводится работа по повышению читаемости кода, добавлению дополнительных средств защиты и устранению ошибок.
Переносимая версия LibreSSL пригодна для использования в различных операционных системах и не ограничивается работой в окружении OpenBSD. Для обеспечения переносимости используется та же техника, что и для других проектов из состава OpenBSD: основной исходный код по возможности не трогается, а недостающие компоненты добавляются в рамках отдельного подпроекта, LibreSSL Portable. Это позволяет сохранять читабельность кода, что в свою очередь уменьшает издержки на его поддержку и вероятность пропуска ошибок.
Данный релиз предназначен для получения обратной связи от сообщества. Работа пакета протестирована в OpenBSD, Linux, Solaris, OS X и FreeBSD. По мере появления заинтересованности количество поддерживаемых платформ будет увеличиваться. Интеграция LibreSSL в состав OpenBSD ожидается в ближайшем выпуске 5.6, который намечен на 1 ноября.
Среди внесённых изменений:
- Удалена поддержка всех движков шифрования (кроме padlock и aesni) и слабых дополнений для получения энтропии.
- Прекращена поддержка устаревших и малоиспользуемых платформ, в том числе Mac OS, NetWare, OS/2 и VMS, прекращена поддержка big-endian для i386 и amd64 (они всегда little-endian).
- Проведена чистка кода от некоторых компонентов, специфичных для платформы Windows. Например, удалён код OPENSSL_isservice и других функций для учёта особенностей не POSIX-систем.
- Удалён весь код, связанный с поддержкой SSL-расширения heartbeat, ошибка в котором привела к катастрофической уязвимости.
- Прекращено использование дополнительных обёрток для различных потенциально небезопасных функций (snprintf, opendir, функции работы с сокетами и т.п.).
- Вызовы strlcat/strlcpy замены на snprintf, связка malloc+memset заменена на calloc.
- Исправлена серия ошибок распределения памяти (например, в некоторых местах почищен двойной вызов free).
- Внесена серия исправлений, связанных с решением проблемы 2038 года.
- Объявлено излишним и удалено собственное кэширование результатов DNS-запросов.
- Удалена поддержка bdes;
- Удалены неиспользуемые ssl-утилиты на Perl;
- Удалена поддержка FIPS API, так как навязываемые сертификацией требования противоречат целям свободного проекта;
По горячим следам выпущен корректирующий релиз LibreSSL 2.0.1, в котором учтены все полученные замечания. В том числе добавлены опции OPENSSLDIR и ENGINESDIR, обеспечена поддержка pkg-config, решены некоторые проблемы с переносимостью (решены проблемы с жестко зашитыми опциями компилятора, такими как «-Werror»), произведена синхронизация со свежей кодовой базой из состава OpenBSD. Релиз на этот раз подписан, посредством разработанной в OpenBSD утилиты signify(1).