И еще по поводу дебиановского SSL
May. 22nd, 2008 12:47 pmresearch!rsc: Lessons from the Debian/OpenSSL Fiasco:
По моему это гораздо ближе к основной причине возникшей проблемы, чем "writing clever code". Clever код или не clever - это в большой степени вопрос субъективного восприятия индивидуального программиста (хотя конкретно за использование неинициализированной памяти в качестве источника энтропии надо бить по башке долго и больно). А вот когда патчи (а особенно багфиксы или "багфиксы") из дистрибутивов не пытаются интегрировать в основную ветку - это, во первых, вообще sorta defeats the purpose of open source, а во вторых, как раз и порождает такие вот идиотские ситуации.
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, а во вторых, как раз и порождает такие вот идиотские ситуации.
no subject
Date: 2008-05-22 08:53 am (UTC)no subject
Date: 2008-05-22 12:39 pm (UTC)Поставщики дистрибутивов open source операционных систем, таких, как Debian, сами софт не разрабатывают. Они собирают open source компоненты других разработчиков - Linux, Apache, MySQL, GNU, компилируют все это, тестируют на совместную работоспособность и делают из этого собственно дистрибутив. Хотя теоретически все эти компоненты изначально рассчитаны на совместную работу, на практике там и тут время от времени приходится пройтись напильником по исходникам.
По уму все результаты этих проходов напильником (так называемые "патчи") надо бы отсылать разработчикам оригинального продукта, чтобы они интегрировали это в основную версию кода, но на практике это не всегда получается - то у сборщиков дистрибутива руки не доходят послать, то у разработчиков продукта не доходят руки посмотреть (не говоря уж про то, чтобы интегрировать), бывает когда разработчики некоторые патчи сознательно не хотят интегрировать по разным причинам, вплоть до мировоззренческих разногласий (Линукс начался, по существу, с того, что Танненбаум по мировоззренческим соображениям не захотел интегрировать в Миникс патчи, присланные Линусом Торвальдсом).
Это, так сказать, общий контекст ситуации. Теперь конкретика. В коде криптографической библиотеки OpenSSL был не то, что баг, а довольно странный код, который делал, в общем, бессмысленную (но и, в общем, безвредную) операцию при помощи приема, который я бы назвал industry accepted bad practice. Парень из Debian, который занимался поддержкой соответствующей подсистемы Debian, нашел этот странный код при помощи автоматической утилиты анализа исходных текстов, и спросил в списке рассылки OpenSSL, что с этим делать. Ему посоветовали просто этот код выкинуть. Детальный анализ переписки показывает, что ребята друг друга просто неправильно поняли. Но парень из дебиана код действительно выкинул, и в результате фактически выкинул ядро генератора случайных чисел из криптобиблиотеки. Поскольку генерация случайных чисел - дело тонкое, автоматизированными тестами это поймано быть не могло, и этот код проник в "стабильную" версию Дебиана. А поскольку патч с предложением выкинуть код не был отправлен в OpenSSL, никто посмотрел на получившийся код и не смог понять, что, собственно, произошло. В результате пользователи Debian Etch и, как я понимаю, минимум трех версий Ubuntu в течении двух лет использовали криптографию с генератором "случайных" ключей шифрования, который, по существу, не работал.
no subject
Date: 2008-05-22 12:46 pm (UTC)Спасибо огромное! Теперь значение события стало много яснее, именно потому что стала понятней его суть. Я ссылку у себя поставлю, если не возражаете.
no subject
Date: 2008-05-23 10:54 am (UTC)p.S. На заметку хозяйке: неинициализированная память была одним из трех источников хаоса. Ключи-то хотя и получались слабыми, но эта слабость против супер-ЭВМ, а не против малолетнего хакера.