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

OWASP TOP 10 - 2024 A01:2024 Broken Access Control A02:2024 Cryptographic Failures A03:2024 Injection Attacks Ключевые изменения 2024 Новые категории: Server-Side Request Forgery (SSRF) Объединены: Injection включает XSS, SQL, Command Injection Повышен приоритет: Insecure Design, Software Supply Chain

OWASP Top 10 2024: Полный список

A01:2024 - Broken Access Control

Статус: Переместилась с #5 на #1 позицию

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

Типичные уязвимости:

  • Обход проверок доступа путем изменения URL, внутреннего состояния приложения или HTML-страницы
  • Просмотр или редактирование чужой учетной записи через изменение идентификатора (IDOR)
  • Privilege Escalation - повышение привилегий без авторизации
  • API без контроля доступа для POST, PUT и DELETE методов
  • Отсутствие проверки JWT токенов или манипуляция с ними

Как защититься:

  • Реализуйте контроль доступа на сервере, а не на клиенте
  • Используйте deny-by-default принцип - запретите все, кроме явно разрешенного
  • Применяйте атрибутивный или ролевой контроль доступа (RBAC/ABAC)
  • Логируйте все попытки нарушения доступа и алертьте администраторов
  • Ограничивайте доступ к API через rate limiting

A02:2024 - Cryptographic Failures

Статус: Ранее называлась "Sensitive Data Exposure"

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

Распространенные проблемы:

  • Передача данных в открытом виде (HTTP вместо HTTPS)
  • Использование устаревших или слабых криптографических алгоритмов (MD5, SHA1, DES)
  • Хранение паролей без хеширования или с использованием слабых хеш-функций
  • Отсутствие или неправильная реализация certificate pinning
  • Недостаточная энтропия при генерации ключей

Рекомендации:

  • Используйте TLS 1.3 для всех передач данных
  • Шифруйте все данные в покое (encryption at rest) с AES-256
  • Применяйте современные хеш-функции: Argon2, bcrypt, scrypt для паролей
  • Используйте криптографически стойкие генераторы случайных чисел
  • Отключите кеширование ответов, содержащих чувствительные данные

A03:2024 - Injection

Статус: Объединенная категория (включает SQL, NoSQL, OS Command, LDAP injection)

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

Примеры атак:

  • SQL Injection: ' OR '1'='1' --
  • NoSQL Injection: {"$ne": null}
  • OS Command Injection: ; rm -rf /
  • LDAP Injection: *)(uid=*))(|(uid=*
  • XPath Injection, XML injection

Защита:

  • Используйте параметризованные запросы (prepared statements)
  • Применяйте ORM frameworks с автоэскейпингом
  • Валидируйте и санитизируйте все пользовательские входные данные
  • Используйте whitelist валидацию для критичных параметров
  • Ограничивайте привилегии БД - используйте наименее необходимые права

A04:2024 - Insecure Design

Статус: Новая категория в Top 10

Фокусируется на рисках, связанных с недостатками и упущениями в дизайне. Требует использования threat modeling, безопасных паттернов проектирования и референсных архитектур.

Примеры небезопасного дизайна:

  • Отсутствие rate limiting на критичных функциях (регистрация, смена пароля)
  • Недостаточная защита от автоматизированных атак
  • Отсутствие сегментации между уровнями приложения
  • Бизнес-логика, которую можно обойти через изменение workflow

A05:2024 - Security Misconfiguration

Статус: Переместилась с #6

Приложение уязвимо, если оно:

  • Использует настройки по умолчанию
  • Имеет включенные ненужные функции (порты, сервисы, страницы)
  • Использует дефолтные учетные записи с неизмененными паролями
  • Показывает детальные сообщения об ошибках пользователям
  • Не обновлено до последних версий security patches

Меры защиты:

  • Автоматизируйте процесс настройки безопасной конфигурации
  • Используйте минимальную платформу без лишних компонентов
  • Регулярно пересматривайте и обновляйте конфигурации
  • Используйте IaC (Infrastructure as Code) для воспроизводимости
  • Сегментируйте архитектуру между компонентами

A06:2024 - Vulnerable and Outdated Components

Статус: Ранее #9

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

Рекомендации:

  • Ведите инвентаризацию всех компонентов и их версий (SBOM - Software Bill of Materials)
  • Подписывайтесь на уведомления о безопасности для используемых компонентов
  • Получайте компоненты только из официальных источников по безопасным каналам
  • Используйте инструменты SCA (Software Composition Analysis): Dependabot, Snyk, OWASP Dependency-Check
  • Мониторьте неподдерживаемые библиотеки и планируйте их замену

A07:2024 - Identification and Authentication Failures

Статус: Ранее "Broken Authentication"

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

Защитные меры:

  • Внедрите многофакторную аутентификацию (MFA)
  • Не разворачивайте системы с дефолтными креденшалами
  • Реализуйте проверку слабых паролей
  • Ограничивайте или увеличивайте задержку при неудачных попытках входа
  • Используйте безопасный менеджер сессий на стороне сервера
  • Генерируйте новые случайные session ID после логина

A08:2024 - Software and Data Integrity Failures

Статус: Новая категория (включает Deserialization)

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

Примеры:

  • Insecure Deserialization - выполнение произвольного кода через десериализацию
  • CI/CD pipeline без проверки целостности
  • Автообновления без верификации подписи
  • Использование библиотек из ненадежных CDN

A09:2024 - Security Logging and Monitoring Failures

Статус: Ранее #10

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

Что логировать:

  • Все попытки входа (успешные и неудачные)
  • Все попытки нарушения прав доступа
  • Критичные транзакции
  • Ошибки валидации входных данных
  • Изменения конфигурации и привилегий

A10:2024 - Server-Side Request Forgery (SSRF)

Статус: Новая в Top 10

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

Защита от SSRF:

  • Санитизация и валидация всех клиентских входных данных
  • Применение whitelist разрешенных URL, портов и протоколов
  • Отключение HTTP редиректов
  • Использование сетевой сегментации
  • Блокировка доступа к внутренним сервисам с веб-серверов

Что изменилось по сравнению с 2021?

2021 2024 Изменение
A05 Broken Access Control A01 Broken Access Control ⬆️ Повышен до #1
Не было A04 Insecure Design ✨ Новая категория
A10 Не было A10 SSRF ✨ Добавлена в Top 10
A03 Injection + A07 XSS A03 Injection 🔗 Объединены

Практические рекомендации

1. Регулярные пентесты

Проводите тестирование на проникновение не реже одного раза в год, а также после каждого значительного изменения в приложении.

2. Используйте SAST и DAST

Интегрируйте статический (SAST) и динамический (DAST) анализ безопасности в CI/CD pipeline для раннего обнаружения уязвимостей.

3. Обучайте разработчиков

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

4. Security by Design

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

5. Threat Modeling

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

Заключение

OWASP Top 10 2024 отражает текущее состояние безопасности веб-приложений. Broken Access Control остается наиболее критичной проблемой, в то время как новые угрозы, такие как SSRF и проблемы дизайна, получили заслуженное признание.

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

Хотите проверить ваше приложение на уязвимости из OWASP Top 10?

Команда CYBERITI проведет профессиональный пентест с фокусом на OWASP Top 10 и другие критичные уязвимости.