Вчера команда Django выпустила несколько релизов -- Django 1.4.8 и Django 1.5.4 и Django 1.6 beta 4 -- для исправления дыр в безопасности, о которых им сообщили. Релизы доступны через PyPi или на нашей странице.
Эти релизы исправляют уязвимость "отказ от обслуживания" в системе аутентификации Django. Всем пользователям Django мы рекомендуем немедленно обновиться.
Экстренный релиз
Обычно, взаимодействие через рассылку с людьми, которые сообщают об уязвимостях, занимает около недели. Однако этот процесс предполагает сохранение такой информации в секрете до момента релиза. Для обеспечения этого мы просим, чтобы информацию о потенциальных проблемах всегда сообщали по электронной почте security@djangoproject.com, а не через общественные каналы, такие как баг трекер или список рассылки django-разработчиков.
Текущая проблема, к сожалению, не прошла вышеописанные процесс, а была объявлена в списке рассылке. Проблема подтверждена разработчиками Django и, так как о ней было объявлено в открытых источниках и она может привести к проблемам с сайтами на Django, вы немедленно выпустили релиз.
Проблема: Отказ от обслуживания через длинные пароли
Система аутентификации Django -- django.contrib.auth -- содержит стандартную модель User и бэкэнд, который обеспечивает аутентификацию через логин и пароль. Исходный пароль не хранится в базе данных. Вместо этого, сохраняется хэшированная версия пароля, а хэш вычисляется каждый раз при логине пользователя. Способ хэширования определяется переменной конфигурации PASSWORD_HASHERS.
Django по умолчанию использует алгоритм PBKDF2 для хеширования паролей. Этот алгоритм эффективен против "брутфорс" атак из-за сложности вычисления и размера хеша.
Но сложность вычисления можно использовать и для атаки. Django никак не ограничивает длину пароля, атакующий может отправить очень длинный текст, заставляя Django выполнить его хеширование для проверки пароля. Например, вычисление PBKDF2 хеша для 1 мегабайта текста займет около минуты. Отправляя множество заведомо неверных паролей, можно "повесить" сервер.
Особенно эффективен такой такой подход против "медленных" алгоритмов, таких как PBKDF2(который является алгоритмом по умолчанию), но для остальных алгоритмов хеширования сложность вычисления так же возрастает с увеличением длины пароля.
Теперь Django вернет ошибку авторизации при вводе пароля длиннее 4096 байт.
Версии, которые надо обновить
- Главная ветка разработки Django;
- Django 1.6 (бета версия в настоящее время);
- Django 1.5;
- Django 1.4.
Для всех этих версий Django используйте CVE-2013-1443 для ссылки на эту проблему.
Решение
На код Django были наложены патчи, во все указанные выше ветки. Каждый патч можно посмотреть:
- Django Development;
- Django 1.6;
- Django 1.5;
- Django 1.4 и дополнительный коммит, для совместимости с Python 2.5.
Были выпущены следующие релизы:
- Django 1.6 beta 4 (скачать Django 1.6b4 | 1.6b4 хэш);
- Django 1.5.4 (скачать Django 1.5.4 | 1.5.4 хэш)
- Django 1.4.8 (скачать Django 1.4.8 | 1.4.8 хэш)
Важные замечания относительно уведомлений о проблемах с безопасностью
Как всегда, мы просим, чтобы информация о потенциальных проблемах с безопасностью передавалась через электронную почту на адрес security@djangoproject.com, а не через систему багтрекинга Django или рассылку разработчиков. Пожалуйста, ознакомьтесь с нашей политикой безопасности для дополнительной информации.
0 comments | Make a comment