Interested Article - LibreSSL

LibreSSL — библиотека с реализацией протоколов SSL / TLS . Эта библиотека является продуктом команды OpenBSD , в рамках которого развивается форк OpenSSL , нацеленный на обеспечение высшего уровня безопасности. До основания форка была обнаружена уязвимость heartbleed в OpenSSL .

Из особенностей LibreSSL можно отметить ориентацию на качественную поддержку протоколов SSL / TLS с изъятием излишней функциональности, привлечением дополнительных средств защиты и проведением значительной чистки и переработки кодовой базы.

Проект OpenBSD разрабатывает нативную редакцию пакета LibreSSL собственно для OpenBSD и переносимую редакцию для Unix -подобных систем и Microsoft Windows .

История

После того, как в OpenSSL была обнаружена уязвимость Heartbleed, команда разработчиков OpenBSD провела аудит кода и пришла к выводу о необходимости создания и поддержки собственного форка библиотеки . 11 апреля 2014 года был зарегистрирован домен libressl.org, а 22 апреля 2014 года объявлено о запуске проекта.

В течение первой недели разработчики удалили более 90000 строк кода на языке Си . Удалению подвергся устаревший или неиспользуемый код, также была убрана поддержка устаревших и редко используемых в наше время операционных систем. Первоначально планировалось разрабатывать библиотеку LibreSSL как замену OpenSSL в операционной системе OpenBSD 5.6, а после того, как облегченная библиотека станет достаточно стабильной, портировать её на другие платформы .

17 мая 2014 года на конференции 2014 BSDCan представил доклад "LibreSSL: Первые 30 дней и что ждёт нас в будущем", в котором были описаны результаты первого месяца разработки, внесённые изменения и обнаруженные проблемы.

5 июня 2014 были обнародованы некоторые уязвимости в OpenSSL. Хотя некоторым проектам сообщили об этих уязвимостях заранее , разработчики LibreSSL не были проинформированы; в результате Тео де Раадт обвинил разработчиков OpenSSL в преднамеренном сокрытии информации от проектов OpenBSD и LibreSSL .

20 июня 2014 компания Google создала ещё один форк OpenSSL под названием и объявила о намерении делиться патчами с проектом LibreSSL . По просьбе разработчиков LibreSSL компания Google изменила лицензию некоторых своих изменений на лицензию ISC . 21 июня Тео де Раадт объявил о планах по выпуску переносимой версии библиотеки LibreSSL-portable . 20 июня началось портирование кода на Linux , а 8 июля - на платформы OS X и Solaris .

11 июля 2014 года вышлая первая переносимая версия LibreSSL 2.0.0 . За первым релизом быстро последовали версии 2.0.1 (13 июля), 2.0.2 (16 июля), 2.0.3 (22 июля), 2.0.4 (3 августа) и 2.0.5 (5 августа), в которых были исправлены многие недостатки первой переносимой версии.

28 сентября 2014 представил доклад "LibreSSL: более чем 30 дней спустя", в котором описаны достижения, проблемы и изменения, сделанные за несколько месяцев после доклада Боба Бека на конференции BSDCan .

Начиная с версии 2.1.0, , вышедшей 12 октября 2014 года, скорость внесения изменений в LibreSSL существенно упала, а библиотека стала рабочей альтернативой OpenSSL. Большинство изменений в версиях 2.1.x являются устранением уязвимостей, найденных в OpenSSL.

Использование

LibreSSL используется в качестве библиотеки по умолчанию для реализации TLS в следующих системах:

  1. OpenBSD , начиная с версии 5.6
  2. Void Linux , начиная с 6 августа 2014 года (23 февраля 2021 года произошёл обратный переход на OpenSSL )
  3. PC-BSD , начиная с версии 10.1.2
  4. как альтернатива в OPNsense , начиная с версии 15.7
  5. OpenELEC , начиная с версии 6.0beta2
  6. OS X , начиная с версии 10.11 El Capitan

Изменения

Работа с памятью

Некоторые из наиболее заметных и важных изменений связаны с заменой самописных функций по работе с памятью на функции стандартной библиотеки (например, strlcpy , calloc , asprintf , и т.д.) . Это позволит в дальнейшем находить ошибки, связанные с переполнением буфера , при помощи специальных инструментов анализа утечек памяти , а также исследовать сбои при помощи технологии ASLR , атрибута NX bit , « » и т.п.

В логе системы контроля версий также наблюдаются исправления потенциальных двойных освобождений памяти . Также внесено множество дополнительных проверок на соответствие размеров параметров, преобразований между беззнаковыми и знаковыми переменными, проверок значений указателей и возвращаемых значений.

Превентивные меры

В соответствии с общепринятыми практиками безопасного программирования, по умолчанию включены опции и флаги компилятора, направленные на обнаружение потенциальных проблем на этапе сборки (-Wall, -Werror, -Wextra, -Wuninitialized). Улучшена читаемость кода, что должно облегчить проверку кода в будущем. Исправление или удаление ненужных макросов и обёрток методов также улучшает читаемость кода и облегчает аудит.

В коде LibreSSL полностью устранена проблема 2038 года . Кроме того, для предотвращения удаления компилятором кода очистки памяти из оптимизированной сборки добавлены вызовы функций explicit_bzero и bn_clear , чтобы потенциальный атакующий не мог прочитать значения из ранее использованной памяти.

Криптография

Небезопасная инициализация генератора псевдослучайных чисел начальными значениями была заменена на возможности, предоставляемые ядром операционной системы . Среди других существенных нововведений стоит отметить поддержку нового поточного шифра ChaCha и кода аутентификации сообщений Poly1305 , а также более безопасного набора эллиптических кривых (кривые brainpool из , до 512 бит).

Добавленные возможности

В первой версии LibreSSL были добавлены следующие возможности: поддержка алгоритмов ChaCha и Poly1305 , эллиптические кривые от 19 ноября 2015 на Wayback Machine и от 8 декабря 2015 на Wayback Machine , AEAD-режимы шифрования AES-GCM и ChaCha20-Poly1305.

В последующих версиях появилось следующее:

  • 2.1.0: Автоматические эфемерные ключи на эллиптических кривых
  • 2.1.2: Поддержка встроенного ГПСЧ arc4random на OS X и FreeBSD
  • 2.1.2: Переработана поддержка шифра ГОСТ
  • 2.1.3: Поддержка ALPN
  • 2.1.3: Поддержка SHA-256 Camellia cipher suites
  • 2.1.4: Поддержка TLS_FALLBACK_SCSV на стороне сервера
  • 2.1.4: certhash как замена скрипта c_rehash
  • 2.1.4: X509_STORE_load_mem API для загрузки сертификатов из памяти (улучшенная поддержка chroot)
  • 2.1.4: Экспериментальная сборка для Windows
  • 2.1.5: Улучшения поддержки Windows, первые работающие 32- и 64-битные сборки
  • 2.1.6: Библиотека libtls объявлена стабильной и включена по умолчанию
  • 2.2.0: Поддержка AIX и Cygwin
  • 2.2.1: Добавлены эллиптические кривые EC_curve_nid2nist и EC_curve_nist2nid из OpenSSL, первоначальная поддержка Windows XP/2003
  • 2.2.2: Определена константа LIBRESSL_VERSION_NUMBER , добавлены методы TLS_* как замена методам SSLv23_*, поддержка сборки при помощи cmake.

Старые небезопасные возможности

В первоначальной версии LibreSSL некоторые возможности были по умолчанию отключены . Реализация некоторых из этих возможностей была позднее полностью, включая поддержку Kerberos , , TLS сжатия, DTLS heartbeat , и SSL v2.

В более поздних версиях были дополнительно отключены следующие возможности:

  • 2.1.1: После выявления уязвимости POODLE в устаревшем протоколе SSL 3.0, в LibreSSL этот протокол по умолчанию отключен .
  • 2.1.3: Убрана поддержка цифровой подписи ГОСТ Р 34.10-94
  • 2.2.1: Удалена поддержка динамического движка и MDC-2DES
  • 2.2.2: Удалена поддержка SSLv3 из бинарника openssl, удалена поддержка Internet Explorer 6, движка RSAX.
  • 2.3.0: Полностью удалена поддержка SSLv3, SHA-0 и DTLS 1_BAD_VER

Убранные возможности

В первом релизе LibreSSL в OpenBSD 5.6 было удалено большое количество кода, который посчитали небезопасным, ненужным или устаревшим .

  • В ответ на уязвимость Heartbleed , одной из первых удалённых возможностей была поддержка Heartbeat-пакетов
  • Поддержка ненужных платформ («классическая» Mac OS , NetWare , OS/2 , VMS , 16-битная Windows и др.)
  • Поддержка старых компиляторов
  • Удалены движки , Broadcom ubsec, Sureware, Nuron, GOST, GMP, CSwift, CHIL, CAPI, Atalla и AEP вследствие неактуальности аппаратного обеспечения или зависимости от несвободных библиотек
  • Генератор псевдослучайных чисел OpenSSL удалён (и заменён на arc4random)
  • Макросы препроцессора Си , которые посчитали ненужными или небезопасными и которые были помечены как устаревшие ещё в OpenSSL (например, des_old.h)
  • Старые ненужные файлы на языке ассемблера , Си и Perl (например, )
  • Поддержка MD2 и SEED
  • SSLv3, SHA-0, DTLS1_BAD_VER

Алгоритм Dual_EC_DRBG , который подозревают в наличие бэкдора , также подвергся уничтожению. Также были удалены неиспользуемые протоколы и небезопасные алгоритмы, включая поддержку стандарта , MD4 / MD5 , и SRP .

Старые ошибки

Одной из причин критики OpenSSL является большое количество записей в системе отслеживания ошибок , которые остаются неисправленными в течение многих лет. Теперь эти старые ошибки исправляются в LibreSSL .

Безопасность и наличие уязвимостей

LibreSSL оказалась не подверженной многим уязвимостям, найденном в OpenSSL после ответвления форка. Примечательно, что ни одна из найденных за это время в OpenSSL уязвимостей высокой степени не применима к LibreSSL.

LibreSSL OpenSSL LibreSSL OpenSSL
Классификация 1.0.1 1.0.2
Критическая 0 0 0 0
Высокая 0 4 0 2
Средняя 14 25 12 17
Низкая 4 11 3 6
Итого 18 39 15 23

Ссылки

  • — официальный сайт LibreSSL. от 14 апреля 2020 на Wayback Machine

Примечания

  1. (англ.) . Дата обращения: 13 декабря 2022. 13 декабря 2022 года.
  2. Cook B. (англ.) — 2023.
  3. — 2006.
  4. . www.libressl.org. Дата обращения: 3 октября 2019. 1 октября 2019 года.
  5. Unangst, Ted . flak (22 апреля 2014). Дата обращения: 24 апреля 2014. 24 апреля 2014 года.
  6. Seltzer, Larry . Zero Day . ZDNet (21 апреля 2014). Дата обращения: 21 апреля 2014. 21 апреля 2014 года.
  7. Brodkin, Jon . Ars Technica (22 апреля 2014). Дата обращения: 24 апреля 2014. 19 августа 2014 года.
  8. McCallion, Jane . (22 апреля 2014). Дата обращения: 23 апреля 2014. Архивировано из 26 июня 2014 года.
  9. Larabel, Michael . Phoronix (9 мая 2014). Дата обращения: 30 мая 2014. 8 декабря 2015 года.
  10. Beck, Bob (17 мая 2014). Дата обращения: 17 мая 2014. 24 сентября 2015 года.
  11. . oss-sec (Mailing list). 5 June 2014. из оригинала 8 декабря 2015 . Дата обращения: 9 июня 2014 .
  12. de Raadt, Theo (5 June 2014). . openbsd-misc (Mailing list). из оригинала 16 августа 2014 . Дата обращения: 9 июня 2014 .
  13. Langley, Adam . ImperialViolet (20 июня 2014). Дата обращения: 21 июня 2014. 1 июня 2018 года.
  14. Goodin, Dan . Ars Technica (20 июня 2014). Дата обращения: 21 июня 2014. 23 июня 2014 года.
  15. Sing, Joel (21 июня 2014). Дата обращения: 21 июня 2014. Архивировано из 22 июня 2014 года.
  16. de Raadt, Theo (21 June 2014). . openbsd-tech (Mailing list). из оригинала 22 июля 2014 . Дата обращения: 28 октября 2015 .
  17. Beck, Bob (20 июня 2014). Дата обращения: 28 ноября 2015. Архивировано из 9 июля 2014 года.
  18. Beck, Bob (8 июля 2014). Дата обращения: 28 ноября 2015. Архивировано из 22 июля 2014 года.
  19. (11 июля 2014). Дата обращения: 11 июля 2014. 14 января 2016 года.
  20. Beck, Bob (11 July 2014). . openbsd-announce (Mailing list). из оригинала 18 февраля 2018 . Дата обращения: 11 июля 2014 .
  21. Beck, Bob (13 July 2014). . openbsd-announce (Mailing list) . Дата обращения: 28 октября 2015 .
  22. Beck, Bob (16 July 2014). . openbsd-announce (Mailing list). из оригинала 18 февраля 2018 . Дата обращения: 28 октября 2015 .
  23. Beck, Bob (22 July 2014). . openbsd-announce (Mailing list). из оригинала 18 февраля 2018 . Дата обращения: 28 октября 2015 .
  24. Beck, Bob (3 August 2014). . openbsd-announce (Mailing list). из оригинала 23 марта 2019 . Дата обращения: 28 октября 2015 .
  25. Cook, Brent (8 August 2014). . openbsd-announce (Mailing list) . Дата обращения: 28 октября 2015 .
  26. Unangst, Ted (28 сентября 2014). Дата обращения: 9 июня 2014. 28 сентября 2014 года.
  27. Beck, Bob (12 October 2014). . openbsd-announce (Mailing list). из оригинала 18 февраля 2018 . Дата обращения: 28 октября 2015 .
  28. Jacoutot, Antoine (1 November 2014). . openbsd-announce (Mailing list). из оригинала 31 января 2016 . Дата обращения: 28 октября 2015 .
  29. . Void Linux. Дата обращения: 15 октября 2015. Архивировано из 8 декабря 2015 года.
  30. . voidlinux.org . Дата обращения: 12 сентября 2021. 16 октября 2021 года.
  31. Mark VonFange. . Official PC-BSD Blog. Дата обращения: 15 октября 2015. 6 сентября 2015 года.
  32. . OPNsense. Дата обращения: 15 октября 2015. 21 сентября 2015 года.
  33. . OpenELEC. Дата обращения: 15 октября 2015. Архивировано из 26 ноября 2015 года.
  34. . Medium. — «OS X 10.11 ships with LibreSSL.» Дата обращения: 24 октября 2015. Архивировано из 25 ноября 2015 года.
  35. Orr, William . OpenSSL Valhalla Rampage (23 апреля 2014). Дата обращения: 30 апреля 2014. 29 апреля 2014 года.
  36. . Дата обращения: 28 ноября 2015. 23 марта 2019 года.
  37. . Дата обращения: 28 ноября 2015. 23 марта 2019 года.
  38. .
  39. . Дата обращения: 28 ноября 2015. Архивировано из 16 сентября 2014 года.
  40. . LibreSSL. Дата обращения: 28 ноября 2015. 28 ноября 2015 года.
  41. Beck, Bob (9 December 2014). . openbsd-announce (Mailing list). из оригинала 31 января 2016 . Дата обращения: 28 октября 2015 .
  42. Cook, Brent (22 January 2015). . openbsd-announce (Mailing list). из оригинала 31 января 2016 . Дата обращения: 28 октября 2015 .
  43. Cook, Brent (4 March 2015). . openbsd-announce (Mailing list). из оригинала 31 января 2016 . Дата обращения: 28 октября 2015 .
  44. Cook, Brent (17 March 2015). . openbsd-announce (Mailing list). из оригинала 18 февраля 2018 . Дата обращения: 28 октября 2015 .
  45. Cook, Brent (19 March 2015). . openbsd-announce (Mailing list). из оригинала 18 февраля 2018 . Дата обращения: 28 октября 2015 .
  46. Cook, Brent (11 June 2015). . openbsd-announce (Mailing list). из оригинала 18 февраля 2018 . Дата обращения: 28 октября 2015 .
  47. Cook, Brent (9 July 2015). . openbsd-announce (Mailing list). из оригинала 31 января 2016 . Дата обращения: 28 октября 2015 .
  48. Cook, Brent (6 August 2015). . openbsd-announce (Mailing list). из оригинала 18 февраля 2018 . Дата обращения: 28 октября 2015 .
  49. Beck, Bob (16 октября 2014). Дата обращения: 28 ноября 2015. 23 марта 2019 года.
  50. .
  51. Perlroth, Nicole (2013-09-10). . The New York Times . из оригинала 12 июля 2014 . Дата обращения: 9 мая 2014 .
  52. . Дата обращения: 28 ноября 2015. 8 декабря 2015 года.
  53. Vallat, Miod (10 November 2014). . openbsd-cvs (Mailing list). из оригинала 23 марта 2019 . Дата обращения: 28 октября 2015 .
  54. Сумма с момента релиза 1.0.2
Источник —

Same as LibreSSL