Перейти к содержимому
OWASPAPI SecurityпентестBOLABFLA

Как проверить API на уязвимости OWASP Top 10

12 минVAHREST Team

Почему 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 не проверяет, имеет ли текущий пользователь доступ к запрашиваемому объекту. Атакующий меняет идентификатор ресурса в запросе и получает доступ к чужим данным.

Пример атаки

bash
# Легитимный запрос -- получение своего профиля
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. 1Внедрите проверку ownership на уровне бизнес-логики, а не middleware
  2. 2Используйте UUID вместо автоинкрементных ID
  3. 3Логируйте попытки доступа к чужим ресурсам

API2:2023 -- Broken Authentication

CWE-287: Improper Authentication

Ошибки в механизмах аутентификации: слабые токены, отсутствие rate-limiting на логин, предсказуемые сессионные идентификаторы, отсутствие проверки JWT-подписи.

Пример атаки

bash
# 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.

Пример атаки

bash
# 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, нет лимитов на размер запроса, нет пагинации.

Пример атаки

bash
# Запрос без лимита -- вытягиваем всю базу
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-метод или путь.

Пример атаки

bash
# Обычный пользователь пытается вызвать 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, локальным ресурсам.

Пример атаки

bash
# Обращение к 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 минут.

Начать бесплатно