تخط إلى المحتوى
English

إساءة استخدام GraphQL

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

المسار
أمن الويب
الوقت المتوقع
25 د
المستوى
متوسط
تقدمك في المسار0%

يعطي GraphQL العميل نقطة واحدة وقوة كبيرة يطلب الحقول التي يريدها بالضبط ويصف مخططه بنفسه وينفذ عمليات كثيرة في طلب واحد كل راحة من هذه سطح هجوم أيضا والثغرات نادرا ما تكون خاصة بـ GraphQL بل هي الكلاسيكية كشف المعلومات والتفويض المكسور وغياب حد المعدل بشكل GraphQL

ما هي الثغرة؟

  • الاستكشاف مفعل أي عميل يسأل __schema عن كل نوع وحقل فيرسم العمليات التي لا تعرضها الواجهة ومنها ما ظنه المبرمج مخفيا
  • غياب تفويض الكائن محلل user id يعيد سجل ذلك المعرف دون التحقق أنك تملكه غير المعرف تقرأ أي أحد IDOR عبر استعلام
  • تكديس الأسماء المستعارة GraphQL ينفذ حقولا كثيرة لكل طلب فإذا حسب الحد الطلبات وضع طلب واحد مئة محاولة لحقل حساس بأسماء مستعارة وتجاوز الحد

لماذا تحدث؟

ينقل GraphQL العمل الذي توزعه REST على نقاط كثيرة إلى استعلام واحد مرن فتتوقف عادات النقطة الواحدة هذا المسار داخلي حدد معدل هذا العنوان عن الانطباق التفويض يجب أن يكون على كل محلل حقل والحد يجب أن يكون على تكلفة الاستعلام لا عدد الطلبات

كيف تتوقف؟

عطل الاستكشاف في الإنتاج وضع فحص تفويض في كل محلل يعيد بيانات خاصة ولا تثق بمعامل المعرف وحدد بتعقيد الاستعلام وعمقه وتكرار حقوله حتى لا يخفي طلب واحد مئة محاولة

اللابات الثلاثة أدناه تمشي هذا اكتشف حقلا مخفيا واقرأ مستخدما آخر عبر user id وخمن رمزا بالأسماء المستعارة في طلب واحد

اللابات

  • اكتشاف المخطط

    سهللاب في المتصفح

    اكتشف الحقل المخفي عبر الاستكشاف ثم استعلم عنه لقراءة سره

  • تفويض مكسور على الكائن

    متوسطلاب في المتصفح

    اقرأ البيانات الخاصة لمستخدم آخر الزعيم عبر الحقل user

  • تكديس الأسماء المستعارة

    صعبلاب في المتصفح

    خمن الرمز السري في عدد قليل من الطلبات متجاوزا الحد