Защита бизнеса от кибератак. Как обеспечить безопасность своего интернет-проекта?

Более 86% веб-приложений имеют критические уязвимости, которые могут привести к компрометации ресурса и краже конфиденциальной информации. Статистика показывает, что треть компаний обращаются уже по факту первого инцидента. Экономия и игнорирование информационной безопасности может в один прекрасный момент сыграть злую шутку - нанести финансовый ущерб и репутационные потери.

Защита бизнеса от кибератак. Как обеспечить безопасность своего интернет-проекта?

Внешняя угроза

Веб-сайты до сих пор остаются самым легкодоступным и уязвимым местом для атаки хакеров. В большинстве случаев часть таких атак приходится на различные B2C/B2B сервисы, предоставляющие разнообразные услуги для своих клиентов. Для злоумышленника представляет интерес в первую очередь денежные средства или криптовалюта на аккаунтах, если речь идет о криптобиржах и онлайн обменниках, а так же любые данные, которые можно украсть и впоследствии монетизировать.

На сегодняшний день можно классифицировать два типа основных атак:

1. DDoS (Denial of Service) — атака направленная на вывод сайта из строя. Сайт компании перестает работать и как следствие привлекать клиентов и приносить прибыль. Данный вид атаки является популярным методом для давления и устранения конкурентов, особенно когда на рынке становится тесно для нескольких крупных игроков. Для некоторых компаний несколько дней простоя могут обойтись в десятки и сотни тысяч долларов убытков. Заказчик таких атак в большинстве случаев остается безнаказанным, так как собрать доказательную базу практически невозможно. Если раньше можно было отследить цепочку движения денежных средств заказчик-исполнитель, то с появлением криптовалют сделать это намного сложнее.

2. Атаки, направленные на компрометацию ресурса. В этом случае веб-ресурс исследуется на предмет наличия уязвимостей, эксплуатация которых, приводит к полному или частично контролю над сайтом, краже конфиденциальной информации, проникновению во внутреннюю сеть компании, атаки на пользователей приложения.

Такие атаки могут развиваться по двум сценариям:

  • Целью является сама компания и ее сотрудники
  • Атака на конечного пользователя, т.е. клиента компании, посредством взлома поставщика услуг.

Почему хакеров так привлекают b2c/b2b сервисы?

Ответ прост. Проще взломать один сервис и уже через него провести атаку на десятки и сотни тысяч пользователей. Это очень удобно сделать через взлом сервиса почтовых рассылок. После взлома поставщика услуг, злоумышленник получает доступ к вашему аккаунта и вашей базе подписчиков. Далее идет рассылка фишинговых писем, с просьбой поменять пароль, обновить платежные реквизиты и т.д. Пользователь в этом случае обычно выполняет требуемые действия, так как письма приходят уже с знакомого адреса, не вызывая подозрений.

Последствия кражи базы данных может ощущаться спустя некоторое время, например, беспричинным падением продаж. Злоумышленник всегда старается скрыть следы проникновения - удаляет свои логи на всех уровнях.

Показательные атаки и последствия взломов, которые сразу же попадают в СМИ - теперь уже не вызывают удивления. Достаточно вспомнить атаки хакера на сайты Yota, MegaIndex и Автоваза. Целью такой атаки становится не кража информации, а просто самопиар и способ указать сотрудникам компаний на их некомпетентность в аспектах безопасности и защите своих сайтов. В таких случаях очень сильно страдает репутация бизнеса. Немногие изъявят желание пользоваться услугами компании, которая не в силах обеспечить безопасность даже своих клиентов.

Примеры уязвимостей и последствия их эксплуатации

<b>Слабая функция шифрования пароля в hash (DES) для паролей. </b>Все пароли длиннее 8 символов будут иметь такой же хеш, что и первые 8 символов этих паролей соответсвенно, то есть пароли 12345678 и 1234567890abcd в таком случае будут иметь один и тот же хеш в базе проекта, что упрощает подбор хешей для выявления паролей.
Слабая функция шифрования пароля в hash (DES) для паролей. Все пароли длиннее 8 символов будут иметь такой же хеш, что и первые 8 символов этих паролей соответсвенно, то есть пароли 12345678 и 1234567890abcd в таком случае будут иметь один и тот же хеш в базе проекта, что упрощает подбор хешей для выявления паролей.
К примеру если взять хеш из логов транзакций и попробовать его подобрать с помощью утилиты john, то получится выяснить пароль за достаточно короткий промежуток времени. За 5 секунд был определен пароль ‘admin’.
К примеру если взять хеш из логов транзакций и попробовать его подобрать с помощью утилиты john, то получится выяснить пароль за достаточно короткий промежуток времени. За 5 секунд был определен пароль ‘admin’.
В связи с отсутствием фильтрации html-тегов допустима кража cookies (на примере показана возможность исполнения javascript кода - в частности отображение cookies через тег img).<b> Вектор атаки:</b> в этом случае можно сформировать ссылку на xss-снифер и отправить ее администратору ресурса (например по почте), при переходе на которую (браузером) могут быть скопированы cookies администратора и сразу же откроется страница оригинального ресурса (при современных скоростях интернета эти 2 шага успеют завершиться менее чем за 1 секунду).
В связи с отсутствием фильтрации html-тегов допустима кража cookies (на примере показана возможность исполнения javascript кода - в частности отображение cookies через тег img). Вектор атаки: в этом случае можно сформировать ссылку на xss-снифер и отправить ее администратору ресурса (например по почте), при переходе на которую (браузером) могут быть скопированы cookies администратора и сразу же откроется страница оригинального ресурса (при современных скоростях интернета эти 2 шага успеют завершиться менее чем за 1 секунду).
В приложении была обнаружена логическая ошибка. Имеется функционал создания и редактирования так называемых «Тег»ов. Уязвимость заключается в том, что не происходит проверки принадлежности тега пользователю, тем самым, злоумышленник может изменить любой тег в системе. <b> Вектор атаки: </b>перебрав переменную «TagID», злоумышленник может сменить имя Тега любому пользователю.
В приложении была обнаружена логическая ошибка. Имеется функционал создания и редактирования так называемых «Тег»ов. Уязвимость заключается в том, что не происходит проверки принадлежности тега пользователю, тем самым, злоумышленник может изменить любой тег в системе. Вектор атаки: перебрав переменную «TagID», злоумышленник может сменить имя Тега любому пользователю.
Несмотря на расположение проекта на Cloudflare, можно обнаружить истинный IP-адрес сервера. Если ваш проект будет использоваться в связке с серверами Cloudflare , необходимо разрешить подключения к веб-серверам только от адресов Cloudflare (используя фаервол iptables) , что ограничит атаки в обход защищенных фронтендов.
Несмотря на расположение проекта на Cloudflare, можно обнаружить истинный IP-адрес сервера. Если ваш проект будет использоваться в связке с серверами Cloudflare , необходимо разрешить подключения к веб-серверам только от адресов Cloudflare (используя фаервол iptables) , что ограничит атаки в обход защищенных фронтендов.
Почтовая служба Exim устарела и имеет локальную уязвимость. <b> Вектор атаки:</b> публичная информация об уязвимости создает высокий риск создания эксплоитов (программ для проведения разного рода атак на вычислительные системы), это может быть приватный или публичный вариант эксплоита, оба по-своему опасны. Обновить все сетевые службы до последней версии, во избежание использования публичных эксплоитов - это то, что вы можете сделать сами, без привлечения специалистов.
Почтовая служба Exim устарела и имеет локальную уязвимость. Вектор атаки: публичная информация об уязвимости создает высокий риск создания эксплоитов (программ для проведения разного рода атак на вычислительные системы), это может быть приватный или публичный вариант эксплоита, оба по-своему опасны. Обновить все сетевые службы до последней версии, во избежание использования публичных эксплоитов - это то, что вы можете сделать сами, без привлечения специалистов.
На исследуемом ресурсе присутствовал скрипт для создания бэкапов баз данных, который являлся частью функционала панели администрирования. Некорректная реализация авторизации компонентов, позволяет получить доступ к скрипту и его функционалу неавторизованному пользователю. <b>Вектор атаки: </b>используя данную уязвимость, злоумышленник имеет возможность получить бэкап базы данных, включая логины и пароли администраторов сайта.
На исследуемом ресурсе присутствовал скрипт для создания бэкапов баз данных, который являлся частью функционала панели администрирования. Некорректная реализация авторизации компонентов, позволяет получить доступ к скрипту и его функционалу неавторизованному пользователю. Вектор атаки: используя данную уязвимость, злоумышленник имеет возможность получить бэкап базы данных, включая логины и пароли администраторов сайта.
В CMS-системе присутствует Boolean Based SQL Injection, позволяющая получать бинарную информацию из SQL базы данных. <b>Вектор атаки: </b>используя данную уязвимость, из базы данных были получены логины и захешированные пароли от панели администрирования сайта. Используя эти данные, был получен доступ в панель администрирования сайта.
В CMS-системе присутствует Boolean Based SQL Injection, позволяющая получать бинарную информацию из SQL базы данных. Вектор атаки: используя данную уязвимость, из базы данных были получены логины и захешированные пароли от панели администрирования сайта. Используя эти данные, был получен доступ в панель администрирования сайта.
Служба SSH уязвима к подбору паролей и не ограничивает число попыток аутентификации.
Служба SSH уязвима к подбору паролей и не ограничивает число попыток аутентификации.

В одном из примеров выше веб-студию решила сделать свою CMS и разрабатывала на ней все сайты своих клиентов. В результате использования небезопасных методов программирования CMS получилась с множеством уязвимостей. В итоге при взломе одного сайта злоумышленникам удалось взломать еще около 50 сайтов, через одни и те же уязвимости. В ходе аудита суммарно удалось выявить 23 уязвимости, 13 из которых были критическими и вели к несанкционированному доступу. Это наглядный пример того, как не надо делать свою CMS.

В целом, первое место занимают все те же инъекции, SQL/NoSQL. XSS сместился на 7 позицию, CSRF (межсайтовая подделка запроса) исчезла из списка, связано это со встроенной защитой в фреймворках от CSRF, хотя все так же часто встречается при тестировании, как и XSS.

OWASP Top 10 - наиболее критичные уязвимости веб-приложений.
OWASP Top 10 - наиболее критичные уязвимости веб-приложений.

Безопасность как процесс

Единственным и рациональным решением для обеспечения безопасности веб-приложения является использование комплексного подхода на протяжение всего жизненного цикла разработки программного обеспечения (SDLC). Целесообразно будет использовать как технические средства защиты так и организационные меры.

  • Безопасность на стадии разработки

Заказывая разработку приложения следует обсудить вопросы безопасности еще на стадии подписания договора. Уточнить, есть ли в штате компании специалист, отвечающий за безопасность приложений или компания прибегает к услугам внешних аудиторов. Данный этап очень важен, так как впоследствии при обнаружении множества уязвимостей проще будет переписать приложение с нуля, чем исправлять все дыры.

  • Аутсорсинг ИБ

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

Аудит безопасности исходного кода, он же code security review - услуга позволяющая проверить каждую строчку кода на уязвимости. Максимально эффективное обнаружение SQL инъекций, XSS, CSRF, Buffer overflows и Race conditions до запуска проекта.

Тест на проникновение направлен на выявление уязвимостей бизнес-логики, неправильного разграничения доступа, некорректной аутентификации и управление сессиями. Задача аудитора - обойти все средства и методы защиты приложения и получить доступ к приватным данным.


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

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

  • Технические средства защиты

Использование по необходимости защиты от DDoS атак, внедрение WAF и использование сканеров уязвимостей, является неотъемлемой частью комплексного подхода и служит дополнительной защитой. Данные инструменты используются как вспомогательные средства в связке аудиторских тестов. Запомните - WAF предотвращает лишь часть целевых атак по уже заданным и известным сигнатурам и паттернам, уязвимости бизнес-логики находятся вне зоны использование фаервола. В ходе тестирования некоторых проектов, удается узнать реальный ip адрес приложения, тогда WAF становится абсолютно бесполезным, так как все атаки идут в обход него, а не через него, как было изначально задумано. Сканеры уязвимостей упрощают для аудитора в ходе тестирования сбор информации о необходимости обновлений служб/ПО, выявления небезопасных конфигураций, открытых портов и анализ поверхностных уязвимостей, но никак не являются панацеей и как показывают тесты не обеспечивают 100% обнаружение всех угроз.

  • Обучение персонала

Множество атак на компании проходят с помощью социальной инженерии. Человек до сих пор остается самым уязвимым звеном в цепочки безопасности. Злоумышленник легко может попросить проверить “неполадки” в его личном кабинете, где уже размещен вредоносный код, с помощью которого можно легко украсть сессию сотрудника поддержки и получить привилегии в системе.

Или представившись сотрудником IT отдела этой же компании, воспользоваться доверием и невнимательностью работника, сославшись на неполадки в работе его компьютера, попросить сообщить данные для доступа к системе.

Это применимо к крупным компаниям, где сотрудники из одних отделов не знают в лицо специалистов из IT отдела, поэтому такой звонок и просьба не вызовут каких-либо подозрений. Использование парольных политик и регламентов даже для рядового персонала, является важнейшим правилом обеспечения безопасности внутри компании.

Доверяйте поддержку только опытным специалистам. Отправляйте своих программистов на курсы по защите веб-приложений. На данный момент в России несколько центров обучения, которые могут предложить такие курсы. В результате вы получите штатного сотрудника, которые разбирается в методах защиты вашего проекта.

Вывод

Подводя итоги и задумываясь о самом эффективном методе защите своих проектов, помните, что безопасность - это процесс, а не единоразовое мероприятие. Не стоит забыть про банальное обновление ПО и использование безопасных методов программирования.

  • Используйте только комплексный подход - техническая защита + аудит
  • Обновляйте все сетевые службы и ПО до последних версий, во избежание использования публичных эксплоитов. Используйте сервисы для проверки https://www.cvedetails.com и https://www.exploit-db.com и им подобные
  • Регулярно проводите тестирование сканером уязвимостей, например Acunetix WVS
  • Отключайте в коде сайта отладку и трассировку (для предотвращения раскрытия данных)
  • Отключать в средах неиспользуемые функции ОС
  • Проводите мониторинг и анализ лог-файлов серверов
  • Ограничивайте доступ по IP к критически важным данным
  • Строго разделяйте среды тестирования и разработки во избежании утечки данных
  • Тщательно продумывайте бизнес-логику приложения, особенно при интеграции с платежными системами, дабы избежать уязвимостей с подменой ордеров на вывод денежных средств, криптовалюты, баллов и т.д.
  • Для защиты от OWASP атак: передавать cookie c http-only флагами (защита от кражи cookie через внедренный Java Script код); устанавливать HTTP-заголовок X-Frame-Options (защищает фреймы html-страницы от незаметного подключения чужих фреймов)+ устанавливать HTTP-заголовок X-XSS-Protections (указывает браузеру при значении в 1 удалять небезопасное содержимое, в случае XSS атаки на сайт)
  • Для основной фильтрации всех атак из списка TOP 10 OWASP достаточно установить htaccess-фильтр https://perishablepress.com/6g-beta/ (производит фильтрацию пользовательских параметров по регулярному выражению)
  • Корректно настраивайте сетевой фильтр iptables (с политиками по умолчанию DROP, для цепочек INPUT, FORWARD и OUTPUT), для блокировки всех неучтенных соединений. Политика основных цепочек iptables должна быть запрещающей. Все службы, используемые только для локальных целей должны быть недоступны из неизвестных сетей.
  • Установите утилиту Fail2ban для предотвращения подбора паролей на любые сетевые службы, число неудачных подключений с паролями нужно ограничивать.

55
3 комментария

Ну есть над чем подумать.

Ну про фишинг почему то ни слова. А то в последнее время по видом рег. ру пишут практически каждый день.

1

Про фишинг написали, может быть и не так много.

"После взлома поставщика услуг, злоумышленник получает доступ к вашему аккаунта и вашей базе подписчиков. Далее идет рассылка фишинговых писем, с просьбой поменять пароль, обновить платежные реквизиты и т.д. Пользователь в этом случае обычно выполняет требуемые действия, так как письма приходят уже с знакомого адреса, не вызывая подозрений."