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