Pull to refresh

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

Django
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:djangoreleasesecurityxsscsrf
Hubs: Django
Total votes 32: ↑27 and ↓5 +22
Views787

Popular right now

Backend Python/Django
from 2,000 to 3,500 $Borderless360Remote job
Разработчик Python (Django)
from 100,000 to 160,000 ₽JuntoМоскваRemote job
Senior Backend Engineer (Python, Django)
from 2,800 to 3,500 $AppboxoАлматыRemote job
Python/Django разработчик
from 200,000 to 250,000 ₽BazarakiRemote job
Backend Developer (Python, Django)
from 120,000 ₽VermeМоскваRemote job