Разработчики проекта OpenBSD выпустили (http://marc.info/?l=openbsd-announce&m=140550655018712&w=2) обновление переносимой редакции пакета LibreSSL 2.0.2 (http://www.libressl.org/), в рамках которого развивается форк OpenSSL, нацеленный на обеспечение более высокого уровня безопасности. В новом выпуске устранена недоработка (https://www.agwa.name/blog/post/libressls_prng_is_unsafe_on_...), которая может привести к серьёзным проблемам с безопасностью на платформе Linux.Проблема связана с особенностью реализации в LibreSSL генератора псевдослучайных чисел (PRNG), который был завязан на возможности OpenBSD и не учитывал некоторые особенности платформы Linux. В частности, LibreSSL использовал изменение PID для отслеживания форков и инициирования переинициализации PRNG, но не учитывал, что один 16-разрядный PID-идентификатор может быть назначен двум и более ответвляемым процессам. В Linux гарантируется, что ответвлённые дочерние процессы будут иметь всегда разные PID, но допускается, что при определённых условиях PID может совпасть с идентификатором прародителя (после большого числа форков можно добиться совпадения PID дочернего процесса и прародителя).
В OpenSSL присутствует специальный код для отслеживания данной ситуации, но данный код был удалён в LibreSSL, так как он был неактуален для OpenBSD. В процессе создания переносимого варианта LibreSSL особенности формирования PID в Linux выпала из внимания разработчиков. Учитывая данную особенность исследователи безопасности подготовили тестовую программу (https://gist.github.com/AGWA/eb84e55ca25a7da1deb0), которая продемонстрировала возврат двух одинаковых значений при разных обращениях к генератору псевдослучайных чисел LibreSSL. Разработчики OpenBSD считают проблему раздутой и малоприменимой в реальных условиях. В частности, Bob Beck указывает на то, что недоработка является проблемой только автора демонстрирующей уязвимость тестовой программы, реальные приложения никогда не функционируют подобным образом.
Проанализировав возникшие в результате обсуждения проблемы и сомнения (http://port70.net/~nsz/47_arc4random.html) в корректности применения обходных путей для защиты от их проявления, Theodore Ts'o предложил (http://lists.openwall.net/linux-kernel/2014/07/17/235) включить в состав ядра Linux новый системный вызов getrandom, который является аналогом системного вызова getentropy, присутствующего в OpenBSD. Getrandom предоставит надёжную защиту от атак, основанных на исчерпании доступных файловых дескрипторов (при остутствуии свободных десктипторов невозможно задействовать /dev/urandom и активируется запасной вариант, использующий менее надёжный PRNG).
URL: http://threatpost.com/overblown-libressl-prng-vulnerability-...
Новость: http://www.opennet.ru/opennews/art.shtml?num=40227