PT-2013-02: Предугадывание ключа сброса пароля администратора в FluxBB

Уязвимое ПО

FluxBB
Версия: 1.5.2 и более ранняя

Ссылка: 
http://fluxbb.org/

Рейтинг опасности

Уровень опасности: высокий 
Воздействие: предугадывание ключа сброса пароля администратора
Вектор атаки: удаленный

CVSS v2: 
Base Score: 9.3 
Vector: (AV:N/AC:M/Au:N/C:C/I:C/A:C) 

CVE: отсутствует

Описание программы

FluxBB — один из самых быстрых и лёгких форумов с открытым исходным кодом, написан на PHP.

Описание уязвимости

Специалисты компании Positive Technologies обнаружили уязвимость "Предугадывание ключа сброса пароля администратора " в FluxBB.

Уязвимость обнаружена в алгоритме генерации случайных ключей для сброса паролей пользователей. FluxBB генерирует предугадываемые псевдослучайные числа, используя функцию mt_rand:

function random_key($len, $readable = false, $hash = false)
/* ... */
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
for ($i = 0; $i < $len; ++$i)
$key .= substr($chars, (mt_rand() % strlen($chars)), 1);

FluxBB также допускает утечку вывода mt_rand через параметр "search_id":
$search_id = mt_rand(1, 2147483647);

После запроса на восстановление пароля FluxBB генерирует ключ сброса пароля и новый пароль следующим образом:

// Generate a new password and a new password activation code
$new_password = random_pass(8);
$new_password_key = random_pass(8);

Для предугадывания данных значений злоумышленнику необходимо отправить большое количество keep-alive запросов, после чего веб-сервер начнет создавать новые процессы с вновь инициализрованным состоянием генератора Mersenne Twister. Затем ему необходимо совершить два keep-alive запроса:

GET /search.php?action=search&keywords=test&search=Search
POST /login.php?action=forget_2
form_sent=1&req_email=admin%40email.com

Первый запрос вернет параметр "search_id" в URL перенаправления, в котором содержится вывод mt_rand. Так как в keep-alive соединении состояние ГПСЧ сохраняется, используя это число, можно подобрать сид, с помощью которого имеется возможность предугадать ключ для сброса пароля, а также новый пароль.

Решение

Установите последнюю версию приложения.

Статус уведомления

17.01.2013 - Производителю отправлены детали уязвимости
22.02.2013 - Производитель выпустил исправление
07.03.2013 - Публикация уязвимости

Благодарности

Уязвимость обнаружил Арсений Реутов (Исследовательcкий центр Positive Research компании Positive Technologies)

Ссылки

http://www.securitylab.ru/lab/PT-2013-02

Список отчетов о ранее обнаруженных уязвимостях Positive Research:

http://www.ptsecurity.ru/lab/advisory/
http://www.securitylab.ru/lab/