Топ-10 критических рисков и угроз для веб-приложений

| Вторник, 8 января, 2019

Метки: Безопасность Комментарии: 0

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

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

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

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

Многие современные веб-разработчики используют в своих веб-приложениях такие компоненты, как библиотеки и платформы. Эти компоненты являются частями программного обеспечения, которые помогают разработчикам избежать избыточной работы и обеспечивают необходимую функциональность. Распространенным примером являются интерфейсные платформы, такие как React, и небольшие библиотеки, которые использовались для добавления значков общего доступа или A/b-тестирования. Некоторые злоумышленники ищут уязвимости в этих компонентах, которые затем могут использовать для организации атак. Некоторые из наиболее популярных компонентов используются на сотнях тысяч сайтов. Злоумышленник, обнаруживший брешь в безопасности одного из этих компонентов, может оставить уязвимыми сотни тысяч сайтов.

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

Недостаточное ведение журнала и мониторинг

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

SQL-инъекция (SQi)

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

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

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

Что такое атака на составные SQL-инъекции

Чтобы обойти меры безопасности, умные злоумышленники иногда осуществляют многовекторные атаки на целевой веб-сайт. Хотя одна атака может быть смягчена, она также может стать объектом внимания администраторов баз данных и групп информационной безопасности. DDoS-атаки, угон DNS и другие методы нарушения иногда используются в качестве отвлечения внимания для реализации радикальных атак SQL-инъекций. В результате комплексная стратегия смягчения угроз обеспечивает самый широкий спектр защиты. Брандмауэр веб-приложений Cloudflare, смягчение DDoS и безопасность DNS являются основными элементами целостной стратегии безопасности.

Межсайтовые сценарии

Уязвимости межсайтового скриптинга возникают, когда веб-приложения позволяют пользователям добавлять пользовательский код в url-адрес или на веб-сайт, который будут видеть другие пользователи. Эта уязвимость может быть использована для запуска вредоносного кода JavaScript в браузере жертвы. Например, злоумышленник может отправить письмо жертве от надежного банка, с ссылкой на сайт. Эта ссылка может содержать вредоносный код JavaScript, помеченный в конце url-адреса. Если сайт банка не защищен должным образом от межсайтового скриптинга, то вредоносный код будет запущен в браузере жертвы при нажатии на ссылку.

Стратегии смягчения для межсайтовых сценариев включают экранирование ненадежных HTTP-запросов, а также проверку или очистку пользовательского контента. Использование современных платформ веб-разработки, таких как ReactJS и Ruby on Rails, также обеспечивает встроенную защиту от межсайтовых сценариев.

Переполнения буфера

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

Более современные языки, такие как Java, PERL и C#, имеют встроенные функции, которые помогают уменьшить вероятность переполнения буфера, но не могут предотвратить его полностью.

Комментарии
Никто еще не оставил здесь комментарий.
Войдите, чтобы написать комментарий , или воспользуйтесь формой ниже.
 

Copyright © CodeHint.ru 2013-2019