OWASP Top 10 2025: каждая уязвимость простыми словами с примерами
Что такое OWASP Top 10
OWASP (Open Web Application Security Project) — это международная некоммерческая организация, занимающаяся безопасностью веб-приложений. Каждые несколько лет OWASP публикует список 10 наиболее критичных рисков для веб-приложений — OWASP Top 10.
Этот список является де-факто стандартом для разработчиков, тестировщиков и специалистов по безопасности. Понимание OWASP Top 10 — обязательный минимум для любого, кто создаёт или обслуживает веб-приложения.
A01: Нарушение контроля доступа (Broken Access Control)
Что это
Нарушение контроля доступа возникает, когда пользователь может выполнять действия, на которые у него нет прав. Это самая распространённая уязвимость — встречается в 94% приложений.
Пример атаки
Пользователь меняет в URL параметр ?user_id=123 на ?user_id=456 и получает доступ к данным другого пользователя. Или обычный пользователь обращается к /admin/users и видит список всех пользователей.
Реальный инцидент
Через IDOR-уязвимость (Insecure Direct Object Reference) в сервисе бронирования были раскрыты персональные данные миллионов пользователей — достаточно было перебрать числовые ID в API-запросе.
Как защититься
- Проверяйте права доступа на стороне сервера для каждого запроса
- Используйте UUID вместо последовательных числовых ID
- Реализуйте принцип наименьших привилегий
- Отключите листинг директорий
- Логируйте попытки несанкционированного доступа
A02: Криптографические сбои (Cryptographic Failures)
Что это
Ошибки в реализации шифрования: передача данных в открытом виде, использование слабых алгоритмов, неправильное хранение паролей, утечки через логи.
Пример атаки
Сайт использует HTTP для страницы входа. Злоумышленник перехватывает Wi-Fi трафик и видит логин и пароль в открытом виде.
Реальный инцидент
Крупный ритейлер хранил пароли в MD5 без соли. После утечки базы злоумышленники расшифровали 80% паролей за часы с помощью rainbow tables.
Как защититься
- Используйте TLS 1.2+ для всех соединений
- Храните пароли с bcrypt/Argon2 (не MD5/SHA1)
- Не храните чувствительные данные без необходимости
- Используйте AES-256 для шифрования
- Проверьте SSL: SSL-проверка Периметра
A03: Инъекции (Injection)
Что это
Инъекция происходит, когда непроверенные данные от пользователя попадают в интерпретатор: SQL-запрос, команду ОС, LDAP-запрос.
Пример атаки
В поле логина вводится: admin' OR '1'='1
SQL-запрос становится: SELECT * FROM users WHERE login='admin' OR '1'='1'
Результат: вход в систему без знания пароля.
Реальный инцидент
Через SQL-инъекцию в форме поиска интернет-магазина были похищены данные 130 миллионов кредитных карт.
Как защититься
- Используйте параметризованные запросы (prepared statements)
- Применяйте ORM с автоматической экранизацией
- Валидируйте входные данные по белому списку
- Ограничьте привилегии учётной записи БД
- Используйте WAF
A04: Небезопасный дизайн (Insecure Design)
Что это
Архитектурные ошибки, которые нельзя исправить патчем — нужно менять дизайн системы. Отсутствие threat modeling, недостаточная валидация бизнес-логики.
Пример атаки
Сервис восстановления пароля задаёт контрольный вопрос: «Имя питомца?» Злоумышленник находит ответ в социальных сетях жертвы.
Как защититься
- Проводите threat modeling на этапе проектирования
- Используйте secure design patterns
- Реализуйте defence in depth
- Проводите code review с фокусом на бизнес-логику
A05: Небезопасная конфигурация (Security Misconfiguration)
Что это
Неправильные настройки: стандартные пароли, включённый debug, лишние сервисы, отсутствие заголовков безопасности.
Пример атаки
На продакшне включён debug-режим. При ошибке пользователь видит стек-трейс с путями файлов, версиями библиотек и конфигурацией.
Как защититься
- Отключите всё лишнее
- Регулярно обновляйте и патчите ПО
- Используйте hardened конфигурации
- Настройте HTTP-заголовки: проверка заголовков
- Автоматизируйте проверку конфигурации
A06: Уязвимые и устаревшие компоненты
Что это
Использование библиотек и фреймворков с известными уязвимостями. Отсутствие обновлений и мониторинга CVE.
Пример атаки
Log4Shell (CVE-2021-44228) — критическая уязвимость в Log4j, затронувшая миллионы серверов. Злоумышленник мог выполнить произвольный код, отправив специальную строку в лог.
Как защититься
- Ведите инвентаризацию зависимостей (SBOM)
- Мониторьте CVE для используемых компонентов
- Автоматизируйте обновление зависимостей
- Удаляйте неиспользуемые библиотеки
A07: Ошибки аутентификации
Что это
Слабая аутентификация: нет защиты от брутфорса, слабые пароли, небезопасные сессии, нет MFA.
Пример атаки
Credential stuffing — автоматический перебор утекших пар логин/пароль из других сервисов. При повторном использовании пароля аккаунт компрометируется.
Как защититься
- Внедрите MFA
- Ограничьте попытки входа (rate limiting)
- Используйте надёжные политики паролей
- Проверяйте пароли по базам утечек
A08: Нарушения целостности ПО и данных
Что это
Отсутствие проверки целостности при обновлении ПО, CI/CD. Атаки на supply chain.
Пример атаки
Злоумышленник публикует вредоносный npm-пакет с именем, похожим на популярную библиотеку (typosquatting). Код попадает в продакшн.
Как защититься
- Проверяйте цифровые подписи обновлений
- Используйте lock-файлы
- Настройте проверку целостности в CI/CD
A09: Недостаточное логирование и мониторинг
Что это
Отсутствие логирования событий безопасности, что затрудняет обнаружение атак.
Пример атаки
Брутфорс в течение месяца по 10 попыток в день. Без мониторинга неудачных входов атака остаётся незамеченной.
Как защититься
- Логируйте все события аутентификации
- Настройте алерты на подозрительную активность
- Храните логи минимум 6 месяцев
- Используйте SIEM
A10: Подделка серверных запросов (SSRF)
Что это
SSRF позволяет злоумышленнику заставить сервер выполнять запросы к внутренним ресурсам.
Пример атаки
Функция предпросмотра URL позволяет указать http://169.254.169.254/latest/meta-data/ и получить метаданные AWS, включая ключи доступа.
Реальный инцидент
Через SSRF в сервисе Capital One злоумышленник получил доступ к метаданным AWS и похитил данные 100 миллионов кредитных заявок.
Как защититься
- Валидируйте URL на стороне сервера
- Используйте белые списки хостов
- Блокируйте запросы к внутренним IP
- Используйте сетевую сегментацию
Как проверить приложение
- Автоматическое сканирование — EASM-платформа проверит конфигурацию, заголовки, SSL, порты
- Code review — анализ кода на типичные ошибки
- DAST — динамическое тестирование
- Пентест — глубокий анализ критичных систем
Периметр автоматически проверяет множество аспектов из OWASP Top 10: SSL/TLS, HTTP-заголовки, порты, exposed paths, устаревшее ПО.
Практические рекомендации
OWASP Top 10 — не исчерпывающий список, но покрывает самые критичные проблемы. Ключевые принципы:
- Валидация входных данных — не доверяйте данным от пользователя
- Наименьшие привилегии — минимально необходимые права
- Defence in depth — несколько уровней защиты
- Обновления — своевременно патчите компоненты
- Мониторинг — обнаруживайте атаки в реальном времени
