Pull to refresh

Comments 10

Я больше скажу: https://bugs.php.net/bug.php?id=70014
До PHP 5.6.10 якобы криптостойкая openssl_random_pseudo_bytes опиралась на некриптостойкий и deprecated вызов RAND_pseudo_bytes.
Только в 5.6.10 заменили как раз на RAND_bytes ("The first remediation is to avoid using RAND_bytes" via openssl, ага)

В общем, нафиг openssl_random_pseudo_bytes — используйте random_bytes или слой совместимости по ссылке оттуда же.
Этого не может быть, потому что этого не может быть никогда?))))

Это может быть всегда!!! Потому-что АНБ в интересах бизнеса США уже только в унитазах не делает закладок. Уже начинает тошнить от этих псевдоновостей о том что продукт сделали безопаснее.
То есть АНБ, в данном случае, закладку в PHP сделало? Подскажите номер коммита, я тоже полюбуюсь?
Не думаю, что вы что-то найдете в коммитах. Просто никто не мешает специалистам из АНБ позвонить и порекомендовать не заметить некоторые нюансы. Напомнив, о неразглашении факта разговора....

Лично с моей точки зрения, сам факт наличия в одном из самых популярных веб-языков вот таких вот фокусов :

опиралась на некриптостойкий и deprecated вызов RAND_pseudo_bytes.

(кстати, факт имеет место быть, я лично копался в исходниках когда исследовал свою проблему)

А так же — описанного в статье, а так же — отсутствия RAND_seed и RAND_poll выглядят ну очень подозрительно.

Это или просто вопиющая некомпетентность. Или ну очень уж избирательная слепота...

Подскажите номер коммита, я тоже полюбуюсь?

В данном случае, "закладкой" является не код, а отсутствие кода. Нет автоматических вызовов RAND_seed или RAND_poll при запуске скрипта. И вообще эти функции не реализованы. Хотя необходимы и являются важной частью OpenSSL API
Думаю, в модуль никто годами не заглядывал, вот и вся разгадка.
И когда писал тоже?
Как можно "забыть" функции инициализации (RAND_seed и иже с ней)?
Во всех примерах и мануалах — любая работа с ГСЧ начинается с этих функций. А тут их просто "забыли".
Нормально...
Так "забыли" после fork'а переинициализацию делать. Т.е. при вызове очередных random bytes нужно сверить PID с предыдущим PID, при котором делалась инициализация, и если не совпадают, переинициализировать. Типичная ошибка.
Что-то мне кажется что это не проблема функции как таковой и не языка а условий её применения. Обойти можно — реализовать вызов через отдельный модуль, который будет один на все экземпляры использующего эту функцию кода.
Я отписался в security@php.net — почти месяц назад

а точнее 20 дней назад
Sign up to leave a comment.

Articles

Change theme settings