Определение области проверки безопасности API

Перед релизом API необходимо провести целенаправленную оценку безопасности, охватывающую все компоненты: точки входа, обработка запросов, хранилища данных и логирование. Область проверки должна включать как основной функционал, так и граничные случаи, обработку ошибок и взаимодействие между микросервисами.

OWASP Top 10 определяет наиболее критичные риски для веб-приложений и предоставляет стандартизированный подход к их выявлению. Использование этого справочного документа помогает сосредоточить усилия на проверке наиболее значимых уязвимостей и создать культуру безопасной разработки в организации.

    Проверка механизмов аутентификации и управления токенами

    Убедитесь, что API реализует надежные механизмы аутентификации: JWT токены должны содержать достаточно сильную подпись, иметь короткий срок действия (15-60 минут), и генерироваться с использованием криптографически стойких алгоритмов. Проверьте, что refresh токены хранятся безопасно, имеют более длительный срок жизни, чем access токены, и что их ротация происходит регулярно.

    Проведите тестирование на предмет утечек учетных данных в логах, URL параметрах и заголовках. Убедитесь, что API не возвращает конфиденциальные данные (пароли, токены) в ответах об ошибках. Проверьте механизм отозвания токенов и убедитесь, что истекшие или отозванные токены действительно блокируют доступ к ресурсам.

    • Тестирование попыток использования истекших токенов
    • Проверка отсутствия hard-coded учетных данных в коде и конфигурации
    • Валидация срока действия и временных меток токенов на сервере

    Валидация механизмов авторизации и управления доступом

    Проверьте, что каждый endpoint API имеет явные правила авторизации и что пользователи не могут получить доступ к ресурсам других пользователей через манипуляцию параметрами ID. Убедитесь, что ролевое управление доступом (RBAC) или атрибутное управление доступом (ABAC) правильно реализованы и что права не проверяются только на клиентской стороне.

    Проведите тестирование горизонтального масштабирования привилегий (попытка доступа к ресурсам других пользователей) и вертикального масштабирования (попытка получить права администратора). Убедитесь, что разные роли пользователей не могут выполнять несанкционированные действия, и что система логирует все попытки несанкционированного доступа.

    • Проверка функционирования RBAC/ABAC на всех endpoints
    • Тестирование граничных случаев: пустые роли, отсутствие разрешений, множественные роли
    • Верификация отсутствия обхода авторизации через прямой доступ к API

    Валидация входных данных и защита от инъекций

    Реализуйте белые списки для проверки входных данных вместо черных списков. Все параметры, заголовки и тело запроса должны быть проверены на тип, длину, формат и содержимое до обработки. Используйте парсеры, которые автоматически отклоняют неожиданные форматы данных (например, JSON, XML).

    Протестируйте защиту от SQL-инъекций, инъекций команд ОС, XPath-инъекций и инъекций в LDAP запросы. Убедитесь, что параметризованные запросы или подготовленные выражения используются для всех операций с базой данных. Проверьте обработку специальных символов, Unicode-последовательностей и закодированных данных (base64, URL-encoding).

    • Тестирование SQL-инъекций через различные параметры API
    • Проверка обработки null-байтов, символов новой строки и специальных характеров
    • Валидация размера и типа загружаемых файлов, если API допускает файловые операции

    Защита чувствительных данных и шифрование

    Убедитесь, что все коммуникации между клиентом и сервером используют HTTPS с TLS 1.2 или выше. Проверьте, что сертификаты валидны, не истекли и подписаны доверенным центром сертификации. Убедитесь, что API не позволяет подключение через незащищенный HTTP и правильно обрабатывает переадресацию.

    Проверьте, что чувствительные данные (PII, пароли, платежные реквизиты) не логируются, не кэшируются и не хранятся в plain text. Убедитесь, что пароли хешируются с использованием современных алгоритмов (bcrypt, scrypt, Argon2) с salt. Данные в покое должны быть зашифрованы, если они хранят конфиденциальную информацию.

    • Проверка версии и конфигурации TLS на сервере
    • Сканирование кода на предмет логирования чувствительных данных
    • Верификация правильности использования криптографических функций для хеширования паролей

    Обработка ошибок, логирование и мониторинг

    API должен возвращать корректные HTTP коды статуса (400 для ошибок клиента, 500 для ошибок сервера) без раскрытия внутренних деталей системы. Сообщения об ошибках не должны содержать информацию о структуре базы данных, путях файлов, версиях библиотек или другую техническую информацию, которая может помочь злоумышленнику. Используйте обобщенные сообщения об ошибках для пользователей и детальное логирование для администраторов.

    Убедитесь, что все значимые события (аутентификация, авторизация, модификация данных, ошибки) записываются в логи с временной меткой, идентификатором пользователя и IP-адресом. Логи должны храниться безопасно и быть защищены от несанкционированного доступа и модификации. Реализуйте алерты на предмет подозрительной активности, таких как повторные неудачные попытки аутентификации или попытки доступа к недоступным ресурсам.

    • Проверка отсутствия stack trace в ответах об ошибках
    • Верификация того, что все аутентификационные попытки логируются
    • Контроль за тем, что логи не содержат конфиденциальные данные пользователей

    Методология тестирования и планирование проверок

    Используйте стандартизированные методологии тестирования, такие как те, которые описаны в NIST SP 800-115 и OWASP Web Security Testing Guide. Эти руководства предоставляют практические рекомендации по планированию, внедрению и поддержке технических процессов проверки безопасности. Перед релизом проведите как автоматизированное сканирование уязвимостей, так и ручное тестирование, уделяя внимание логике приложения и сложным сценариям взаимодействия.

    Создайте план проверки, который включает все API endpoints, различные роли пользователей, граничные случаи и сценарии отказа. Проверка должна включать функциональное тестирование (код возвращает правильные результаты), тестирование безопасности (система защищена от эксплуатации) и нагрузочное тестирование (система остается стабильной под нагрузкой). Документируйте все найденные проблемы, их серьезность и статус исправления перед окончательным релизом.

    • Использование OWASP Top 10 как основы для определения приоритетов проверок
    • Комбинирование автоматизированного сканирования и ручного анализа кода
    • Создание тестовых случаев для каждого угрожающего сценария

    Источники

    PENTEST.RED / RED JOURNAL