GraphQL Security Assessment

Specialized security assessment for GraphQL APIs

حول هذه الخدمة

يختبر تقييم أمن GraphQL واجهات GraphQL في مواجهة OWASP API Security Top 10 — عيوب التحكم في الوصول ومنطق العمل التي تهيمن على اختراقات API — وفي مواجهة المخاطر الفريدة لـ GraphQL نفسه: استبطان المخطّط (introspection) الذي يسلّم المهاجم الخريطة كاملةً، وعمق الاستعلام وتعقيده وتجميعه (batching) الذي يحوّل طلباً واحداً إلى حجب للخدمة، والتخويل الذي يُفرَض لكل resolver بدلاً من كل نقطة نهاية. ولأن نقطة نهاية GraphQL واحدة تكشف الرسم البياني بأكمله، فإن غياب فحص على حقل واحد قد يكشف بيانات مستخدم آخر. نختبر في مواجهة السلوك الفعلي لـ API، ونتابع كل نتيجة حتى إثبات عملي، ونصنّف خطورتها بـ CVSS إلى جانب الأثر الفعلي على العمل.

ما الذي يشمله

التخويل على مستوى الحقل والكائن (BOLA/BFLA) عبر الاستعلامات والطفرات (mutations)

كشف الاستبطان (introspection) وما يُظهِره المخطّط في بيئة الإنتاج

حدود عمق الاستعلام وتعقيده وتكلفته — حجب الخدمة بالاستعلامات المتداخلة

إساءة استغلال التجميع (batching) والأسماء المستعارة (aliasing)، بما في ذلك القوة الغاشمة عبر طلب واحد

المصادقة المكسورة في الاستعلامات والطفرات والاشتراكات (subscriptions)

الحقن الذي يصل إلى قواعد البيانات والخدمات السفلية عبر الـ resolvers

الإفراط في كشف البيانات والإسناد الجماعي عبر أنواع الإدخال (input types)

معالجة الأخطاء وإفشاء المعلومات في الاستجابات

ضوابط تحديد المعدّل واستهلاك الموارد

مراجعة المخطّط في مواجهة السلوك الفعلي لـ API

كيف يعمل

1
تحديد النطاق والاكتشاف
نتّفق على الحدود ومعايير النجاح، ثم نرسم خريطة الرسم البياني — الأنواع، والاستعلامات، والطفرات، والاشتراكات، والـ resolvers — من المخطّط، ومن الاستبطان حيث يكون مفعَّلاً، ومن حركة الطلبات المرصودة. ونطلب حسابات اختبار عبر الأدوار المختلفة، لأن معظم عيوب التخويل لا تظهر إلا حين يصل دور إلى حقول دور آخر.
2
اختبار التخويل ومنطق العمل
قلب اختبار GraphQL: لأن التخويل يُفرَض لكل resolver، نفحص كل حقل وطفرة بحثاً عن عيوب الوصول على مستوى الكائن والوظائف (BOLA/BFLA)، ونحاول الوصول إلى بيانات مستخدم بوصفنا مستخدماً آخر، ونسبر منطق العمل المكشوف عبر الرسم البياني.
3
الاختبار الخاص بـ GraphQL واختبار المدخلات
نختبر كشف الاستبطان، وعمق الاستعلام وتعقيده وتكلفته، وإساءة استغلال التجميع والأسماء المستعارة، والحقن عبر الـ resolvers، والإفراط في كشف البيانات، وإفشاء المعلومات في الأخطاء — المخاطر التي تفصل GraphQL عن REST API.
4
التحقق وتحليل الأثر
يُتحقَّق من كل نتيجة بإثبات مفهوم قابل لإعادة الإنتاج — دون مخرجات ماسح غير مؤكَّدة. ونصنّف الخطورة بـ CVSS وبالأثر الفعلي على العمل، فتميّزون مشكلة نظرية من أخرى تكشف بيانات العملاء.
5
إعداد التقارير وإعادة الاختبار
تتسلّمون تقريراً يستطيع كلٌّ من الإدارة والمهندسين التصرّف بناءً عليه، مع مسار معالجة محدَّد الأولويات. وبعد الإصلاح، نعيد اختبار النتائج للتأكّد من ثبات الإصلاحات وأنها لم تفتح شيئاً جديداً.
المخرجات
  • ملخّص تنفيذي مع نظرة عامة على المخاطر لصنّاع القرار
  • تقرير تقني مفصّل، كل نتيجة مع إثبات مفهوم قابل لإعادة الإنتاج
  • ربط النتائج بـ OWASP API Security Top 10 والمخاطر الخاصة بـ GraphQL
  • خطورة CVSS والأثر على العمل لكل نتيجة
  • توصيات بشأن تعقيد الاستعلام وعمقه وتحديد المعدّل
  • إرشاد لتحصين المخطّط والـ resolvers
  • خارطة طريق للمعالجة محدَّدة الأولويات مع خطوات ملموسة
  • إعادة الاختبار بعد المعالجة

لماذا حافظ سيكيور

خبرة في GraphQL
فهم عميق ومحدَّث لأمن GraphQL — نموذج التخويل لكل resolver ومخاطر محرّك الاستعلام التي لا يغطّيها اختبار متمحور حول REST.
عمق يدوي لا مجرّد مسح
اختبار يدوي منهجي لكل نوع وحقل وطفرة — فعيوب الوصول ومنطق العمل التي لا يراها الماسح هي بالضبط ما نركّز عليه.
تغطية متوائمة مع المعايير
اختبار متوائم مع OWASP API Security Top 10 وإرشادات OWASP الخاصة بـ GraphQL، بحيث تكون تغطية فئات المخاطر الحرجة صريحة وقابلة للتحقّق.
نتائج قابلة للتنفيذ ومحدَّدة الأولويات
إرشاد واضح مرتَّب حسب المخاطر، مع إثبات مفهوم قابل لإعادة الإنتاج وخطوات معالجة ملموسة لكل نتيجة.

الأسئلة الشائعة

ما هو تقييم أمن GraphQL؟

يقيّم واجهة GraphQL بحثاً عن نقاط ضعف أمنية — عيوب التخويل على مستوى الحقل والكائن، وكشف الاستبطان، وحجب الخدمة بتعقيد الاستعلام والتجميع، والحقن عبر الـ resolvers، وإفشاء المعلومات — في مواجهة OWASP API Security Top 10 وإرشادات OWASP الخاصة بـ GraphQL، مع إثبات كل نتيجة وتصنيفها.

بمَ يختلف اختبار GraphQL عن اختبار REST API؟

تكشف REST API نقاط نهاية كثيرة؛ أما GraphQL فتكشف عادةً نقطة واحدة يمكن الوصول عبرها إلى الرسم البياني كله. ويُفرَض التخويل لكل resolver بدلاً من كل مسار، فيكشف فحص واحد غائب حقلاً في كل مكان يظهر فيه، ويضيف محرّك الاستعلام مخاطر لا يحملها اختبار REST — الاستبطان، وعمق الاستعلام وتعقيده، والتجميع. والمعيار المرجعي يبقى OWASP API Security Top 10 مطبَّقاً على الرسم البياني.

ما هو الاستبطان (introspection)، وهل ينبغي تعطيله؟

الاستبطان قدرة مدمَجة في GraphQL لوصف مخطّطه الخاص — كل نوع وحقل ووسيط. وهو مفيد في التطوير لكنه في الإنتاج يسلّم المهاجم خريطة كاملة لـ API. وتعطيله في الإنتاج يرفع الحاجز؛ لكنه ليس بديلاً عن فرض التخويل، إذ يظلّ استكشاف الرسم البياني ممكناً بالتخمين، ولذا نختبر الاثنين.

ما هو حجب الخدمة بتعقيد الاستعلام أو الاستعلامات المتداخلة؟

يتيح GraphQL للعميل طلب بيانات متداخلة ومترابطة بعمق في طلب واحد. وبدون حدود للعمق أو التعقيد أو التكلفة، يمكن لاستعلام واحد مصاغ بعناية — أو لعدة استعلامات بأسماء مستعارة مجمَّعة معاً — إجبار الخادم على أداء قدر هائل من العمل حتى ينهار. نختبر ما إذا كانت تلك الحدود موجودة وصامدة، ونوصي بعتبات ملموسة.

ما الذي تحتاجونه منّا للبدء؟

نقطة نهاية GraphQL وبيئتها، والمخطّط أو إتاحة الاستبطان إن توفّر، وحسابات اختبار لكل دور (مستخدمان على الأقل لكل دور حتى نختبر الوصول بين المستخدمين). وبيئة الاختبار (staging) التي تطابق الإنتاج مثالية. ونتّفق على النطاق وعلى أي طفرات يجب تجنّبها قبل أن نبدأ.

ما الفرق بين اختبار الصندوق الأسود والرمادي والأبيض؟

الصندوق الأسود يعني أننا نختبر دون معرفة داخلية؛ والأبيض يعني أن لدينا أيضاً المخطّط والوثائق وأحياناً المصدر؛ والرمادي يقع بينهما، وعادةً ببيانات اعتماد والمخطّط. ولـ GraphQL نوصي عادةً بالرمادي: فمع الأدوار والمخطّط نغطّي عيوب التخويل لكل resolver بعمق أكبر بكثير وفي وقت أقل من اختبار أعمى.

كيف تُحدَّد خطورة النتائج؟

تحصل كل نتيجة على درجة CVSS كأساس مشترك، تُعدَّل بالأثر الفعلي على العمل في سياقكم — أي بيانات أو عملية تكشف، وما مدى سهولة الوصول إليها، وماذا يكسب المهاجم. لهذا قد تأخذ مشكلتان بالدرجة نفسها من CVSS أولويتين مختلفتين.

هل تختبرون على بيئة الإنتاج، وهل يبقى API آمناً أثناء الاختبار؟

نفضّل بيئة اختبار (staging) تطابق الإنتاج. وعندما يتعيّن إجراء الاختبار على بيئة الإنتاج، نتّفق على الحدود مسبقاً — لا طفرات مدمِّرة، وحذر في اختبارات التعقيد والتجميع التي قد تُحمِّل الخادم، وجهة اتصال من طرفكم للإيقاف الفوري إذا بدا شيء خاطئاً.

كم يستغرق تقييم أمن GraphQL؟

يعتمد على حجم المخطّط، وعدد الأدوار، وتعقيد منطق العمل؛ وعادةً يستغرق التقييم المعتاد نحو أسبوعين إلى ثلاثة أسابيع. ونقدّم تقديراً محدَّداً بعد تحديد النطاق، حالما يُعرَف المخطّط وعدد الأدوار.

هل أنتم مستعدون للبدء؟
تواصلوا مع فريقنا لمناقشة احتياجات تقييم الأمان لديكم