Cross-site request forgery (CSRF)

SEO блог где палят темы [Самый интересный SEO блог]
2007-10-28 21:18:40
<< Абсолютный трастранк | Registrant Search >>
Вычитал про хитрую технологию хака, думаю всем веб-разработчикам и сочувствующим кто ещё не в курсе, будет интересно про неё узнать: Cross-site request forgery. На русский можно перевести как "межсайтовая подделка запроса". Смысл такой, что если у вас есть сайт с аутентификацией, на сайте человек залогинился с кукой и сабмитит форму, которая что-то меняет, например пароль, то вы (разработчик) думаете что у вас всё чики-пуки. А на самом деле, если это дело было запрограммировано не совсем правильно, то форму вам может сабмитнуть молдавский хакер, с понятными последствиями. :) Делается это путём подсовывания по мышку юзеру специально сформированной ссылки или показа картинки у которой вместо файла всунута опять же ссылка. Ссылка должна быть такой, какую ожидает сайт-жертва при сабмите формы. Причём хакеры могут подделать не только гет, но и пост запрос, с помощью жаба-скрипта.
Как бороться: самый очевидный способ - во все формы вбивать уникальное скрытое поле, которое перед вбиванием записывать в кибермозг компьютера и потом сверять с тем что получено от юзера, либо перед записью в форму, кодировать поле по секретному ключу, а при получении назад раскодировать и сверять. В вики пишут про ещё один способ - перед сабмитом форм зачитывать скриптом авторизирующую куку, при этом будут применены более строгие правила на кросс-доменные запросы и хакер обломается. Но способ со скрытыми полями мне кажется всё-же надёжней, он не зависит от браузера.
Английские братья по разуму пишут что таким способом в аккаунте адсенса можно поменять адрес с Англии на Молдавию. :) Что-то мне подсказывает, что для этой уязвимости вордпресс тоже должен быть одной большой дырой. Пойду просматривать на своих сайтах, если ли у меня такие формы.
Roman Pushkin 2007-10-29 09:33:24
В ASP.NET по-умолчанию есть защита от такого типа атак.
vosemd 2007-10-29 11:03:05
Довольно старая уязвимость, в свое время с её помощью меняли пароли на mail.ru и прочих сервисах -- присылали письмо с ифреймом или ссылкой. Именно после этого при смене важных данных в форме стали ставить поле пароль.
Greignar 2007-10-31 10:46:03
Написано так, что самому пришлось читать на википедии... Кука привязывается к конкретному ip. Соответственно молдавский хацкер ничего с ней сделать не сможет. Это уже достаточно давно реализуется на форумах - писать с другого ip можно, а если что-то поменять в админке - требует подтвердить паролем.
Alexf: блог где палят темы : Защита от брутфорса 2007-11-07 23:17:55
[...] означающий подбор пароля. Предположим что вы опять же, веб-разработчик из Саратова (из глуши). У вас на сайте есть формочка, [...]
Greignar 2007-11-08 11:02:12
Брутфорс не актуален даже для веб-разработчика из Саратова :) Интересно, нужно жить в Москве, чтобы знать каким образом защититься от брутфорса?
alexf 2007-11-08 15:41:54
Greignar, Как показывают комментарии, почти все москвичи тоже не знают, включая вас. :) Про брутфорс лучше писать в сообщении о брутфорсе, тут пишут про CSRF.
Greignar 2007-11-09 02:29:47
alexf, действительно немного недопонял... На страницу подсовывается скрипт, который самостоятельно изменяет данные от имени и с компьютера пользователя. Вопрос в том, сможет ли скрипт подделать реферер (изменение данных разрешено только при переходе с конкретных форм, к примеру http://???.ru/users/edit.htm)? А если он самостоятельно сможет ввести символы с капчи (подтвердить изменения данных) то я сдаюсь... З.Ы. Хоть я и не разработчик, и живу на другом конце России, получается сам не зная того успел обезопаситься. Или еще пока нет?
alexf 2007-11-09 03:05:35
Строго говоря, использовать реферрер для чего либо кроме сбора информации - неправильно. Я могу одной кнопкой в браузере запретить показ реферера. Или реферер может потеряться при переходе по хитро сформированной ссылке. Или я просто адрес нужной страницы введу вручную. И при этом я останусь легитимным пользователем сайта. А поменять информацию не смогу. :) В статье написано что нужно делать, зачем пытаться изобрести неправильно работающий велосипед?
Greignar 2007-11-09 03:23:40
alexf, если я смогу запустить на машине пользователя произвольный ява скрипт, то скрипт сможет в фоне подгрузить форму для изменения пароля, выдернуть из нее "уникальное скрытое поле" и преспокойно отправить все на сервер. Кстати, про реферер не я придумал, это давняя "защита" от выполнения скрипта при запросе из за пределов сайта, да и на ВИКИ (по указанному вами адресу) этот вариант защиты рассматривается. Самое интересное, что и куки вы можете запретить, но в нужных местах разрешаете. Чем же реферер провинился? Мне кажется все просто - хочешь работать с данным ресурсом - давай ему то, что он просит. P.S. Велосипед с реферером "неправильно" работает на многих форумах, и правильно делает что работая таким "неправильным" способом защищает своих посетителей.
alexf 2007-11-09 03:44:45
1. Запуск произвольного скрипта на машине пользователя не является CSRF. 2. Скрипт не сможет ничего выдернуть из страницы на чужом сайте, это основа основ безопасности, иначе такие танцы с бубнами как CSRF были бы вообще не нужны. Весь серверный АЯКС как раз нужен чтобы обойти запрет на кросс доменные запросы.
Greignar 2007-11-09 04:18:54
1. Внедряя ссылку на якобы рисунок, мы пытаемся запустить ява-скрипт на машине пользователя. Нам нужен ip оригинальной машины и его кука для последующих манипуляций с паролем. С чужого ip и с украденой кукой ничего не получится. 2. Почему не выдернет? Скрипт так же может давать запрос на получение страницы и получать ее. Какая тут основа основ? Можно защититься, но только нелюбимым вами реферером. Причем сдесь аякс? Серверная честь "аякса" это обычный скрипт, преобразующий запросы клиентской части и отдающий ей все то, что она просит. Яякс нужен не для кроссдоменности, а для асинхронного обмена м-у клиентом и сервером.
alexf 2007-11-09 04:38:13
> Скрипт так же может давать запрос на получение страницы и получать ее. Не может. Попробуйте хоть 1 раз так сделать с нормальными, стандартными настройками безопасности в любом популярном браузере. Я не понимаю зачем спорить ради спора, тем более противоречить общеизвестным элементарным вещам. Поэтому со своей стороны диалог прекращаю.
Greignar 2007-11-09 04:55:45
Проверьте сами - http://arsengine.org.ru/diary/1189566556512591.htm Там по ссылке ява скрипт дает запрос скрипту на сервере, получает данные и выводит их на страницу. Можете даже посмотреть исходный текст формы, в нем вы не найдете ни формы, ни комментариев. Работает на Опере и ИЕ, на Фоксе не пробовал. А что такого, скрипт запускается в контексте оригинальной страницы. Насколько я понял, в CSRF используется идея внедрение скрипта в контекст страницы, в противном случае он по причинам безопасности не сможет воспользоваться чем-то другим.
Бикини червь в Facebook 2009-11-24 03:58:10
[...] через CSRF - при клике открывается ссылка с ифреймом, который [...]

новичкам | палю тему | хакерство | холокост | шняга |