Для тех, кто не знает, GraphQL – это язык запросов и среда выполнения для API, разработанный компанией Facebook с открытым исходным кодом.
Как и любое другое программное обеспечение, GraphQL тоже имеет свои плюсы и минусы.
Вы можете игнорировать минусы, связанные с возможностями или функциональностью.
Но что если мы скажем вам, что в GraphQL есть список уязвимостей?
Не волнуйтесь.
Существуют различные инструменты, которые помогут вам найти и устранить уязвимости в безопасности GraphQL.
Но прежде чем мы познакомим вас с этими инструментами, давайте рассмотрим, что такое GraphQL и каковы его уязвимости.
Что такое GraphQL?
Чтобы объяснить, что такое GraphQL, представьте себе такой сценарий: вы сидите в ресторане и заказываете обед.
Но, возможно, вы хотите получить не совсем то блюдо, которое указано в меню.
Иногда вы можете захотеть включить или исключить некоторые ингредиенты.
Например, у вас аллергия на орехи, и вы хотите заказать блюдо по своему усмотрению.
Представьте себе GraphQL в виде официанта, который подстраивается под ваши пожелания и приносит вам именно то, что вы просили, но GraphQL работает с данными, полученными от серверов.
Используя такую технологию, современные приложения могут получать конкретные данные, что позволяет значительно экономить пропускную способность и улучшает качество работы пользователей.
Уязвимости GraphQL
Вот список потенциальных уязвимостей, которые могут быть использованы злоумышленниками в целях утечки конфиденциальной информации.
- Over-fetching и under-fetching: данная уязвимость может привести к перерасходу ресурсов сервера. Если инструкции по получению данных из GraphQL некорректны, это может привести к избыточной (получение большего количества данных, чем запрашивается) или недостаточной (получение меньшего количества данных, чем запрашивается, что заставляет пользователя запрашивать данные несколько раз) выборке.
- Чрезмерное раскрытие данных: при неправильной настройке контроля доступа происходит раскрытие критически важных данных. И если сервер разрешает несанкционированный доступ, то любой хакер, обладающий достаточной квалификацией, может легко проникнуть в эти данные.
- Проблема вложенных запросов: По умолчанию в сервере нет ограничений по сложности, что позволяет отправлять сложные запросы. А теперь представьте себе несколько вложенных друг в друга сложных запросов, которые будут забирать все системные ресурсы, что приведет к замедлению отклика и даже к возможной атаке DOS (Denial Of Service).
- Инъекции: GraphQL – это не что иное, как язык запросов с пользовательским вводом, что означает, что если ваш API не защищен, то в него может быть внедрен вредоносный код, и атаке могут подвергнуться ваша база данных, файловая система и даже сеть и ОС.
- GraphQL-бомбы: Они были обнаружены в августе 2022 года и затрагивают API, реализующие загрузку файлов на языке GraphQL. Это DOS-атака (Denial Of Service – отказ в обслуживании), которая заключается в отправке множества HTTP-запросов к конечной точке GraphQL.
- Неправильно сконфигурированные HTTP-заголовки: Хотя это кажется пустяком, поверьте, это может нанести гораздо больший ущерб, чем вы думаете. Неправильная настройка заголовков может открыть ворота для таких атак, как CSRF (Cross-Site Request Forgery), MIME sniffing, Man in the Middle и др.
см. также: