Как проверить API на уязвимости OWASP Top 10
Почему OWASP API Security Top 10 важен для вашего бизнеса
API стали основой современных приложений. Микросервисы, мобильные клиенты, интеграции с партнёрами -- всё работает через API. По данным Gartner, к 2026 году более 90% веб-приложений будут иметь большую поверхность атаки именно через API, а не через классические веб-интерфейсы.
OWASP API Security Top 10 (редакция 2023) -- это систематизированный список наиболее критичных рисков безопасности API. В отличие от классического OWASP Top 10 для веб-приложений, этот список специфичен для API-архитектур и учитывает особенности REST, GraphQL и gRPC.
Ниже разберём каждый пункт: что это, как обнаружить, и как VAHREST автоматизирует проверку.
API1:2023 -- Broken Object Level Authorization (BOLA)
CWE-284: Improper Access Control
BOLA -- уязвимость, при которой API не проверяет, имеет ли текущий пользователь доступ к запрашиваемому объекту. Атакующий меняет идентификатор ресурса в запросе и получает доступ к чужим данным.
Пример атаки
# Легитимный запрос -- получение своего профиля
curl -H "Authorization: Bearer <token_user_1>" \
https://api.example.com/v1/users/1001
# Атака -- подмена ID на чужой
curl -H "Authorization: Bearer <token_user_1>" \
https://api.example.com/v1/users/1002Если сервер возвращает данные пользователя 1002 с токеном пользователя 1001 -- это BOLA.
Как проверяет VAHREST
VAHREST автоматически:
- Находит все эндпоинты с параметрами в пути (
/users/{id},/orders/{orderId}) - Создаёт два тестовых аккаунта с разными правами
- Выполняет перекрёстные запросы: токен пользователя A к ресурсам пользователя B
- Проверяет не только HTTP-код, но и тело ответа на утечку данных
Рекомендации по защите
- 1Внедрите проверку ownership на уровне бизнес-логики, а не middleware
- 2Используйте UUID вместо автоинкрементных ID
- 3Логируйте попытки доступа к чужим ресурсам
API2:2023 -- Broken Authentication
CWE-287: Improper Authentication
Ошибки в механизмах аутентификации: слабые токены, отсутствие rate-limiting на логин, предсказуемые сессионные идентификаторы, отсутствие проверки JWT-подписи.
Пример атаки
# Brute-force без rate-limiting
for i in $(seq 100000 999999); do
curl -s -X POST https://api.example.com/auth/verify-otp \
-H "Content-Type: application/json" \
-d "{\"phone\": \"+79001234567\", \"code\": \"$i\"}"
doneКак проверяет VAHREST
- Тестирование rate-limiting на эндпоинтах аутентификации
- Проверка JWT: алгоритм none, слабые ключи, отсутствие валидации exp/iss/aud
- Анализ cookies: флаги Secure, HttpOnly, SameSite
- Проверка механизмов восстановления пароля
API3:2023 -- Broken Object Property Level Authorization (BOPLA)
CWE-285: Improper Authorization
API раскрывает свойства объекта, к которым пользователь не должен иметь доступ, или позволяет модифицировать защищённые поля через mass assignment.
Пример атаки
# Mass assignment -- попытка повысить роль
curl -X PATCH https://api.example.com/v1/users/me \
-H "Authorization: Bearer <user_token>" \
-H "Content-Type: application/json" \
-d '{"name": "John", "role": "admin", "is_verified": true}'Как проверяет VAHREST
- Сравнение полей в ответах для разных ролей (admin vs user)
- Попытки mass assignment с добавлением полей role, is_admin, permissions
- Проверка, что чувствительные поля (password_hash, internal_id) не возвращаются в ответах
API4:2023 -- Unrestricted Resource Consumption
CWE-770: Allocation of Resources Without Limits or Throttling
Отсутствие ограничений на потребление ресурсов: нет rate-limiting, нет лимитов на размер запроса, нет пагинации.
Пример атаки
# Запрос без лимита -- вытягиваем всю базу
curl "https://api.example.com/v1/transactions?limit=999999999"
# Загрузка файла без ограничения размера
curl -X POST https://api.example.com/v1/upload \
-F "file=@/dev/urandom" -H "Content-Length: 10737418240"Как проверяет VAHREST
- Отправка запросов с аномально большими значениями limit, offset, page_size
- Проверка наличия rate-limiting (429 Too Many Requests)
- Тестирование загрузки файлов с экстремальными размерами
- Проверка timeout на тяжёлых запросах
API5:2023 -- Broken Function Level Authorization (BFLA)
CWE-285: Improper Authorization
Пользователь может вызывать административные функции или функции других ролей, изменяя HTTP-метод или путь.
Пример атаки
# Обычный пользователь пытается вызвать admin-эндпоинт
curl -X DELETE https://api.example.com/v1/admin/users/1002 \
-H "Authorization: Bearer <regular_user_token>"
# Смена HTTP-метода
curl -X PUT https://api.example.com/v1/users/1002 \
-H "Authorization: Bearer <regular_user_token>" \
-d '{"status": "banned"}'Как проверяет VAHREST
- Перебор HTTP-методов (GET, POST, PUT, PATCH, DELETE) на каждом эндпоинте
- Обнаружение скрытых административных эндпоинтов (/admin/, /internal/, /debug/)
- Тестирование доступа с токенами разных ролей
API6:2023 -- Unrestricted Access to Sensitive Business Flows
CWE-799: Improper Control of Interaction Frequency
Атакующий автоматизирует критичные бизнес-процессы: массовая скупка товаров, автоматическая регистрация аккаунтов, спам-рассылки через API.
Как проверяет VAHREST
- Анализ бизнес-логики эндпоинтов (checkout, register, send-message)
- Проверка наличия CAPTCHA, anti-bot механизмов
- Тестирование rate-limiting на бизнес-критичных операциях
- Проверка device fingerprinting
API7:2023 -- Server Side Request Forgery (SSRF)
CWE-918: Server-Side Request Forgery
API принимает URL от пользователя и выполняет запрос на стороне сервера без валидации. Атакующий может обращаться к внутренним сервисам, облачным metadata API, локальным ресурсам.
Пример атаки
# Обращение к metadata API облака через SSRF
curl -X POST https://api.example.com/v1/webhooks \
-H "Content-Type: application/json" \
-d '{"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"}'
# Сканирование внутренней сети
curl -X POST https://api.example.com/v1/fetch-preview \
-d '{"url": "http://10.0.0.1:8080/internal/health"}'Как проверяет VAHREST
- Подстановка внутренних IP (127.0.0.1, 10.0.0.0/8, 169.254.169.254) во все URL-параметры
- Тестирование обхода фильтров (hex-encoding, DNS rebinding, IPv6)
- Проверка redirect-chains для обхода whitelist
API8:2023 -- Security Misconfiguration
CWE-16: Configuration
Неправильная конфигурация: отсутствие CORS, открытые debug-эндпоинты, лишние HTTP-методы, устаревшие версии API, отсутствие security-заголовков.
Как проверяет VAHREST
- Проверка CORS-политики (Access-Control-Allow-Origin: *)
- Поиск debug/profiling эндпоинтов (/debug/pprof, /actuator, /.env)
- Анализ security-заголовков (HSTS, X-Content-Type-Options, CSP)
- Проверка TLS-конфигурации (версия протокола, cipher suites)
- Обнаружение устаревших версий API (/v1/ когда актуальна /v3/)
API9:2023 -- Improper Inventory Management
CWE-1059: Insufficient Technical Documentation
Неучтённые API-эндпоинты: устаревшие версии, теневые эндпоинты, недокументированные internal-маршруты. Shadow API -- одна из главных проблем в enterprise.
Как проверяет VAHREST
- Автоматическое обнаружение эндпоинтов через crawling и fuzzing
- Сравнение обнаруженных эндпоинтов с OpenAPI-спецификацией
- Поиск shadow API: /internal/, /v1/, /legacy/, /test/
- Проверка, что устаревшие версии закрыты или имеют ограниченный доступ
API10:2023 -- Unsafe Consumption of APIs
CWE-20: Improper Input Validation
API доверяет данным от сторонних сервисов без валидации. Если интегрированный сервис скомпрометирован, атакующий может воздействовать на ваш API через доверенный канал.
Как проверяет VAHREST
- Анализ webhook-обработчиков: проверка подписей, валидация payload
- Тестирование обработки аномальных данных от «доверенных» источников
- Проверка timeout и circuit-breaker на внешних вызовах
Как запустить проверку OWASP API Top 10 в VAHREST
Весь процесс занимает три шага:
1. Укажите цель. Введите базовый URL вашего API и загрузите OpenAPI-спецификацию (если есть). VAHREST автоматически обнаружит эндпоинты через crawling.
2. Выберите пресет. Для полной проверки OWASP Top 10 используйте пресет «Full Security» -- он включает все 25 инструментов и длится 1-3 часа. Для быстрой оценки подойдёт «Express» (5 минут, основные проверки).
3. Получите отчёт. VAHREST генерирует отчёт с маппингом каждой уязвимости на конкретный пункт OWASP API Top 10, CWE-код, CVSS-скор и рекомендации по исправлению. Отчёт доступен в форматах JSON, HTML и PDF.
Итоги
OWASP API Security Top 10 -- не абстрактный чеклист, а практический фреймворк для защиты API. Каждый пункт отражает реальные атаки, которые происходят ежедневно.
Ключевые выводы:
- BOLA и BFLA (API1, API5) -- самые распространённые и опасные. Проверяйте авторизацию на каждом эндпоинте
- Authentication (API2) -- требует rate-limiting, сильных токенов и MFA
- SSRF (API7) -- критичен для облачных инфраструктур
- Shadow API (API9) -- невозможно защитить то, о чём не знаете
Ручное тестирование каждого пункта занимает дни. Автоматизация через VAHREST позволяет проверить все 10 категорий за часы и получить actionable-отчёт с приоритизацией по CVSS.
Попробуйте VAHREST бесплатно
Зарегистрируйтесь и запустите первый пентест вашего API за 5 минут. Бесплатный тариф включает экспресс-сканирование и отчёт по OWASP API Top 10.
Попробуйте VAHREST бесплатно
Зарегистрируйтесь и запустите первый пентест вашего API за 5 минут.
Начать бесплатно