Суть
Защита от CSRF работает по следующему принципу: генерируется случайная последовательность (токен), которая вставляется в hidden-поле формы и та же последовательность записывается в специальную cookie. При отправке формы значения скрытого поля и cookie сравниваются и, если эти значения совпали, считается, что форма была заполнена достоверным пользователем.Теперь собственно об уязвимости: как оказалось, шаблонный тег
{% csrf_token %}, используемый для вставки HTML-кода скрытого поля в код формы, безоговорочно доверяет значению токена и вставляет его, не экранируя. Значение же токена берётся из cookie. Таким образом, атакующий потенциально может подделать cookie и внедрить в его значение HTML-код, внедрив его тем самым на страницу.Уязвимые версии
- Текущая trunk-версия
- Django 1.2.x
Решение проблемы
Разработчики предлагают всем пользователям ветки 1.2 немедленно обновиться до 1.2.2 и отмечают, что они не делали предварительных уведомлений.Можно вручную применить патч или посмотреть diff, чтобы лучше понять суть уязвимости.
См. также
- Security release issued — оригинальный текст релиза (собственно, этот топик — его очень вольный перевод)
- Подделка межсайтовых запросов (CSRF)
- Межсайтовый скриптинг (XSS)
P.S. странно, что за почти сутки на новость не обратили особого внимания, хотя некоторые среагировали оперативно

