Статья Веб-пентест 2026: новые векторы атак на GraphQL и gRPC API

1768332432078.webp

API - это не просто технический интерфейс между фронтендом и бекендом. На сегодня API стал основным вектором атаки: приложения двигаются в сторону микросервисов, мобильных фронтов, третьих сторон и интеграций - и все это чаще всего через API. REST остался базой, но GraphQL и gRPC - это уже не будущее, это реальность многих production‑сред. Они дают гибкость и производительность, но открывают новые поверхности атаки, которые стандартные REST‑сканеры и классические подходы не покрывают.

Современные API - почему это не просто REST и чем опасны новые модели​

REST vs GraphQL vs gRPC​

REST - простая модель с множеством фиксированных URL и методов HTTP. Без хитростей: отправил GET/POST → получил ответ. Но это традиционная архитектура, к которой уже наворочена масса инструментов.
GraphQL -единая точка входа API, где клиент описывает что и как запрашивать. Это сокращает трафик и увеличивает гибкость, но делает модель динамической, не ограниченной фиксированными путями и ответами. Если реализация не контролирует глубину и разрешения каждого поля, это сразу становится дверью для злоупотреблений.
gRPC -двойной уровень сложности: это RPC‑коммуникации по HTTP/2 с бинарной сериализацией через Protobuf. Преимущество - скорость, строго типизированные контракты, поддержка стриминга. Недостаток - традиционные веб‑сканеры практически не видят трафик, и тестирование требует специализированных инструментов.

У вас мог возникнуть вопрос: почему отдельный подход? Банально потому что гибкость запросов GraphQL, динамичные схемы, прозрачное отражение (reflection) gRPC, Protobuf и HTTP/2 создают attack surface (потенциальные точки входа), который не равнозначен REST‑API. Да, обычные уязвимости есть, но появляются новые векторы, о которых мы и сделали этот материал.

1768176711396.webp


Если ты хочешь получить более широкий контекст об основных рисках API в 2026 г., включая тестирование и защиту, полезно взглянуть на материалы о базовых принципах безопасности API.

GraphQL pentest​

GraphQL - это язык запросов и среда выполнения для API, который принимает запросы и возвращает результат по схеме. Это значит, что у тестера есть огромный простор для манипуляций, далеко выходящий за пределы стандартных REST‑методов.

Reconnaissance - разведка поверхности атаки​

Introspection: открытые двери в схему API​

GraphQL изначально поддерживает introspection - запросы, которые возвращают полную схему API (типы, поля, аргументы). Это как если бы REST‑API по умолчанию отдавал OpenAPI/Swagger через один запрос. Если introspection включён в проде, ты получаешь карту всех нодов API.

Это мощно, но опасно:
  • позволяет построить полный граф API;
  • выявить скрытые поля и мутации (даже без документации);
  • помогает автоматизировать атаки (IDOR, BOLA, injection и др.).
Современные инструменты (GraphQL Voyager, InQL) умеют использовать introspection, чтобы визуализировать схему и ускорять разведку.

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

Разведка в GraphQL - это не перебор URL, это построение полной модели API перед тестами.

1768176854218.webp


Чтобы лучше понять, как пентестеры подходят к тестированию API вообще, смотрите обзор навыков и подходов для перехода в пентест, в том числе особенностей работы с API‑запросами, ошибками авторизации и глубоким анализом входящих данных.

Типовые уязвимости GraphQL​

Authorization flaws, IDOR и Broken Object Level Authorization​

GraphQL не делает авторизацию по умолчанию на уровне полей - только на уровне resolvers. Типичная ошибка - контролировать доступ только на верхнем уровне запроса, а не на каждом поле или мутации. Тогда даже авторизованный пользователь может получить чужие данные, просто добавив параметры в запрос.

Injection в GraphQL​

GraphQL сам по себе не SQL, но данные, которые попадают в бекенд, могут течь дальше к базе данных или сервисам. Примеры возможных injection‑векторов:
  • SQL/NoSQL injection через аргументы поля;
  • командная инъекция из resolver‑логики;
  • SSRF/CRLF/HTTP request smuggling через некорректную обработку аргументов.
Injection‑векторы здесь немного отличаются от REST, потому что GraphQL поле может агрегировать сложные объекты, а injection может быть распределён между несколькими уровнями вложенности.

Information disclosure​

Verbose ошибки, показ схемы в сообщениях об ошибке, отсутствие фильтрации ошибок - всё это даёт тестеру ускоренный доступ к структуре API и возможностям манипуляции. Это особенно плохо, когда schema содержит чувствительные типы.

Advanced attacks: batching, nested queries и alias abuse​

Batch attacks​

GraphQL позволяет отправлять batch запросы - множество операций в одном HTTP. Это обычно выгодно с точки зрения эффективности, но такие запросы могут обходить rate limiting, если система считает только HTTP‑вызовы, а не логическое количество операций внутри HTTP.

Тестер должен проверять, как система считает запросы:
  • подсчитывает ли backend операции в батче отдельно;
  • есть ли явные ограничения на максимальное количество операций в батче;
  • как это влияет на лимиты по пользователю.

DoS через nested queries​

GraphQL допускает произвольно глубокие вложения: один запрос может включать десятки или сотни уровней вглубь. Без ограничений по query depth это превращается в идеальный DoS‑вектор: сложный запрос потребляет CPU/память, и бекенд начинает тормозить или падать.

Это не классический volumetric DoS, а логический - через нагрузку на парсинг и выполнение resolver’ов. Решение - вводить depth limiting и complexity analysis (стоимость запроса по сложности полей).

Alias‑based abuse​

GraphQL позволяет использовать алиасы - псевдонимы для полей. Это может обмануть простейшие меры защиты или логирование: один и тот же endpoint с разными алиасами выглядит как уникальные поля, обходя некоторые фильтры.

gRPC pentest: другая плоскость, другой стек атак​

gRPC - это не HTTP/JSON. Это двоичный протокол поверх HTTP/2, с Protobuf на борту. Стандартные веб‑сканеры его не видят и приходится работать с протоколом напрямую.

Reflection API abuse - когда сервис сдаёт свою контрактную модель​

В gRPC существует server reflection, это схожий механизм с introspection в GraphQL: сервис может отдавать свой API‑контракт (методы, сообщения, типы) динамически. Это полезно инструментам вроде grpcurl и Postman для отладки, но в контексте безопасности это как если бы API отдавал свой protobuf‑описатель в ответ на запрос.

Reflection можно отключить в проде, но если он включён, тестер сможет автоматически собрать список всех сервисов, методов и типов и начать взаимодействовать с ними.

Protobuf manipulation и типовая мутация данных​

Protobuf структуры - это строго типизированные данные. Но при тестировании есть важные векторы:
  • отправка неожиданных значений для enum/required полей;
  • плохая обработка неизвестных полей (unknown fields);
  • манипуляции со streaming RPC;
  • использование нестандартных пакетов данных для тестирования парсинга.
Такие манипуляции могут привести к логическим сбоям, ошибкам десериализации, непредсказуемому поведению.

Authentication и Authorization bypass​

gRPC использует прямые вызовы методов, и если авторизация слабая (например, только проверка токена на gateway, а не на каждом методе), тестер может вызвать методы напрямую с валидным токеном или злоупотребить отсутствием RBAC. Это типичная проблема, когда контролируется слой транспортировки, но не контрактная авторизация.

1768176912124.webp


Инструменты в арсенале современного API‑пентестера​

Здесь мы не просто перечисляем, а объясняем, когда и зачем брать тот или иной инструмент.

Burp Suite и его расширения​

  • InQL живёт в Burp, помогает автоматизировать introspection GraphQL, визуализировать схему и строить атаки на её основе.
  • GraphQL Raider - другой плагин для Burp, специализируется на enumeration и автоматизации атаки GraphQL.
Burp по‑прежнему остаётся ядром для ручной работы: от перехвата запросов до их преобразования и повторного запуска.

Standalone и CLI‑инструменты​

  • Clairvoyance - углублённая spreadsheet‑ориентированная утилита для восстановления схемы GraphQL даже без introspection.
  • GraphQL Voyager - визуализация схемы для понимания структуры API.
  • grpcurl - незаменим для gRPC тестов: как curl для gRPC, позволяет исследовать Reflection, вызывать методы, описывать сервисы.
  • Postman/Insomnia - удобны для построения и проверки запросов (GraphQL и gRPC), но скорее для прототипирования, чем автоматизированного поиска уязвимостей.
1768176951486.webp


Современный API‑пентест - это целая дисциплина, которая выходит за рамки классического REST‑пентеста. GraphQL и gRPC требуют понимания схем, контрактов, динамики запросов, и атакующих техник, которые традиционные сканеры не найдут.
 
Последнее редактирование:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab