В GraphQL скаляры представляют собой базовые типы данных, которые могут использоваться в схеме GraphQL, такие как строки, числа и логические значения. Пользовательские скаляры — это скаляры, определенные разработчиком для представления конкретных типов данных, таких как даты, адреса электронной почты или урлов. Отсутствие проверки пользовательских скаляров в GraphQL API может привести к уязвимостям безопасности, таким как внедрение кода, переполнение буфера или проблемы целостности данных.
Еще по теме: Обход защиты от CSRF в GraphQL API
Проверка пользовательских скаляров GraphQL API
Для поиска уязвимости отсутствие проверки пользовательских скаляров GraphQL API, выполните следующие шаги:
- Выявление GraphQL API, который определяет пользовательские скаляры, такие как скаляр Email.
- Создание запроса, который включает строку, не соответствующую правилам проверки пользовательского скаляра, например, строку, содержащую специальные символы или слишком длинную строку.
- Отправка запроса к API и наблюдение за ответом. Если API не выполняет должную проверку пользовательского скаляра, запрос будет принят и обработан, и злоумышленнику может быть предоставлена возможность внедрения вредоносного кода или данных.
Статья в образовательных целях для обучения этичных хакеров. Баг Баунти — это программа, которую владелец сайта (web-приложения) проводит для привлечения сторонних специалистов к поиску уязвимостей. При участии в программе Bug Bounty нужно действовать этично и придерживаться установленных правил.
Вот пример, как может выглядеть этот процесс:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import requests # Конечная точка GraphQL url = "https://example.com/graphql" # Запрос, который включает строку, не соответствующую правилам проверки пользовательского скаляра Email query = """ mutation { createUser(email: "notvalidemail@com") { id email } } """ # Отправка запроса response = requests.post(url, json={"query": query}) |
В этом примере скрипт отправляет запрос к конечной точке GraphQL, который включает строку, не соответствующую правилам проверки пользовательского скаляра Email. Если API не выполняет должную проверку пользовательского скаляра, запрос будет принят и обработан, и хакер сможет внедрить вредоносный код.
Защита
Чтобы предотвратить такого рода атаки, важно должным образом проверять пользовательские скаляры на стороне сервера и гарантировать, что принимаются и обрабатываются только допустимые входные данные.
Кроме того, важно обновлять GraphQL API и его зависимости, так как со временем могут быть обнаружены новые уязвимости.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Взлом API с помощью Wfuzz
- Подмена заголовка Origin в конечной точке API
- Поиск уязвимых API-эндпойнтов с помощью Fuzzapi