Pull to refresh

Релиз Django 1.2.2 — security-обновление

Reading time2 min
Views945
8 сентября 2010 года разработчики Django выпустили релиз 1.2.2 чтобы закрыть уязвимости, позволяющие злоумышленникам устраивать XSS-атаки. По злой иронии, уязвимость к XSS оказалась в коде системы, выполняющем защиту от другого типа атак – CSRF. Система эта принципиально изменилась в версии 1.2 (в предыдущих версиях защита от CSRF не являлась частью ядра фреймворка и была всего лишь подключаемым слоем).

Суть

Защита от CSRF работает по следующему принципу: генерируется случайная последовательность (токен), которая вставляется в hidden-поле формы и та же последовательность записывается в специальную cookie. При отправке формы значения скрытого поля и cookie сравниваются и, если эти значения совпали, считается, что форма была заполнена достоверным пользователем.

Теперь собственно об уязвимости: как оказалось, шаблонный тег {% csrf_token %}, используемый для вставки HTML-кода скрытого поля в код формы, безоговорочно доверяет значению токена и вставляет его, не экранируя. Значение же токена берётся из cookie. Таким образом, атакующий потенциально может подделать cookie и внедрить в его значение HTML-код, внедрив его тем самым на страницу.

Уязвимые версии

  • Текущая trunk-версия
  • Django 1.2.x
Версии до 1.2 не подвержены узявимости.

Решение проблемы

Разработчики предлагают всем пользователям ветки 1.2 немедленно обновиться до 1.2.2 и отмечают, что они не делали предварительных уведомлений.

Можно вручную применить патч или посмотреть diff, чтобы лучше понять суть уязвимости.

См. также


P.S. странно, что за почти сутки на новость не обратили особого внимания, хотя некоторые среагировали оперативно
Tags:
Hubs:
+22
Comments16

Articles