Статья OWASP TOP 10

  • Автор темы Автор темы danbus
  • Дата начала Дата начала

danbus

Green Team
13.11.2024
11
36
Существует стандартный информационный документ от OWASP (Open Web Application Security Project) - открытый проект по безопасности веб-приложений, созданный и поддерживаемый некоммерческой организацией OWASP Foundation. В нем приведен список критических уязвимостей веб-приложений. Этот список позволяет разработчикам и специалистам по информационной безопасности быть осведомленными о наиболее критичных угрозах, их последствиях и мерах противодействия. Компания обновляет список каждые три-четыре года и на сегодняшний момент доступен список, который был выпущен в 2021 году, но от этого он не перестает быть менее актуальным. Обновленный список уязвимостей ожидается в первой половине 2025 года, ну а пока рассмотрим, что интересного есть в нынешнем перечне.

Основные уязвимости OWASP 2021 года:
  • A01:2021 – Нарушение контроля доступа - Broken Access Control;
  • A02:2021 – Сбои в криптографии - Cryptographic Failures;
  • A03:2021 – Внедрение кода - Injection;
  • A04:2021 – Небезопасное проектирование - Insecure Design;
  • A05:2021 – Небезопасная конфигурация - Security Misconfiguration;
  • A06:2021 – Уязвимые и устаревшие компоненты - Vulnerable and Outdated Components;
  • A07:2021 – Ошибки идентификации и аутентификации - Identification and Authentication Failures;
  • A08:2021 – Нарушение целостности данных программного обеспечения - Software and Data Integrity Failures;
  • A09:2021 – Ошибки мониторинга и недостаточное ведение журналов - Security Logging and Monitoring Failures;
  • A10:2021 – Подделка запросов со стороны сервера - Server-Side Request Forgery.
Разберем по порядку каждую уязвимость из списка.

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

Встречается в 56% веб-приложений

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

Уязвимости небезопасного контроля доступа могут привести к следующим последствиям:
  • Обход проверок управления доступом путем изменения URL-адреса, HTML-страницы или с помощью изменения запросов API;
  • Редактирование не принадлежащей пользователю учетной записи путем предоставления ее уникального идентификатора, то есть небезопасные прямые ссылки на объекты;
  • Повышение привилегий;
  • Неправильная конфигурация CORS из-за которой разрешается доступ из неавторизованных источников.

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

Способы защиты:
  • Проводить авторизацию и аутентификацию на уровне сервера и клиента.
  • Минимизировать использование совместных ресурсов с помощью CORS.
  • Строго ограничивать учётные записи в правах просмотра и редактирования.
  • Использовать JWT и cookie-файлы с коротким сроком жизни.
  • Ограничить скорость доступа к API, чтобы предотвратить автоматические атаки.

2. Сбои в криптографии

Встречается в 46% веб-приложений.

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

Криптографические ошибки могут возникать из-за следующих обстоятельств:
  • Использование незащищенных протоколов HTTP, FTP, SMTP;
  • Применение неустойчивых к перебору паролей;
  • Использование устаревших алгоритмов для формирования хэш-функций;
  • Игнорирование проверок сертификата.
Злоумышленник, в случае если в веб-приложении не применяется протокол TLS, который защищает данные во время передачи их по сети, при отслеживании сетевого трафика может получить файлы cookie, что позволит ему перехватить ему сеанс пользователя.

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


3. Внедрение кода

Встречается в 19% веб-приложений.

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

Избежать инъекций можно, используя для передачи запросов на сервер безопасный API, который не может исполнять код, проверять запросы пользователя перед исполнением на сервере.

4. Небезопасное проектирование

Встречается в 24% веб-приложений.

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

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

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

5. Небезопасная конфигурация

Встречается в 20% веб-приложений.

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

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

6. Уязвимые и устаревшие компоненты

Встречается в 28% веб-приложений.

Эта категория является известной проблемой с трудно оцениваемыми рисками, так как уязвимости относятся к установленным системным компонентам в веб-приложении.

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

7. Ошибки идентификации и аутентификации

Встречается в 15% веб-приложений.

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

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

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

8. Нарушение целостности данных программного обеспечения

Встречается в 17% веб-приложений

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

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

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

9. Ошибки мониторинга и недостаточное ведение журналов

Встречается в 19% веб-приложений

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

Недостаточное ведение журналов событий могут возникать в том случае, если:
  • Проверяемые события: вход/выход в систему не регистрируются;
  • Журналы логов хранятся только в одном месте;
  • Журналы событий неправильно закодированы.
Для защиты необходимо оформить журнал безопасности для удобного и быстрого доступа и регулярно проверять его.

10. Подделка запросов со стороны сервера

Встречается в 3% веб-приложений.

Подделка запросов со стороны сервера или SSRF представляет серьезную уязвимость, при которой у злоумышленника появляется возможность влиять на запросы, отправляемые сервером. В случае подделки запросов со стороны сервера происходит взаимодействие непосредственно с сервером без участия пользователя. Такие ошибки возникают, когда веб-приложение извлекает удаленный ресурс без проверки предоставленного пользователем URL.

Для защиты:
  • Ввести белый список разрешённых ресурсов.
  • Добавить сетевые ограничения для сервиса к внутренним ресурсам.
  • Использовать анти-SSRF-прокси.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!