LINUX.ORG.RU

OpenBSD производит массовый аудит и переработку OpenSSL — libreSSL

 , , , ,


1

4

В свете недавней очень серьёзной уязвимости 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, а также удалить весь неиспользуемый код для упрощения аудита. В будущем планируется выпуск портативной версии, после периода стабилизации.

>>> http://BXR.SU/OpenBSD/lib/libssl/src/ssl/



Проверено: fallout4all ()
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от ChAnton

Аудит проходит только базовая система, порты никто не инспектирует. К тому же, нет невзламываемых систем. Особенно для спец служб.

katya_mama
()
Ответ на: комментарий от user_id_68054

Это вот этот:

 * The licence and distribution terms for any publically available version or
 * derivative of this code cannot be changed.  i.e. this code cannot simply be
 * copied and put under another distribution licence
 * [including the GNU Public Licence.]
?

Lothlorien ★★★
()
Ответ на: комментарий от Lothlorien

ну это конечно странный пункт , да.. но я про вот этот:

 *
 * 6. Redistributions of any form whatsoever must retain the following
 *    acknowledgment:
 *    "This product includes software developed by the OpenSSL Project
 *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
 *

фигли они меня заставляют писать всякие рекламные говнострочки в UI моего ПО?! свобода явно ущемлена :-)

********************

а если бы каждая (другая) библиотека просила бы о себе напоминать — то что было бы с UI-программы %) %)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: комментарий от arkhnchul

Что теперь, их не использовать?

Лучше учить русский язык и не городить англицизмов там, где без них можно обойтись.
portable -> портируемый, переносимый.

WatchCat ★★★★★
()
Ответ на: комментарий от user_id_68054

фигли они меня заставляют писать всякие рекламные говнострочки в UI моего ПО?!

это разве именно про UI? Куданить в README запихать, будет там сие acknowledgment.

arkhnchul ★★★
()
Ответ на: комментарий от arkhnchul

Куданить в README запихать, будет там сие acknowledgment.

ну ок, допустим что можно в README..

теперь представь ситуацию — каждая библиотека которую ты использовал (штук 10 их) будет просить напоминать о себе. что случится тогда?

вот твой README-файл в котором у тебя ПОЛЕЗНЫЕ сведения :-) . и вдуг с определённого момента (с определённой строчки) там начинает быть написан какой-то бред, типа "спасибо <таким-то> и <таким-то> разработчикам и смотрите вот <такой-то> web-сайт"

например в программе у меня используется LibreSSL, но рекламировать я юридически буду обязан именно OpenSSL (без упоминания о том что это лишь форк от OpenSSL, а не оригинальная дырявая OpenSSL)..

user_id_68054 ★★★★★
()
Ответ на: комментарий от user_id_68054

теперь представь ситуацию — каждая библиотека которую ты использовал (штук 10 их) будет просить напоминать о себе. что случится тогда?

вообще довольно частое явление - в readme или еще где раздел типа «third-party tools». Никому от этого хуже не становится.

arkhnchul ★★★
()
Ответ на: комментарий от anonymous

Конечно лучше комм продуктам и их юзерам, когда комм продукты впиливают в себя хороший и проверенный код.

Плохо что они в этот хороший код могут свои закладки внедрить и хороший и проверенный код закрыть.

Но как верно подметили выше в закрытом коде есть еще 100500 возможностей внедрить необходимые закладки.

Хотя в любом случае, если код либы под гпл эта задача немного усложняется

ppy ★★★
()
Ответ на: комментарий от swwwfactory

интересно, есть инструменты, обнаруживающее это?

Какой-нибудь статический анализатор вполне мог бы ткнуть на то, что всё, что понаписано после

    goto fail;
     goto fail; 

будет безусловно (=«без условий») пропущено.

yoghurt ★★★★★
()
Ответ на: комментарий от anonymous

«Пинговать». Одним понятным словом иначе и не скажешь

Окликать.

anonymous
()

Единственно возможное правильное решение. Особенно с учетом чудовищного, иначе и не скажешь, ущерба, нанесённого репутации OpenBSD из-за использования данной библиотеки. Хотелось бы ещё также увидеть обстоятельное объяснение того, почему OpenSSL вообще в принципе прошел код-ревью и каким образом оказался включенным в ОС. Именно из-за специфики OpenBSD, отмыться, даже от сделанных не ими ошибок, им будет теперь крайне тяжело. Вся ситуация вцелом очень мутная, не хватает ясности в объяснении произошедшего, и информации, на основании которой можно было бы делать хоть какие-то выводы относительно того, не куплен ли был кто-то и в команде OpenBSD, чтобы закрыть глаза на этот баг.

binhex512
()
Ответ на: комментарий от arkhnchul

Никому от этого хуже не становится.

ну всё это не так плохо, да.

...просто все эти заявления, а потом оправдывания ("меня заставили написать что я использовал код http://www.openssl.org , а на самом деле я использовал код http://www.libressl.org") — это ДЕЙСТВИТЕЛЬНО не является очень большым злом :) .

но свободная лицензия не должна заставлять делать даже это зло.

user_id_68054 ★★★★★
()
Ответ на: комментарий от yoghurt

ды ни какого статического анализатора не нужно для того чтобы было ясно — что для каждой инструкции «if» — нужно делать «{ ... }» .. тоже самое и про «while», «for».. и ни каких исключений из этого правила.

плохое оформлении кода — это благоприятная почва для появления ошибок :-)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 3)

есть же gnutls, зачем очередной ненужный велосипед от ненужных велосипедостроителей ненужного openbsd?

anonymous
()
Ответ на: комментарий от anonymous

есть же gnutls

Эту стюардессу лучше не откапывать.

Manhunt ★★★★★
()
Ответ на: комментарий от yoghurt

Какой-нибудь статический анализатор вполне мог бы ткнуть на то, что всё, что понаписано после

Спасибо за комент - сразу что-то не допёр.

Это он реально сможет обнаружить?

Фактически это типа такой линтинг. Прогон через статический анализатор в общем получается значительно снижает риски, если он обнаруживает подобные ошибки. Ну а далее остается только реагировать на предупреждения. Интересно было бы тогда прогнать openssl через такой анализатор.

Насколько велика его паранойя и ложные срабатывания?

swwwfactory ★★
()
Ответ на: комментарий от ppy

Мне кажется, что библиотеки шифрования типа ssl должны быть под лицензией гпл, а не бсд. Чтобы если кто-то удосужится в популярном софте в тот-же libressl добавить своих закладок и перекомпилять, то можно было в юридическом поле запросить открытия кодов закладок)

Тогда уж LGPL. Чтобы у пользователя была возможность самостоятельно пропатчить крипту в давно не поддерживаемой проприетарной говняшке.

Manhunt ★★★★★
()
Ответ на: комментарий от swwwfactory

Насколько велика его паранойя и ложные срабатывания?

Зависит от конкретного. На первом моём месте работы, помнится, через него каждый билд прогонялся автоматом, и местами анализатор ссылался на конкретные главы Мейерса :)

yoghurt ★★★★★
()
Ответ на: комментарий от swwwfactory

интересно, есть инструменты, обнаруживающее это

1. Практика покрытия автоматизированными тестами хотя бы основных юзкейсов («non_erroneous_case»). Тест был бы провален.
2. Практика выпиливания/рефакторинга кода, для которого почему-то не удается добиться близкого к 100% code coverage с помощью юнит-тестов.

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Любой приличный компилятор должен выдать предупреждение об «unreachable code».

Я так понимаю в генте (да и собственно где угодно, хотя в source-based это намного удобнее сделать) можно выставить custom-флаги для любого пакета с целью анализа таких мест например?

swwwfactory ★★
()
Ответ на: комментарий от yoghurt

Из гцц выпилили этот ворнинг, см выше

ах...! Как интересно...

Но так понимаю, что это теперь просто делегировали статическому анализатору (надеюсь :)). Надеюсь они доступны. Хотя, если плюсы это тормоза еще те...

swwwfactory ★★
()
Ответ на: комментарий от Bad_ptr

Ну так Линус оказался прав. Дрочева на секьюрность — хоть отбавляй, а реальное качество секьюрити компонент при этом — полное говно.

Manhunt ★★★★★
()
Ответ на: комментарий от swwwfactory

Это он реально сможет обнаружить?

реально и без проблем, прям на лету в IDE.

arkhnchul ★★★
()
Ответ на: комментарий от user_id_68054

теперь представь ситуацию — каждая библиотека которую ты использовал (штук 10 их) будет просить напоминать о себе. что случится тогда?

Вообще во многих проектах в About перечисляются библиотеки, с которыми слинковано приложение. Котёнок жив

yoghurt ★★★★★
()
Ответ на: комментарий от WatchCat

«Лучше учить русский язык и не городить англицизмов там, где без них можно обойтись»

«портируемый»

FACEPALM

anonymous
()
Ответ на: комментарий от val-amart

ты. openbsd. ну разве нет? :)

Нет, конечно. Я уверен, что OpenBSD ему безразлична. Он просто клинический тролль.

tailgunner ★★★★★
()
Ответ на: комментарий от val-amart

Лол. Если бы я ненавидел опенбсд, стал бы я на главную ЛОР-а вывешивать призыв о финансовой помощи? Проекту OpenBSD не хватает денег на электричество Я им еще и лично своего бабла отсыпал, кстати.

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 1)
Ответ на: комментарий от anonymous

FACEPALM

Не разбей себе лицо.
Как ни странно, но «портировать» это правильное применение заимствования из английского. И оно уже устоялось.
А вот включать в русский вариант суффикс -able, это полная безграмотность.

WatchCat ★★★★★
()
Ответ на: комментарий от yoghurt

Вообще во многих проектах в About перечисляются библиотеки, с которыми слинковано приложение. Котёнок жив

ну это не одно и тоже — по сравнению с тем что я написал.

одно дело когда я в About перечислю список библиотек (и всех авторов), ...

... а другое дело когда я вставляю цитату, которую мне велели вставить — слово в слово. при чём велели её вставить так, будто бы я от своего имни её произношу.

возникает ощущение будто бы используя OpenSSL/LibreSSL — я обязан [продать свою душу] :-)

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: комментарий от katya_mama

Вся политика безопасности в OpenBSD - чистой воды PR!

А сам то откуда знаешь? Неужели ты эксперт по IT безопасности? Пока нашли только Only two remote holes in the default install, in a heck of a long time!Как думашь, Бубунта может сравниться с этим?

Odalist ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.