pargentum: (Default)
[personal profile] pargentum
research!rsc: Lessons from the Debian/OpenSSL Fiasco:
Distributions like Debian have to maintain their own copies of some programs at least temporarily. That's inevitable, because not all projects will run on Debian's time constraints. But I'm surprised there was no followup with the OpenSSL developers once the patch was created, trying to get them to accept it into the main tree. That could have provoked a code review too.

По моему это гораздо ближе к основной причине возникшей проблемы, чем "writing clever code". Clever код или не clever - это в большой степени вопрос субъективного восприятия индивидуального программиста (хотя конкретно за использование неинициализированной памяти в качестве источника энтропии надо бить по башке долго и больно). А вот когда патчи (а особенно багфиксы или "багфиксы") из дистрибутивов не пытаются интегрировать в основную ветку - это, во первых, вообще sorta defeats the purpose of open source, а во вторых, как раз и порождает такие вот идиотские ситуации.

Date: 2008-05-22 08:53 am (UTC)
From: [identity profile] gr-s.livejournal.com
Не могли бы вы вкратце пояснить для неспециалистов, что именно произошло?

Date: 2008-05-22 12:39 pm (UTC)
From: [identity profile] pargentum.livejournal.com
Я опасаюсь, что пожелания "вкратце" и "для неспециалистов" взаимоисключающие. Но попробую объяснить организационный аспект.
Поставщики дистрибутивов open source операционных систем, таких, как Debian, сами софт не разрабатывают. Они собирают open source компоненты других разработчиков - Linux, Apache, MySQL, GNU, компилируют все это, тестируют на совместную работоспособность и делают из этого собственно дистрибутив. Хотя теоретически все эти компоненты изначально рассчитаны на совместную работу, на практике там и тут время от времени приходится пройтись напильником по исходникам.

По уму все результаты этих проходов напильником (так называемые "патчи") надо бы отсылать разработчикам оригинального продукта, чтобы они интегрировали это в основную версию кода, но на практике это не всегда получается - то у сборщиков дистрибутива руки не доходят послать, то у разработчиков продукта не доходят руки посмотреть (не говоря уж про то, чтобы интегрировать), бывает когда разработчики некоторые патчи сознательно не хотят интегрировать по разным причинам, вплоть до мировоззренческих разногласий (Линукс начался, по существу, с того, что Танненбаум по мировоззренческим соображениям не захотел интегрировать в Миникс патчи, присланные Линусом Торвальдсом).

Это, так сказать, общий контекст ситуации. Теперь конкретика. В коде криптографической библиотеки OpenSSL был не то, что баг, а довольно странный код, который делал, в общем, бессмысленную (но и, в общем, безвредную) операцию при помощи приема, который я бы назвал industry accepted bad practice. Парень из Debian, который занимался поддержкой соответствующей подсистемы Debian, нашел этот странный код при помощи автоматической утилиты анализа исходных текстов, и спросил в списке рассылки OpenSSL, что с этим делать. Ему посоветовали просто этот код выкинуть. Детальный анализ переписки показывает, что ребята друг друга просто неправильно поняли. Но парень из дебиана код действительно выкинул, и в результате фактически выкинул ядро генератора случайных чисел из криптобиблиотеки. Поскольку генерация случайных чисел - дело тонкое, автоматизированными тестами это поймано быть не могло, и этот код проник в "стабильную" версию Дебиана. А поскольку патч с предложением выкинуть код не был отправлен в OpenSSL, никто посмотрел на получившийся код и не смог понять, что, собственно, произошло. В результате пользователи Debian Etch и, как я понимаю, минимум трех версий Ubuntu в течении двух лет использовали криптографию с генератором "случайных" ключей шифрования, который, по существу, не работал.

Date: 2008-05-22 12:46 pm (UTC)
From: [identity profile] gr-s.livejournal.com
Обалдеть.
Спасибо огромное! Теперь значение события стало много яснее, именно потому что стала понятней его суть. Я ссылку у себя поставлю, если не возражаете.

Date: 2008-05-23 10:54 am (UTC)
From: (Anonymous)
Надо иметь в виду еще и то, что патч из Дебиана не был отправлен в основную ветку OpenSSL не случайно. Это такая политика: "у нас во FreeBSD все работает, а баги Линкуса нам неинтересны".

p.S. На заметку хозяйке: неинициализированная память была одним из трех источников хаоса. Ключи-то хотя и получались слабыми, но эта слабость против супер-ЭВМ, а не против малолетнего хакера.

Profile

pargentum: (Default)
pargentum

January 2026

S M T W T F S
     1 2 3
4 5 6 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 8th, 2026 05:52 am
Powered by Dreamwidth Studios