OWASP (Open Worldwide Application Security Project) открытое сообщество, которое публикует списки самых частых и опасных классов уязвимостей. На собесе AppSec их спрашивают почти всегда, но не ради зубрёжки номеров: важно понимать, что стоит за каждым пунктом и как защищаться.
OWASP Top 10 для веб-приложений
Список обновляется раз в несколько лет на основе данных о найденных уязвимостях и опроса специалистов. Версия 2021 года долго была основной:
| № | Категория | Суть |
|---|---|---|
| A01 | Broken Access Control | Пользователь получает доступ к чужим данным или функциям |
| A02 | Cryptographic Failures | Нет шифрования, слабые алгоритмы, плохое хранение паролей |
| A03 | Injection | SQL, NoSQL, команды ОС, XSS: данные исполняются как код |
| A04 | Insecure Design | Ошибки на уровне архитектуры, а не реализации |
| A05 | Security Misconfiguration | Настройки по умолчанию, лишние сервисы, подробные ошибки |
| A06 | Vulnerable and Outdated Components | Уязвимые библиотеки и платформы |
| A07 | Identification and Authentication Failures | Слабый вход, сессии, перебор паролей |
| A08 | Software and Data Integrity Failures | Непроверенные обновления, небезопасная десериализация, CI/CD |
| A09 | Security Logging and Monitoring Failures | Атаку не видно и не на что реагировать |
| A10 | Server-Side Request Forgery | Сервер ходит по адресу, который задал атакующий |
В версии 2025 года нарушение контроля доступа осталось на первом месте, отдельной категорией появились сбои цепочки поставок ПО (supply chain), SSRF вошла в контроль доступа, добавилась категория о неправильной обработке исключительных ситуаций. Номера меняются, а классы уязвимостей остаются, поэтому учите смысл.
OWASP API Security Top 10 (2023)
API ломают иначе, чем страницы: интерфейс открыт, клиент под контролем атакующего, данных много. Поэтому есть отдельный список:
- BOLA (Broken Object Level Authorization):
GET /orders/1002отдаёт чужой заказ. Самая частая проблема API. - Broken Authentication: слабые токены, нет защиты от перебора.
- Broken Object Property Level Authorization: API отдаёт лишние поля или даёт записать поле
role(mass assignment). - Unrestricted Resource Consumption: нет лимитов на размер, частоту, стоимость запросов.
- BFLA (Broken Function Level Authorization): обычный пользователь вызывает админскую функцию.
- Unrestricted Access to Sensitive Business Flows: автоматизация покупки всех билетов, массовая регистрация.
- SSRF.
- Security Misconfiguration.
- Improper Inventory Management: забытые старые версии API, тестовые окружения.
- Unsafe Consumption of APIs: слепое доверие ответам сторонних API.
Как пользоваться списками
- Это не стандарт и не чек-лист для сертификации, а повод для обучения и приоритизации. Для требований есть ASVS (Application Security Verification Standard), для тестирования WSTG (Web Security Testing Guide), для коротких практик Cheat Sheet Series.
- Список помогает разговаривать с разработчиками и бизнесом на общем языке.
- Классы уязвимостей связаны с CWE (каталог слабостей), конкретные уязвимости в продуктах получают CVE, серьёзность часто оценивают по CVSS.
Общие принципы защиты
- Не доверять вводу: всё, что пришло от клиента, может быть подделано, включая скрытые поля, заголовки и JWT без проверки подписи.
- Разделять данные и код: параметризованные запросы, экранирование по контексту.
- Запрет по умолчанию (deny by default) и минимальные привилегии.
- Глубокая оборона (defense in depth): несколько независимых слоёв, чтобы ошибка в одном не была фатальной.
- Безопасность на сервере: проверки на клиенте только для удобства.
- Безопасные настройки по умолчанию: фреймворк должен защищать, если разработчик ничего не сделал.
Частые ошибки на собесе
- Перечислять номера без понимания, как найти и исправить.
- Путать аутентификацию (кто ты) и авторизацию (что тебе можно).
- Говорить «используем HTTPS, значит защищены».
- Считать, что WAF заменяет исправление уязвимостей.
Что спросят на собесе
- Назовите несколько пунктов OWASP Top 10 и как от них защищаться.
- Чем OWASP API Top 10 отличается от веб-списка, что такое BOLA.
- Что такое Insecure Design и почему его не исправить патчем.
- Зачем нужен ASVS, если есть Top 10.
- Какая уязвимость чаще всего встречается в API и как вы её ищете.