Disclaimer: Если Вы разбираетесь в типах угроз и противодействию им — можете смело листать ленту дальше, так как ничего нового Вы, скорее всего, не узнаете. Но если аббревиатуры MITM, XSS или XFRS для вас ничего не значат, и у вас на сайте стоит один или несколько виджетов — сегодня Вы можете узнать много нового.
Безопасность виджета
Зачастую владелец сайта может даже не догадываться, что страницы его представительства в интернете чем-то заражены. Конечно, в последнее время хостеры достаточно успешно начали решать эту проблему, постоянно проводя проверку файлов своих клиентов на наличие вредоносного кода, но и это, как известно, не панацея.
Чтобы защитить клиентскую часть виджеты RedHelper загружается через iframe. Те, кто в курсе как работает эта технология уже поняли, в чем суть. Но все же приведу аналогию. Iframe можно сравнить с посольством. Какие бы страшные вещи не происходили за забором посольства, внутри действуют законы того государства, чей флаг развивается над входом. Точно так же и для iframe-виджета RedHelper не важно, какие угрозы и дыры в безопасности присутствуют на сайте — все данные вводятся в защищенные поля ввода, безопасность которых обеспечена серверной частью.
Безопасность серверной части
Мы постарались защитить RedHelper по высшей категории от всех имеющихся угроз. Но чтобы не расслабляться, мы регулярно просим известные компании, занимающиеся интернет-безопасностью, провести аудит нашей системы. К нашей чести, результаты всегда находятся на высоком уровне, а все найденные уязвимости мы оперативно устраняем.
Если говорить подробнее, то виджеты онлайн-консультантов и обратных звонков подвержены 5 типам интернет-угроз. И ниже мы расскажем, как им противостоит RedHelper.
MITM — Man In The Middle — Человек посередине
Самая понятная аналогия для этого типа уязвимости — прослушка телефона. Но в том, что кто-то может прочитать или удалить сообщения оператора и клиента только полбеды — злоумышленник может их изменять по своей воле. Причем ни оператор, ни клиент не будут догадываться о наличии “третьего лишнего” в канале.
Чтобы защититься от этой угрозы мы используем защищенный https-протокол с обязательным ssl-шифрованием. И даже если злоумышленник каким-то образом получит доступ к файлам сайта, и изменит подключение нашего скрипта с https на http — ничего плохого не случится. В RedHelper используется SSL-сертификат Comodo. Эта фирма является одним из мировых лидеров сетевой безопасности, и ее сертификаты всегда отличались хорошей защищенностью.
Чтобы было понятно, как это работает — давайте снова обратимся к магии аналогий. Допустим, Вам нужно отправить посылку своему клиенту Почтой России. Вы идете в свое отделение, упаковываете посылку и отправляете ее. Но подозревая почтальона Печкина в нечестной игре предварительно вешаете на посылку замок. Ключ при этом остается у вас. Несмотря на свое природное любопытство Печкину ничего не остается, кроме как доставить посылку адресату, так и не узнав содержимого.
Но адресат так же не может открыть посылку, т.к. не имеет ключа. Поэтому ваш клиент вешает на посылку свой собственный замок, и отправляет обратно. Опять-таки без ключа. Печкин видя, что теперь на посылке аж два замка, горюет, но привозит посылку обратно. Удостоверившись в том, что оба замка на месте и не имеют следов взлома, вы снимаете свой замок и в третий раз отправляете посылку. На этот раз клиент уже сможет ее открыть — своим собственным ключом.
Печкину, конечно, пришлось побегать, но содержимое посылки так и осталось для него тайной.
SQL-injection — Внедрение SQL-кода.
Внедрение опасного SQL-кода относится к разряду опаснейших уязвим остей на сайте. Возможность успешного «паразитирования» злоумышленника на Вашем сайте в случае удачной SQL-инъекции превышает 99%.
Это достаточно распространенный способ взлома программ и сайтов, работающих с БД (базами данных), и основан он на добавлении в запрос какого-либо SQL-кода.
Внедрив SQL-код злоумышленник может получить полный доступ к любой части сайта — будь то FTP (грозит потерей или изменением файлов), почтовые сервисы (возможность отправлять письма с вашего домена), административная панель сайта (изменение любой информации на сайте) или любые другие составляющие. Не говоря уже о том, что могут быть украдена вся информация, хранящаяся в Базе Данных.
От этой угрозы RedHelper защищен просто, но очень эффективно — любой исполняемый код, который попытается передать злоумышленник преобразуется в обычный текст, без возможности его исполнения.
XSS — Cross Site Scripting — межсайтовый скриптинг
Обратная ситуация, когда вредоносный код внедряется в выдаваемую посетителю веб-страницу. При открытии этой страницы код будет выполнен на компьютере клиента и начнет взаимодействие с веб-сервером злоумышленника.
Это тоже очень опасная уязвимость. С ее помощью злоумышленник может не только похитить cookies (а иногда даже логин и пароль от личного кабинета посетителя на этом сайте), но и устроить настоящую DDoS-атаку на ваш сайт. Особенно это опасно для сайтов с высокой посещаемостью — каждый новый посетитель по воле злоумышленника будет создавать целую кучу запросов, которые рано или поздно “положат” сервер.
Защита в данном случае точно такая же, как и с SQL-injection — все необходимые для работы приложения, виджета и серверной части данные передаются в виде текста, без возможности исполнения команд.
XSRF — Cross Site Request Forgery — межсайтовая подделка запроса
Опаснейшая атака, которая приводит к тому, что злоумышленник может выполнить на неподготовленном сайте массу различных действий от имени других, зарегистрированных посетителей.
Какие это действия – отправка ли сообщений, перевод денег со счёта на счёт или смена паролей – зависит от сайта, но в любом случае ничего хорошего не ждите.
Эта атака на посетителей сайта использует недостатки протокола HTTP. Когда владелец аккаунта онлайн-консультанта заходит на зараженный сайт, то от его имени тайно отправляется запрос на другой сервер (в рассматриваемом примере — на наш), осуществляющий некую вредоносную операцию. Например — смена пароля или удаление аккаунта.
Но для осуществления данного действия нужно множество факторов:
- жертва должна быть аутентифицирована на нашем сервере
- запрос не должен требовать какого-либо подтверждения со стороны пользователя.
- подтверждение может быть проигнорировано или подделано атакующим скриптом
Поэтому любое действие, которое может привести к нежелательным последствиям, требует подтверждения со стороны пользователя и зашифровано секретным ключом для проверки запросов, что исключает возможность атаки.
В заключение
Мы очень ревностно относимся к безопасности своего продукта и личных данных клиентов, а потому стараемся обеспечить надежность со всех сторон — на сайте клиента, на нашем сервере, и в приложении оператора. Множество раз мы просили компании, специализирующиеся на аудитах интернет-безопасности, проверить наши сервисы, и каждый раз мы с честью выдерживали эти испытания, получая лишь небольшой список некритичных замечаний, которые устраняли в самые короткие сроки.
Для этого мы прилагаем большие усилия. Наши специалисты постоянно своевременно предпринимают необходимые меры по улучшению безопасности – регулярно обновляют программное обеспечение и сертификаты безопасности, отслеживают все возможные варианты взлома системы и вводят новые степени защиты. Благодаря чему мы с гордостью можем сказать, что на данный момент онлайн-консультант RedHelper и обратный звонок RedConnect являются одними из наиболее защищенных систем обратной связи с клиентами.
Комментарии (11)
xxxphilinxxx
14.06.2016 13:56+7В чем ценность статьи? Если выкинуть детское описание известных каждому веб-разработчику уязвимостей, останется вводный абзац, заключение и упоминание iframe — еще одной популярной технологии. Ни подробностей, ни примечательных техник.
Barokko_von_Dau
14.06.2016 14:00Одна целей наших блогов — популяризировать IT в различных проявлениях и рассказывать простым языком о сложных вещах.
Ведь на этом сайте, к счастью, сидят не только веб-разработчики. Писать статью для профессионалов — неблагодарное занятие, т.к. все уважающие себя профессионалы уже «сами с усами» и всё знают. Только вот иногда забывают, что ДО того как стать профи они начинали именно с таких вот простых для понимания статей.
pyrk2142
14.06.2016 14:03Для начала, спасибо за статью.
Однако, хотелось бы узнать следующее:
Но чтобы не расслабляться, мы регулярно просим известные компании, занимающиеся интернет-безопасностью, провести аудит нашей системы.
Эти компании привлекались для аудита панели управления? Или только виджета на сайтах?Barokko_von_Dau
14.06.2016 14:08Обычно заказываем аудит нашего собственного сайта (как внешней «оболочки», так и личного кабинета), самого виджета и приложение оператора. Комплексно подходим =)
pyrk2142
14.06.2016 14:23+2Вероятно, вам не повезло наткнуться либо на ленивую команду аудиторов, либо на обыкновенных бездарей. Ибо за полчаса я нашел у вас в кабинете и MITM, и CSRF. Грустный результат после множественных аудитов.
Barokko_von_Dau
14.06.2016 14:24А как бы нам с вами связаться? =) Думаю, разработчики будут только рады закрыть найденные дыры.
NosovK
14.06.2016 22:53могу сказать что с функциональностью самого чата есть проблемы. К примеру передача параметров в чат. Она не работает для spa (Angular к примеру). То есть чат принимает только параметры заданные до его инициализации. Если же это spa — логин происходит далеко после загрузки. И чат благополучно игнорирует новые данные об Id/mail пользователя.
serafims
А ещё его наличие грозит ненавистью к авторам сайта, если этот виджет вылезает на полэкрана, не давая с содержимым ознакомиться, особенно на мобильных устройствах все плохо бывает… даже в свернутом виде мешает…
Barokko_von_Dau
О да, верно подмечено. Именно поэтому у нас такого нет — принципиальная позиция. мы даже pop-up в обратном звонке запихали подальше в настройки и по-умолчанию выключили.
ValdikSS
https://github.com/pafnuty/onlineConsultantBlocker