В библиотеке crypt_blowfish 1.1, используемой для хэширования паролей в таких дистрибутивах, как ALT Linux, Owl и SUSE, а а также для генерации хэшей в PHP 5.3.0+, исправлена ошибка, присутствовавшая в коде на протяжении 13 лет и заметно снижавшая стойкость паролей, содержащих восьмибитовые символы. Проблема была выявлена в процессе тестирования эффективности John the Ripper - разработчики тестового комплекта обратили внимание, что для генерируемого с одними и теми же параметрами пароля, хэш функция отличается для реализаций блочного шифра Blowfish в OpenBSD и библиотеке crypt_blowfish.
Проблема проявляется при использовании в тексте пароля восьмибитовых символов, например, русских букв. Примерно 3 из 16 паролей, содержащих один восьмибитовый символ теряют при генерации хэша 3 предыдущих символа исходного пароля. Например, если используется пароль из 8 символов, среди которых один символ с установленным восьмым битом, то результирующий хэш может быть построен на основании только 5 символов. Чем больше восьмибитовых символов используется в пароле, тем больше вероятность снижения стойкости хэша.
На практике пароли, содержащие не ASCII символы, встречаются довольно редко, а те, что используются, как правило имеют большую длину или усложнены. Что частично компенсирует возможный ущерб от наличия данной ошибки и отчасти объясняет то, что проблема оставалась незамеченной более 10 лет. При установке crypt_blowfish 1.1 следует иметь в виду, что ранее созданные некорректные хэши после обновления перестанут совпадать проверяемыми корректными хэшами, что потребует от некоторых пользователей изменения пароля для продолжения работы. В качестве запасного варианта предусмотрена возможность замены стандартного префикса хэша "$2a$" на "$2x$", при сверке которого будет использован старый метод генерации хэша.