Безопасность Web-приложений: 10 главных угроз и как от них защититься

Назад
03
Апр 2020

Содержание:

1. Внедрение
2. Некорректная аутентификация
3. Утечка конфиденциальных данных
4. Внешние XML-сущности (XXE)
5. Нарушение контроля доступа
6. Неправильная настройка безопасности
7. Межсайтовый скриптинг (XSS)
8. Небезопасная десериализация
9. Использование компонентов с известными уязвимостями
10. Недостаточный мониторинг и ведение логов
Общие правила защиты веб-приложений
Чек-лист мер обеспечения защиты веб-приложений

 

По данным Positive Technologies, 26% всех кибератак приходится на сайты. Еще 49% – направлены на инфраструктуру предприятий, которая также часто основана на интернет-технологиях.

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

Далее рассмотрим популярные виды угроз и как от них защититься.

10 угроз для веб-приложений

1. Внедрение

Хакеры часто используют поля ввода, чтобы внедрять грамматически допустимые конструкции, нарушающие логику приложения. Так можно ввести вредоносный код в приложения, основанные на SQL, noSQL или LDAP.

SQL-инъекция – один самых распространенных видов атак на веб-приложения.

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

Как обезопаситься:

  • Убедитесь, что данные вывода соответствуют логике приложения. Если приложение просит ввести имя в поле ввода, оно должно выводить тоже имя, а не базу данных целиком.
  • Защищайте поля ввода. Например, при вводе номера телефона у пользователя должна быть возможность вводить только цифры и ограниченное количество релевантных знаков (например, плюс и скобки), но не другие символы. Имена пользователей не должны содержать последовательности вроде «—«.
  • Автоматизируйте поиск уязвимостей в коде с помощью специализированных инструментов анализа, таких как: Raxis, DeepScan, Kiuwan, PVS-Studio, Gamma, reshift.

2. Некорректная аутентификация

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

На многих сайтах не соблюдаются требования к сложности пароля. Например, когда количество попыток ввода не ограничено. Хакер может взломать аккаунт через обычную брут-атаку – методом полного перебора паролей.

Как обезопаситься:

  • Чтобы замедлить атаки используйте Капчу — мини-тест, позволяющий убедиться, что пароль вводит человек, а не программа.
  • Усильте качество паролей и ограничьте максимальное количество попыток ввода. Также можно ввести обязательный интервал после каждой попытки.
  • Запретите стандартные и слишком легкие сочетания логинов и паролей, вроде «admin», «administrator», «password», «qwerty», «123456».
  • Обеспечьте соблюдение требований к сложности пароля: минимум 8 знаков, среди них должны быть заглавные и прописные символы, буквы и цифры.

3. Утечка конфиденциальных данных

Использование небезопасных протоколов и некачественная криптография идут на руку взломщикам. Используя косвенные индикаторы и побочные каналы, злоумышленники могут определить ключи или методы шифрования.

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

Как обезопаситься:

  • Ограничьте доступ к конфиденциальным данным для пользователей без соответствующих прав.
  • Используйте надежное шифрование для защиты данных и соединений.

4. Внешние XML-сущности (XXE)

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

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

Как обезопаситься:

  • Отключить обработку внешних объектов в анализаторе XML.
  • Используйте методы, которые позволяют обнаруживать и игнорировать внешние объекты, такие как пути к файлам или ссылки.

5. Нарушение контроля доступа

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

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

Как обезопаситься:

  • Все доступные функции логики должны четко разграничивать права каждой роли:администратора, пользователя, гостя и т. д.
  • Контроль доступа должен быть реализован на каждом уровне.
    • Презентация: скройте информацию о недоступных функциях.
    • Логика: не внедряйте функции, которые изменяют состояние модели до авторизации пользователя.
    • Данные: доступными должны быть только те данные, которые необходимы для конкретной роли (безопасность на уровне строк).
  • Идентификаторы объектов должны быть случайными: у хакеров не должно быть возможности угадывать будущие значения идентификаторов на основе уже наблюдаемых.

6. Неправильная настройка безопасности

Фреймворки, серверы, серверы баз данных, сами приложения – любые из этих компонентов могут быть уязвимыми и небезопасными.

Исследователи ежедневно находят уязвимости в системах и компонентах. Особенно сложно обезопаситься от уязвимостей нулевого дня – вирусов и уязвимостей, защита от которых еще не разработана.

Использование небезопасных компонентов приводит к краже информации и широкомасштабным атакам.

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

Как обезопаситься:

  • Включите стандартные параметры безопасности для серверов.
  • Не включайте тестовые учетные данные или конфиденциальную информацию в финальные версии ПО.
  • Не включайте заголовки «Сервер» и «Версия» в HTTP-ответы – хакеры могут воспользоваться такой информацией.
  • Установите флажки «secure» и «httpOnly», чтобы повысить защищенность файлов Cookie.

7. Межсайтовый скриптинг (XSS)

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

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

Как обезопаситься:

  • Поддерживайте защищенность и фильтруйте ввод и вывод на сайтах.
  • Включите защиту на уровне браузера.
  • Устанавливайте обновления браузера для актуализации настроек безопасности.

8. Небезопасная десериализация

Десериализация – это когда поток битовых данных преобразуется в объекты. Вредоносные или подделанные объекты могут вызвать серьезные проблемы безопасности. Злоумышленники могут использовать это для удаленного выполнения кода и запуска программ.

Как обезопаситься:

  • Не десериализуйте входные данные из ненадежных источников. В таких случаях безопаснее использовать JSON и XML.
  • Обеспечьте проверку целостности с помощью цифровых подписей при использовании сериализованных данных в HTTP-запросах.
  • Убедитесь, что десериализация обеспечивает строгие ограничения типов для всех объектов.

9. Использование компонентов с известными уязвимостями

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

Уязвимости могут быть в сторонних библиотеках и фреймворках. Хакеры знают об известных уязвимостях в популярных библиотеках. А иногда уязвимости или бэкдоры сознательно вставляются во внешние компоненты.

Как обезопаситься:

  • Используйте последние версии всего внешнего кода.
  • Минимизируйте использование сторонних компонентов.
  • Следите за новостями об уязвимостях в компонентах, которые вы используете. Когда такие уязвимости станут известны, устанавливайте исправления как можно быстрее. Даже при отсутствии исправлений вы все равно сможете защитить свои системы, внедрив обновления политики безопасности, как это было возможно во время вспышки WannaCry.

10. Недостаточный мониторинг и ведение логов

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

Как обезопаситься:

  • Запустите процедуры для обработки инцидентов.
  • Обеспечьте соблюдение соответствующих стандартов и правил: HIPPA, ISO, PCI DSS.
  • Постоянно внедряйте современные практики обеспечения защиты.
  • Усильте мониторинг.

Общие правила защиты веб-приложений

Гарантировать защищенность веб-приложений на 100% невозможно. Но зато можно минимизировать риски.Одним из важных шагов является внедрение безопасного цикла разработки (SDL).

Чтобы внедрить SDL, следует применять следующие меры на каждой стадии разработки:

  1. Идея: понимание концепции SDL, обучение сотрудников.
  2. Планирование: моделирование угроз, отслеживание внешнего ПО, требования к безопасности, GAP-анализ.
  3. Проектирование и разработка: код-ревью, статический анализ, сканирование уязвимостей.
  4. Тестирование: фаззинг, динамический анализ.
  5. Выпуск: финальный GAP-анализ, финальное тестирование защищенности,
  6. Поддержка: отслеживание и проверка внешнего софта, поиск уязвимостей.
  7. Закрытие/Продажа: корректное удаление данных, например, крипто-шреддинг.

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

Чек-лист мер обеспечения защиты веб-приложений

  • Установите web-фаервол (WAF) для защиты своего сайта.
    Это обеспечит безопасность веб-приложения, даже в нем есть уязвимости или появляются новые угрозы. WAF может остановить известные атаки на уровне программ и логики. Более того, он обнаруживает атаки через уязвимости нулевого дня, предотвращает атаки на пользователей, анализирует и сопоставляет события при восстановлении цепочек атак. В идеале, WAF должен быть интегрирован с внешней управлением информацией событиями и информацией о безопасности (SIEM) и решениями против DDoS. Интеграция WAF с автоматическим анализатором исходного кода позволяет использовать виртуальные патчи, которые закрывают уязвимости еще до того, как они были исправлены в коде.
  • Регулярно проводите оценку защищенности сайтов и исправляйте найденные уязвимости.
    По возможности, делайте вайтбокс анализ – аудит с полным доступом к коду приложения. Тесты должны выполняться на всех этапах цикла разработки сайта, а не только в последнюю минуту перед запуском.
  • Не используйте старые версии серверов, операционных систем, CMS или библиотек.
    Регулярно обновляйте все эти системы и устанавливайте свежие патчи.
  • Записывайте и расследуйте все попытки атак и сбои в системах безопасности.
    Своевременное определение источника угрозы позволяет минимизировать риски.
  • Используйте анализатор исходного кода.
    Это программное обеспечение находит уязвимости кода и слабые места на ранних этапах. В самом начале процесса разработки исправлять баги гораздо проще и дешевле. Большинство анализаторов кода могут защитить ваше приложение от распространенных уязвимостей.

Наша команда с радостью поможет проверить и улучшить безопасность вашего Веб приложения. Мы проконсультируем вас и найдем решение, которое будет направлено именно под ваши желания и задачи. Свяжитесь с нами или оставьте свои контакты и мы перезвоним в удобное для вас время. 

Ваc может заинтересовать

повышение продаж
Технологии

Как диджитализация бизнеса повышает продажи

02
Апр 2020
Диджитализация, она же цифровизация и цифровая трансформация, – это преобразование бизнеса с помощью информационных технологий. Под определение «диджитализация» попадает и создание сайта, и представительство в социальных сетях. Диджитализация повышает продажи бизнеса через: выход на интернет-аудиторию; привлечение целевой аудитории через дополнительные услуги;  повышение лояльности клиентов; автоматизацию процессов в отделе продаж.  Косвенно продажи растут и за счет […]
Технологии

3 причины, почему о диджитализации бизнеса нужно задуматься уже в 2020 году

23
Мар 2020
Диджитализация — это преобразование бизнеса с помощью современных технологий и методов управления. Этот процесс также называют цифровой трансформацией или цифровизацией.  С результатами диджитализации мы сталкиваемся ежедневно. Стоит только погуглить, например, погоду в Испании, как тут же на сайтах начнут мелькать баннеры туристических фирм. Так диджитализированный бизнес выходит на целевую аудиторию.  Цели диджитализации: повышение эффективности бизнеса, […]
Опыт

Фокус на бизнес-целях

10
Мар 2020
  Зачастую, IT подрядчик выполняет исключительно технические задачи: “скажите, что нужно сделать и мы сделаем”, совсем не понимая проблему, которую нужно решить. За 6 лет работы, мы приши к выводу, что разработка сайта, не является конечной целью. Это лишь инструмент, помогающий решить проблему заказчика. В центре нашего подхода — цели клиента. Мы разбираемся в технологиях, […]

Спасибо за ваш интерес!

Мы с вами свяжемся в ближайшее время