Вышел crypt_blowfish 1.1 с устранением уязвимости

В библиотеке crypt_blowfish 1.1, используемой для хэширования паролей в таких дистрибутивах, как ALT Linux, Owl и SUSE, а также для генерации хэшей в PHP 5.3.0+, исправлена ошибка, присутствовавшая в коде на протяжении 13 лет и заметно снижавшая стойкость паролей.

Проблема была выявлена в процессе тестирования John the Ripper — разработчики обратили внимание, что для генерируемого с одними и теми же параметрами пароля, хэш функция отличается для реализаций bcrypt в OpenBSD и библиотеке crypt_blowfish.

Проблема проявляется при использовании в тексте пароля восьмибитовых символов, например, русских букв. Примерно 3 из 16 паролей, содержащих один восьмибитовый символ теряют при генерации хэша от одного до трех предыдущих символов исходного пароля. Например, если используется пароль из 11 символов, среди которых один символ с установленным восьмым битом, то результирующий хэш может быть построен на основании только 8 символов. Чем больше восьмибитовых символов используется в пароле, тем больше вероятность снижения стойкости хэша.

На практике пароли, содержащие не ASCII символы, встречаются довольно редко, а те, что используются, как правило имеют большую длину или усложнены. Что частично компенсирует возможный ущерб от наличия данной ошибки и отчасти объясняет то, что проблема оставалась незамеченной более 10 лет.