PT-2012-27: Уязвимость определения сброшенного пароля любого пользователя в UMI.CMS

Уязвимое ПО

UMI.CMS
Версия: 2.8.5.2 и более ранняя

Ссылка: 
http://www.umi-cms.ru/

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

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

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

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

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

UMI.CMS – система управления сайтами.

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

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

Уязвимый фрагмент кода: classes/modules/users/__forget.php

$avLetters = "$#@^&!1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
$size = strlen($avLetters);
$npass = "";
for($i = 0; $i < $length; $i++) {
$c = rand(0, $size - 1);
$npass .= $avLetters[$c];
}

Для сброса пароля пользователя необходимо указать его логин, определить существующий логин можно при попытке регистрации с проверяемым логином (ошибка класса error-login-exists). Уязвимость возможна, так как UMI.CMS получает случайные числа с помощью php-функции rand, при этом не инициализируя генератор случайных чисел с помощью функции srand, вызванной с параметром (SEED). В данном случае PHP автоматически вызывает функцию srand c предсказуемым на основе генерируемой сессии SEED, что позволяет определить каждый дальнейший результат вызова функций rand. Так же, при установке на ОС Windows данный код обеспечивает всего 2^15 возможных вариантов генерируемых токенов.

Решение

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

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

16.08.2012 - Производитель уведомлен
17.08.2012 - Производителю отправлены детали уязвимости
20.11.2012 - Производитель выпустил исправление
11.02.2013 - Публикация уязвимости

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

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

Ссылки

http://www.securitylab.ru/lab/PT-2012-27

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

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