Защита API от атак: Строгое требование или блажь
API (Application Programming Interface) — это интерфейс программирования приложений, способ взаимодействия одной программы с другой. Действует как посредник между внутренними и внешними функциями программного обеспечения, создавая моментальный обмен информацией. По открытому отчету Cloudflare за 2021-й год трафик API, на фоне всего объема Web-трафика вырос на 21%, что является самым серьезным всплеском за последние 2-3 года. И это объяснимая ситуация — основной пласт разрабатываемых приложений имеет встроенные функции интеграции с использованием принятого стандарта (API), без которых встраивание в современную инфраструктуру не представляется возможным. Рост объема трафика также обусловлен распространением инструментов для разработки приложений с использованием микросервисной архитектуры, так как язык коммуникаций между такими компонентами также относится к API.
Содержание |
Почему мы занялись защитой API?
У платформы «Вебмониторэкс» есть свое собственное API и несколько лет назад мы сами столкнулись с проблемой обеспечения его безопасности. Тогда появилась идея использовать нашу экспертизу по анализу веб-приложений для создания своего продукта. Мы сами были первыми клиентами своего сервиса и каждый раз задавали себе вопрос — помогает ли наше решение сделать наше API безопаснее.
Почему защиту API выделяют в отдельное направление?
Рост интеграционных связей между приложениями ведет к увеличению использования API. Как следствие, вырастает число ошибок настройки и уязвимостей API. Такое увеличение доступной поверхности атаки привлекает злоумышленников. В 2022-м году из статистических отчетов компаний специализирующихся на защите API (например, Salt Security), можно почерпнуть следующие данные:
- Количество API-интерфейсов в инфраструктуре компаний увеличивается каждый год не менее чем на 50%;
- Трафик атак на API в среднем составляет порядка 20% от всего наблюдаемого трафика атак;
- За 2022-й год кол-во атак увеличилось в 2 раза, по сравнению с предыдущими периодами.
Основной драйвер роста и причина привлекательности использования API кроется в их сути. Эти интерфейсы обмена создавались для предоставления оптимизированного и постоянно дорабатываемого интерфейса обмена. С каждой доработкой вырастает вероятность возникновения новой уязвимости, логической ошибки и соответственно новой возможности для атаки.TAdviser выпустил новую карту российского рынка информационных технологий: более 380 разработчиков и интеграторов
При этом стандартный подход SSDLC для защиты API малопригоден или сопряжен с высокими затратами: представляете, сколько времени будет занимать выпуск каждой новой части кода, если ему будет предшествовать полноценная проверка всего кода, учет в документации, проверка схемы и т.д. Но и отбрасывать стандартную методику не следует.
Особенность угроз API
Современные API взаимодействуют с большим количество данных. Давайте рассмотрим их по порядку:
- Персональные данные пользователей, данные кредитных карт, медицинские данные. Защита таких видов информации всегда находится в высоком приоритете у компаний, ровно как и их утечка является для компаний высоким риском. Либо это потеря имиджа, либо оборотные штрафы и риск приостановки лицензии — зависит от сферы, в которой работает компания.
- Бизнес-данные. Например, у вас есть веб-сервис, отвечающий за остатки на складе и он передает информацию о наличии товаров в ваше приложение, отвечающее за продажу. При передаче некорректных данных от склада в интернет-магазин, продажи могут остановиться.
- Конфиденциальные данные. У каждой компании есть данные, раскрытие которых может привести к серьезным репутационным и финансовым потерям.
Основная угроза заключается в «особенности» при конфигурировании API. В большинстве случаев при запросе к API выдается больше данных, чем требуется для выполнения запрашиваемого действия. За такими данными как раз и охотятся злоумышленники. Их цель найти некорректно сконфигурированное API и с его помощью получить доступ к внутренним данным компании. Детальная настройка ограничений требует времени, а простой запрос обращается не к конкретным полям базы, а к общей выборке. В рейтинге OWASP API Security Top 10 выделено несколько таких угроз, связанных с чрезмерным доступом к данным.
Так же особое внимание при разговоре об угрозах API отводят теневым API и зомби API. Такие API появляются из-за высокой скорости разработки и отсутствия детальной документации. В итоге в какой-то момент в любом приложении оказываются неиспользуемые функции, про которые все забывают. Злоумышленники проявляют повышенный интерес к таким API, а разработчики веб-приложений сами не знают об их существовании и отследить момент взлома не могут.
А что с защитой API?
Распространенные советы по защите API можно уложить в 8 пунктов:
1. Реализуйте аутентификацию. Аутентификация — это процесс проверки личности пользователя или приложения, пытающегося получить доступ к API. Это комбинации имени пользователя и пароля токены, сертификаты и т. д. Важно, чтобы доступ к API и его функциям был разрешен только авторизованным пользователям, что кратно усложнит атаку
2. Реализуйте авторизацию. Авторизация — это процесс проверки наличия у пользователя или приложения разрешения на выполнение определенных действий с API или его ресурсами. Это можно сделать, назначив роли и разрешения для каждого пользователя или приложения, пытающегося получить доступ к API, и убедившись, что им разрешено делать только то, на что они уполномочены.
3. Проверяйте все запросы. Перед дальнейшей обработкой каждый запрос к API должен быть тщательно проверен на соответствие требованиям безопасности. Это и проверка входных параметров, проверка на наличие вредоносных кодов и т.д.
4. Шифруйте все запросы и ответы. Все данные, пересылаемые между клиентами и серверами, рекомендуется шифровать, чтобы предотвратить доступ несанкционированных сторон к конфиденциальной информации, содержащейся в них (например, к паролям). Кроме того, зашифрованные данные также помогают защититься от атак «человек посередине» (между парой клиент/сервер API), которые, в противном случае, могут скомпрометировать учетные данные для аутентификации или другую конфиденциальную информацию.
5. Включайте в ответы только необходимую информацию. При ответе с данными из вызова API важно не включать ненужную информацию, которая потенциально может привести к утечке конфиденциальных сведений об архитектуре вашей системы или деталях реализации, что может приблизить злоумышленников к использованию слабых мест вашей системы через техники обратного инжиниринга.
6. Ограничивайте запросы API и устанавливайте квоты. Чтобы предотвратить перегрузку серверов слишком большим количеством одновременных запросов, может потребоваться ограничить количество вызовов, которые можно сделать в течение заданного периода времени (т. е. установить квоты). Кроме того, это также помогает защититься от атак типа «отказ в обслуживании», поскольку у злоумышленников не будет неограниченных ресурсов для одновременной отправки больших объемов трафика.
7. Регистрируйте активность API. Отслеживание того, кто обращался к вашим API, позволяет отслеживать шаблоны использования, а также обнаруживать подозрительные действия, такие как чрезмерное количество неудачных попыток входа в систему с одного IP-адреса, что может указывать на то, что кто-то пытается взломать вашу систему.
8. Проведите тесты безопасности. Регулярное проведение тестов безопасности API поможет выявить потенциальные уязвимости до того, как они будут использованы злоумышленниками, тем самым защищая как данные клиентов, так и репутацию поставщиков услуг, предлагающих API в Интернете.
Все они актуальны и синхронизированы с описанием безопасного цикла разработки приложений, но скрупулезное их применение ставит под вопрос само использование API с нужной динамикой и функциями.
Web Application Firewall от компании «Вебмониторэкс»
Внедрение комплексной платформы Web Application Firewall от компании «Вебмониторэкс» решит сразу несколько задач в реализации защиты API:
- Снизит нагрузку на разработку и консолидирует информацию об активности API, регистрируя и проводя поведенческий анализ всех пользовательских операций. Использование алгоритмов машинного обучения повышает вероятность обнаружение и блокировки атаки на аутентификационные данные.
- Увидит базовые параметры настройки API, проверит настройки на базовую безопасность. Функция вычисляет статистику для каждого параметра API, решает, является ли это обязательным параметром для данного запроса или нет, и добавляет эту информацию в профиль API. Использование такой возможности снижает вероятности реализации угроз связанной с небезопасной настройкой.
- Найдет API в вашей инфраструктуре. Функция регистрирует запросы к тем конечным точкам API, которые не описаны в спецификации OpenAPI, но возвращают коды состояния 2xx или 5xx.
Чтобы протестировать работу платформы «Вебмониторэкс», оставьте заявку на сайте >>>