Security Lab

PT-2012-29: Получение привилегий администратора в Simple Machines Forum

(PT-2012-29) Positive Technologies Security Advisory
Получение привилегий администратора в Simple Machines Forum

Уязвимое ПО

Simple Machines Forum
Версия: 2.0.3; 1.1.17 и более ранняя

Ссылка: 
http://www.simplemachines.org/

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

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

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

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

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

Simple Machines Forum (краткое название — SMF) – это свободно распространяемое профессиональное программное обеспечение, которое позволяет за считанные минуты создать собственное online-сообщество.

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

Специалисты Исследовательского центра Positive Research компании Positive Technologies обнаружили уязвимость «Получение привилегий администратора» в Simple Machines Forum.
Уязвимость, обнаруженная в механизме восстановления пароля, позволяет атакующему с помощью специальных запросов получить пароль администратора.

                Уязвимость в файле: Sources/Reminder.php:

                Уязвимый фрагмент кода:

                if (empty($_POST['code']) || substr($realCode, 0, 10) != substr(md5($_POST['code']), 0, 10))

 При запросе восстановления пароля на email пользователя отправляется 10-символьный код, содержащий символы из набора 0-9 a-f. С помощью данного кода осуществляется смена пароля, причем пользователь может задать новый пароль самостоятельно через специальную форму.
Приведенный выше фрагмент кода некорректно осуществляет сравнение кода для восстановления пароля, находящегося в базе данных, и кода, указанного пользователем. Дело в том, что PHP в случае, когда с помощью оператора "==" сравниваются число со строкой или две строки, содержащие числа, преобразует каждую строку в число, а затем сравнивает полученные числа.
Таким образом, строка вида "0e12345678", где "e" - символ показателя степени, эквивалентна "0", а "1e12345678" - "1". Атакующий имеет возможность последовательно отправлять запросы на восстановление пароля до тех пор, пока код в базе данных не примет вид "0e", либо "1e", за которым следуют любые числа. Наши исследования показали, что в среднем требуется около 5 тысяч запросов на восстановление пароля и 10 тысяч – на проверку кода, что осуществимо менее чем за час.
Начиная с версии 2.0 Beta 4, в Simple Machines Forum присутствует код, затрудняющий атаку путем ограничения частоты запросов на сброс пароля. Однако данная мера не является эффективной, так как в этом случае необходимое количество запросов для подбора нужного формата кода достигается за несколько часов. Этому также способствует тот факт, что код ограничения частоты запросов на сброс пароля содержит ошибку:

                if (empty($number_tries) || $time_stamp < (time() - 10))
{
// If it wasn't *that* long ago, don't give them another five goes.
$number_tries = !empty($number_tries) && $time_stamp < (time() - 20) ? 2 : 0;
$time_stamp = time();
}

                Если атакующий отправляет запрос на сброс пароля в промежутке между 10 и 20 секундами с момента, когда переменная number_tries превысила максимальное значение (5), то вопреки замыслу разработчиков переменная number_tries вновь обнулится вместо присвоения значения "2", что позволяет атакующему отправлять дополнительные запросы.

Решение

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

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

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

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

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


Ссылки

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

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

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

О Positive Technologies

Positive Technologies www.ptsecurity.ru - одна из ведущих российских компаний в области информационной безопасности. 
Основные направления деятельности компании - разработка систем комплексного мониторинга информационной безопасности (XSpider, MaxPatrol); предоставление консалтинговых и сервисных услуг в области информационной безопасности; развитие специализированного портала Securitylab.ru.

Заказчиками Positive Technologies являются более 40 государственных учреждений, более 50 банков и финансовых структур, 20 телекоммуникационных компаний, более 40 промышленных предприятий, компании ИТ-индустрии, сервисные и ритейловые компании России, стран СНГ, Балтии, а также Великобритании, Германии, Голландии, Израиля, Ирана, Китая, Мексики, США, Таиланда, Турции, Эквадора, ЮАР, Японии.

Positive Technologies - это команда высококвалифицированных разработчиков, консультантов и экспертов, которые обладают большим практическим опытом, имеют профессиональные звания и сертификаты, являются членами международных организаций и активно участвуют в развитии отрасли.