В свете недавней очень серьёзной уязвимости Heartbleed протокола Heartbeat в сторонней библиотеке OpenSSL, разработчики OpenBSD решили окончательно и бесповоротно переписать всю библиотеку SSL, удалив груду разных кодов совместимости и поддержки несуществующих архитектур (например, big-endian i386/amd64), сохранив лишь API-совместимость с upstream OpenSSL.
Данное начинание некоторые временно называли OpenOpenSSL (т.к. оригинальный OpenSSL разрабатывается вне OpenBSD), но OpenBSD Foundation теперь объявило официальное название — «LibreSSL (the OpenBSD fork of OpenSSL)». Название также можно воспринимать как «lib-re-ssl» — переработка библиотеки ssl.
Что именно принудило проект OpenBSD отказаться от какого-либо сотрудничества с OpenSSL в будущем? Разработчик tedu@openbsd решил описать историю нового libressl на свежую память:
- Протокол Heartbeat никто до сих пор не использует, однако он был всегда включён с момента поддержки в OpenSSL пару лет назад, и его нельзя было выключить без перекомпиляции с OPENSSL_NO_HEARTBEATS. (Поддержка теперь была полностью удалена из OpenBSD libressl.)
- Предполагалось, что для избежания Heartbleed на OpenBSD достаточно будет установить опцию
J
в malloc.conf. Однако разработчики OpenSSL специально позаботились и сделали это невозможным, и поэтому даже на OpenBSD необходимо пересобирать всю библиотеку для устранения серьёзной уязвимости Heartbleed (в 5.3, 5.4 и 5.5, OpenSSL 1.0.0f в 5.2 и ранее не уязвим). - В процессе тестирования опции J с OpenSSL была обнаружена старинная ошибка в OpenSSL, о которой уже несколько лет было известно разработчикам OpenSSL, и даже имелось очень простое исправление. Однако разработчики OpenSSL до сих пор не приняли это к сведению. Командам OpenBSD, FreeBSD и Debian пришлось исправлять ошибку без какой-либо помощи от OpenSSL. Пару недель спустя, в upstream CVE-2010-5298 до сих пор исправить не удосужились.
Так как сотрудничество с таким upstream нереально и в дальнейшем не предполагается, было принято решение улучшить читаемость всего кода в соответствии с style(9) — KNF, а также удалить весь неиспользуемый код для упрощения аудита. В будущем планируется выпуск портативной версии, после периода стабилизации.