Найти в Дзене

OWASP топ-10 уязвимостей на основе версии 2021 года. Сравнение с 2017. Что изменилось?

Оглавление

OWASP (Open Web Application Security Project) — это некоммерческая организация, которая занимается повышением безопасности веб-приложений. Одним из ключевых проектов OWASP является публикация списка десяти самых распространенных и серьезных уязвимостей в веб-приложениях, известного как OWASP Top 10.

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

OWASP Top-10 уязвимостей (на основе версии 2021 года):

1. Broken Access Control (Нарушение контроля доступа)

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

Пример: Пользователь с ролью обычного клиента может манипулировать URL или параметрами запроса, чтобы получить доступ к административной панели (например, изменив /user/profile/123 на /admin/settings).

Решение: Четкое разделение прав доступа, правильная настройка ролей и проверка аутентификации и авторизации на уровне всех действий.

2. Cryptographic Failures (Криптографические ошибки)

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

Пример: Хранение паролей в открытом виде или использование небезопасных хэш-функций, таких как MD5 или SHA1.

Решение: Использование современных криптографических алгоритмов (например, AES для симметричного шифрования и bcrypt для хеширования паролей).

3. Injection (Инъекции)

Описание: Инъекции возникают, когда злоумышленник может вставить вредоносные данные в запросы, которые приложение отправляет внешним системам (например, базе данных, интерпретатору команд, LDAP и т.д.).

Пример: SQL-инъекция — злоумышленник может изменить SQL-запрос, введя вредоносный код в поле ввода. Например, вместо имени пользователя "John" вводится John' OR '1'='1, что может заставить систему вернуть всех пользователей.

Решение: Использование параметризованных запросов и ORM (Object-Relational Mapping), чтобы избежать прямого выполнения пользовательских данных.

4. Insecure Design (Ненадежный дизайн)

Описание: Уязвимость, связанная с отсутствием учета безопасности на этапе проектирования системы. Это включает в себя недостатки архитектуры и дизайна, которые делают приложение уязвимым к атакам.

Пример: Приложение не планирует возможные атаки с использованием brute-force или не предусматривает защиту от атак, таких как CSRF.

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

5. Security Misconfiguration (Ошибочная конфигурация безопасности)

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

Пример: Оставленные включенными учетные записи с паролями по умолчанию, экспонированные системные каталоги, раскрывающие информацию о сервере.

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

6. Vulnerable and Outdated Components (Уязвимые и устаревшие компоненты)

Описание: Использование сторонних библиотек или компонентов, содержащих известные уязвимости, может привести к эксплуатации системы злоумышленниками.

Пример: Использование старой версии библиотеки jQuery с известной уязвимостью к XSS (межсайтовому скриптингу).

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

7. Identification and Authentication Failures (Ошибки идентификации и аутентификации)

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

Пример: Если приложение позволяет использовать слабые пароли, такие как "12345", или сохраняет сессии без истечения срока действия.

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

8. Software and Data Integrity Failures (Ошибки целостности данных и ПО)

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

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

Решение: Использование цифровых подписей, хешей для проверки целостности данных и обеспечение безопасного процесса развертывания.

9. Security Logging and Monitoring Failures (Неэффективное ведение логов и мониторинг)

Описание: Отсутствие или неправильное ведение логов и мониторинга безопасности может привести к нераспознанным атакам или инцидентам.

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

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

10. Server-Side Request Forgery (SSRF)

Описание: Уязвимость, когда злоумышленник может заставить сервер выполнить запрос к внешним или внутренним ресурсам, к которым у него нет доступа.

Пример: Приложение принимает URL от пользователя и выполняет запрос к этому URL. Злоумышленник может указать внутренний IP-адрес или ресурс, к которому он не должен иметь доступ, что приведет к передаче данных, которые злоумышленник не должен видеть.

Решение: Ограничение допустимых адресов для запросов, строгая проверка входных данных и использование списков разрешенных ресурсов.

Как защитить веб-приложения от этих уязвимостей?

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

2. Внедрение DevSecOps-практик. Интеграция безопасности на всех этапах разработки (разработка, тестирование, развертывание).

3. Аудиты безопасности и пентесты. Регулярные проверки на наличие уязвимостей.

4. Использование автоматизированных инструментов для обеспечения безопасности. Например, статический и динамический анализ кода (SAST и DAST).

5. Обучение сотрудников безопасной разработке. Регулярное обучение разработчиков основам безопасности.

Эволюция списка OWASP Top-10 с 2017 по 2021

Давайте рассмотрим эволюцию списка OWASP Top-10 за последние несколько версий (2017 и 2021 годы) и проанализируем, как изменялись приоритеты в области веб-безопасности.

OWASP Top-10 2017 года

1.Injection

2. Broken Authentication

3. Sensitive Data Exposure

4. XML External Entities (XXE)

5. Broken Access Control

6. Security Misconfiguration

7. Cross-Site Scripting (XSS)

8. Insecure Deserialization

9. Using Components with Known Vulnerabilities

10. Insufficient Logging & Monitoring

OWASP Top-10 2021 года

1. Broken Access Control

2. Cryptographic Failures (ранее: Sensitive Data Exposure)

3. Injection

4. Insecure Design (новая категория)

5. Security Misconfiguration

6. Vulnerable and Outdated Components (ранее: Using Components with Known Vulnerabilities)

7. Identification and Authentication Failures (ранее: Broken Authentication)

8. Software and Data Integrity Failures (новая категория)

9. Security Logging and Monitoring Failures (ранее: Insufficient Logging & Monitoring)

10. Server-Side Request Forgery (SSRF) (новая категория)

Детализированное описание каждой уязвимости с историческим контекстом

1. Injection (Инъекции)

  • OWASP 2017: Injection уязвимости занимали 1 место, что отражает их огромную опасность и распространенность. Классические примеры включают SQL-инъекции, LDAP-инъекции и инъекции команд.
  • OWASP 2021: Injection опустились на 3 место, что указывает на улучшение в применении защитных механизмов, таких как параметризованные запросы и ORM. Однако это все еще критическая угроза, особенно для приложений, которые не используют современные методы защиты.

Описание (2021):
Инъекции происходят, когда злоумышленник передает вредоносные данные в приложение через пользовательские поля, которые затем интерпретируются как команды. Это может привести к выполнению произвольных команд на сервере или базе данных.

Пример:
SQL-инъекция:

SELECT * FROM users WHERE username = 'John' AND password = 'password123';

Злоумышленник вводит вместо имени пользователя John' OR '1'='1:

SELECT * FROM users WHERE username = 'John' OR '1'='1' AND password = 'password123';

Этот запрос всегда возвращает истину, позволяя обойти проверку пароля.

2. Broken Authentication (Ошибки аутентификации) → Identification and Authentication Failures (Ошибки идентификации и аутентификации)

  • OWASP 2017: Broken Authentication занимала 2 место, указывая на многочисленные случаи слабых систем аутентификации, таких как слабые пароли, отсутствие многофакторной аутентификации и утечки сессионных токенов.
  • OWASP 2021: Уязвимость была переименована в Identification and Authentication Failures и переместилась на 7 место. Это связано с тем, что многие современные приложения стали внедрять более строгие требования к паролям и использовать MFA (многофакторную аутентификацию).

Описание (2021):
Ошибки в процессах аутентификации и идентификации пользователей могут позволить злоумышленникам получить доступ к аккаунтам или сессиям других пользователей. Проблемы могут включать в себя слабые пароли, утечку сессионных токенов или отсутствие контроля над сессиями.

Пример:

  • Приложение позволяет пользователям использовать пароли вроде 12345 или password.
  • Не происходит автоматического завершения сессии при длительном бездействии.

3. Sensitive Data Exposure → Cryptographic Failures (Криптографические ошибки)

  • OWASP 2017: Sensitive Data Exposure на 3 месте отражала проблемы с защитой конфиденциальной информации (например, паролей, номеров кредитных карт), которая может быть передана в незашифрованном виде.
  • OWASP 2021: Уязвимость была переименована в Cryptographic Failures и переместилась на 2 место. Новое название подчеркивает, что корень большинства проблем с утечкой данных заключается в неправильном использовании или отсутствии криптографии.

Описание (2021):
Криптографические ошибки возникают, когда чувствительные данные (такие как пароли, персональная информация, номера кредитных карт) не защищены должным образом в процессе передачи или хранения. Проблемы могут включать слабое шифрование, использование устаревших или небезопасных алгоритмов.

Пример:

  • Пароли хранятся в базе данных в открытом виде или с использованием слабых хеш-функций, таких как MD5.
  • SSL не используется для передачи данных через Интернет, что делает данные уязвимыми для перехвата.

4. XML External Entities (XXE)

  • OWASP 2017: XML External Entities (XXE) была новой категорией в 2017 году и заняла 4 место из-за распространенности проблем в XML-обработчиках, которые могут обрабатывать вредоносные внешние сущности.
  • OWASP 2021: Уязвимость исчезла из OWASP Top-10, что свидетельствует о снижении ее актуальности благодаря лучшей настройке XML-парсеров и уменьшению использования XML в современных приложениях.

Описание (2017):
XXE-атаки происходят, когда приложение обрабатывает вредоносные XML-документы, которые содержат ссылки на внешние ресурсы. Это может привести к утечкам данных или выполнению произвольных команд на сервере.

Пример:
Злоумышленник передает XML-файл, который содержит ссылку на локальный файл системы:

<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<foo>&xxe;</foo>

Это может привести к утечке содержимого файла /etc/passwd.

5. Broken Access Control (Нарушение контроля доступа)

  • OWASP 2017: Broken Access Control занимала 5 место, что указывало на низкую оценку важности контроля доступа на уровне приложения.
  • OWASP 2021: В 2021 году эта уязвимость поднялась на 1 место, что свидетельствует о значительном росте случаев эксплуатации неправильно настроенных систем контроля доступа.

Описание (2021):
Broken Access Control возникает, когда система неправильно управляет правами доступа, позволяя пользователям получать доступ к ресурсам, к которым они не должны иметь доступ. Это может привести к просмотру, изменению или удалению информации, принадлежащей другим пользователям.

Пример:

  • Обычный пользователь может получить доступ к административным функциям, манипулируя URL (например, изменив /user/profile/123 на /admin/).

6. Security Misconfiguration (Ошибочная конфигурация безопасности)

  • OWASP 2017: Security Misconfiguration находилась на 6 месте и отражала проблемы с неправильными настройками серверов, приложений или баз данных.
  • OWASP 2021: В 2021 году она поднялась на 5 место, что указывает на то, что неправильные конфигурации остаются одной из основных проблем безопасности.

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

Пример:

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

7. Cross-Site Scripting (XSS)

  • OWASP 2017: XSS занимала 7 место, отражая распространенность атак, при которых злоумышленники вставляют вредоносный JavaScript в страницы, которые посещают другие пользователи.
  • OWASP 2021: В 2021 году XSS перестала быть отдельной категорией и была включена в более широкую категорию Injection, что свидетельствует о том, что разработчики стали лучше защищаться от этой уязвимости, хотя она остается актуальной.

Описание (2017):
XSS-уязвимости позволяют злоумышленнику внедрить вредоносный скрипт в веб-страницу, которая будет выполнена в браузере других пользователей. Это может привести к краже данных, захвату сессий или перенаправлению на фишинговые сайты.

Пример:
Злоумышленник вводит следующий код в поле ввода комментариев:

<script>alert('XSS Attack!');</script>

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

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

  • OWASP 2017: Insecure Deserialization занимала 8 место и отражала опасность десериализации данных, предоставляемых пользователем, без должной проверки.
  • OWASP 2021: Эта уязвимость была включена в более общие категории и больше не выделяется в отдельную категорию.

Описание (2017):
Небезопасная десериализация происходит, когда данные, предоставленные пользователем, десериализуются без должной проверки. Это может позволить злоумышленнику внедрить вредоносные объекты, которые будут выполнены на сервере.

Пример:
Злоумышленник передает специально сформированный объект, который при десериализации может выполнять вредоносный код на сервере.

9. Using Components with Known Vulnerabilities → Vulnerable and Outdated Components (Уязвимые и устаревшие компоненты)

  • OWASP 2017: Эта уязвимость на 9 месте отражала проблемы с использованием старых версий библиотек, фреймворков и других компонентов, которые содержат известные уязвимости.
  • OWASP 2021: В 2021 году эта категория была переименована в Vulnerable and Outdated Components и поднялась на 6 место, что указывает на рост числа атак через сторонние компоненты.

Описание (2021):
Использование уязвимых или устаревших компонентов может привести к тому, что злоумышленники смогут использовать известные уязвимости для атаки на ваше приложение. Это может касаться как серверного ПО, так и клиентских библиотек.

Пример:

  • Использование устаревшей версии библиотеки jQuery с известной уязвимостью позволяет злоумышленнику запускать XSS-атаки.

10. Insufficient Logging & Monitoring → Security Logging and Monitoring Failures (Неэффективное ведение логов и мониторинг)

  • OWASP 2017: На 10 месте, Insufficient Logging & Monitoring подчеркивала важность ведения логов и мониторинга для выявления подозрительной активности и реагирования на инциденты.
  • OWASP 2021: В 2021 году эта уязвимость была переименована в Security Logging and Monitoring Failures и поднялась на 9 место, что подчеркивает её важность для своевременной реакции на инциденты безопасности.

Описание (2021):
Недостаток логирования и мониторинга может привести к тому, что атаки остаются невыявленными, а инциденты — нерасследованными. Это может привести к значительным потерям данных и ресурсам, если атаки не будут вовремя остановлены.

Пример:

  • Приложение не ведет логирование неудачных попыток аутентификации, что делает невозможным обнаружение попыток взлома с помощью brute-force.

11. Server-Side Request Forgery (SSRF) (Новая категория в 2021 году)

  • OWASP 2021: SSRF — новая категория уязвимостей, появившаяся в 2021 году и занявшая 10 место. Она отражает рост количества атак, когда злоумышленник заставляет сервер выполнять запросы к внутренним или внешним ресурсам.

Описание (2021):
Уязвимость SSRF возникает, когда злоумышленник может заставить сервер выполнить запрос к ресурсу, к которому сам злоумышленник не имеет доступа. Это может позволить злоумышленнику обойти защитные механизмы и получить доступ к внутренним системам.

Пример:
Приложение принимает URL от пользователя и выполняет запрос к этому URL. Злоумышленник может указать внутренний IP-адрес или ресурс, к которому он не должен иметь доступ, что приведет к передаче данных, которые злоумышленник не должен видеть.

Вместо заключения

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

1. Рост значимости Broken Access Control: Эта уязвимость переместилась с 5 на 1 место, что подчеркивает важность правильной настройки прав доступа.

2. Введение новых категорий: В 2021 году были введены новые категории, такие как Insecure Design и Server-Side Request Forgery (SSRF), что свидетельствует о появлении новых векторов атак.

3. Снижение значимости XSS и XXE: Эти уязвимости больше не выделяются в отдельные категории, что может указывать на улучшение методов защиты от них.

Каждое обновление OWASP Top-10 отражает как текущие проблемы в области веб-безопасности, так и эволюцию методов защиты.

Если Вам интересно, что еще можно найти на канале QA Helper, прочитайте статью: Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?

Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика

Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.

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

Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам