Главная > Uncategorized > CSRF в обход заголовка X-Requested-With

CSRF в обход заголовка X-Requested-With

До недавнего времени хорошей защитой от CSRF-атак при активном использовании в приложении XHR-запросов считалось добавление в запрос заголовка

X-Requested-With: XMLHttpRequest.

Логика простая: коль скоро браузеры обеспечивают (окей, должны обеспечивать) same origin policy, то у атакующего не должно получаться построить кросс-доменный запрос с заданным заголовком. Многие сайты и фреймворки (в т.ч. Django, Ruby on Rails) использовали именно этот метод защиты от CSRF.
И все было хорошо до тех пор, пока товарищ Felix Gröbert из Google Security Team не нашел комбинацию условий, при которых злоумышленник сможет легитимно (т.е. не используя баги браузеров) осуществлять кросс-доменные запросы с заданным заголовком (в нашем случае — это X-Requested-With: XMLHttpRequest).
Детали атаки пока не разглашаются, но производители фреймворков вовсю выпускают патчи.

В общем, настоятельно рекомендуется:
— всем пользователям фреймворков Django и Ruby on Rails установить обновления безопасности;
— всем вычеркнуть из контрмер против CSRF использование заголовка X-Requested-With.

Update. Описание принципа атаки.

P.s. Offtopic. Также рекомендую посмотреть вот это творение от небезызсвестного Михаила Залевского (Michal Zalewski).

Реклама
  1. 09.02.2011 в 23:52

    Блин, только хотел обратить внимание на то, что в Джанге вообще-то используется подписывание запросов. Как оказывается, оно было «немного» отключено для AJAX-запросов. Fuuuuu!!!!11

    • 09.02.2011 в 23:58

      oxdef :

      Блин, только хотел обратить внимание на то, что в Джанге вообще-то используется подписывание запросов. Как оказывается, оно было «немного» отключено для AJAX-запросов. Fuuuuu!!!!11

      Ага, anti-CSRF-middleware только с формами раньше работал.
      Мне очень интересно посмотреть на структуру атаки: судя по всему, это не какой-то edge case, раз ребята из Django даже обратной совместимостью пожертвовали.

  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: