← أحدث الأبحاث
💻 computer science

GraphQLer: Enhancing GraphQL Security with Context-Aware API Testing

يُعد GraphQLer إطار عمل مفتوح المصدر لاختبار الأمن المؤتمت يعزز أمن واجهات برمجة تطبيقات GraphQL عبر بناء رسوم بيانية للتبعية محددة النوع من المخططات الحية لتخليق سلاسل ثغرات متعددة الخطوات، متفوقاً بذلك على الأدوات الحالية مثل ZAP وEvoMaster في اكتشاف العيوب المعقدة والاعتمادية على الحالة مثل تجاوز الصلاحيات (IDOR)، واستخدام الذاكرة بعد التحرير (UAF)، وثغرات الحقن.

المؤلفون الأصليون: Omar Tsai, Jianing Li, Tsz Tung Cheung, Lejing Huang, Hao Zhu, Jianrui Xiao, Iman Sharafaldin, Mohammad A. Tayebi

نُشر 2026-08-05
📖 3 دقيقة قراءة☕ قراءة في استراحة قهوة

المؤلفون الأصليون: Omar Tsai, Jianing Li, Tsz Tung Cheung, Lejing Huang, Hao Zhu, Jianrui Xiao, Iman Sharafaldin, Mohammad A. Tayebi

البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل

تخيل الإنترنت كمدينة ضخمة ومزدحمة حيث تتواصل برامج الكمبيوتر المختلفة (التطبيقات) باستمرار مع بعضها البعض لتبادل المعلومات. لسنوات، كانت هذه المحادثات تتبع خريطة صارمة ومتوقعة: إذا كنت تريد صورة، تطلب المجلد المسمى "صورة"؛ وإذا كنت تريد رسالة، تطلب المجلد المسمى "رسالة". كان هذا يشبه الطلب من قائمة طعام لكل طبق فيها اسم وموقع ثابتين. لكن مؤخرًا، ظهرت طريقة جديدة للتحدث تسمى GraphQL. وبدلاً من القائمة الثابتة، تعمل GraphQL مثل آلة بيع ذاتية سحرية وقابلة لتغيير الشكل؛ يمكنك أن تطلب بالضبط ما تريده، وستحاول هي بناءه لك في الحال. تكمن المشكلة في أنه نظرًا لمرونة هذه الآلة العالية، فإنها تنسى أحيانًا التحقق ممن يقف أمامها. قد تكتفي آلة البيع العادية بإعطاء الصودا لمن يملك عملة معدنية، لكن هذه الآلة السحرية قد تسلمك بالخطأ مذكرات خاصة أو حسابًا بنكيًا إذا سألت بالطريقة الصحيحة. وهنا يأتي دور الباحثين الأمنيين، الذين يحاولون اكتشاف كيفية خداع الآلة للكشف عن أسرارها دون تدمير المدينة فعليًا.

الورقة البحثية التي ستطالعها الآن تقدم محققًا رقميًا جديدًا يُدعى GraphQLer. فكر في معظم الماسحات الأمنية كأنها سياح غير مبالين يذهبون إلى آلة البيع، ويضغطون على زر عشوائي واحد، ثم يرون ما سيحدث. إذا ضغطوا على "صودا" وحصلوا على صودا، ينتقلون لما بعده. وإذا ضغطوا على "ماء" وحصلوا على خطأ، يستسلمون. إنهم لا يدركون أبدًا أنه للحصول على "المخزن السري"، يجب عليك أولاً الضغط على "شراء صودا"، ثم "الحصول على الإيصال"، وبعد ذلك تضغط على "المخزن السري". الأدوات القديمة غبية جدًا لدرجة أنها لا تستطيع ربط النقاط ببعضها؛ فهي تختبر كل زر بشكل منفصل وتفشل في إدراك التسلسلات المعقدة المطلوبة لكسر النظام.

أما GraphQLer فهو مختلف؛ فهو يشبه محققًا يدرس أولاً المخططات الهندسية للآلة (الـ "schema") ليفهم كيف ترتبط الأزرار ببعضها. إنه يبني خريطة ذهنية توضح أن "الزر أ" ينشئ عنصرًا جديدًا، و"الزر ب" يحذفه، و"الزر ج" قد لا يزال قادرًا على رؤيته حتى بعد حذفه. ومع هذه الخريطة، لا يضغط GraphQLer على الأزرار عشوائيًا؛ بل ينشئ سلاسل محددة من الإجراءات. إنه يحاكي سيناريو يقوم فيه مستخدم بشراء عنصر، ثم يحاول سرقته، أو يحذفه ثم يحاول قراءته مرة أخرى.

اختبر الباحثون هذا المحقق الجديد على 21 نظامًا مختلفًا من واجهات برمجة التطبيقات (APIs) الواقعية أو المحاكية للواقع. ووجدوا أن GraphQLer يمثل تحسنًا هائلاً مقارنة بالأدوات القديمة. فبينما تمكنت أفضل الأدوات الموجودة من الوصول بنجاح إلى حوالي 29% فقط من أزرار الآلة، تمكن GraphQLer من الوصول إلى 85.52% منها. والأهم من ذلك، عندما تعلق الأمر بالعثور على الثغرات الأمنية المعقدة، لم تجد الأدوات القديمة أي ثغرة واحدة من المشكلات المعقدة متعددة الخطوات، بينما وجد GraphQLer جميع ثغرات الـ "IDOR" الخمس المؤكدة (حيث يمكنك رؤية أشياء الآخرين بمجرد تغيير رقم ما) بل واكتشف أيضًا خطأ "الاستخدام بعد التحرير" (Use-After-Free) (حيث يمكنك رؤية ملف بعد حذفه).

في اختبار واقعي على نظام مالي (أطلق عليه المؤلفون اسم "FinServ" للحفاظ على سرية هويته)، وجد GraphQLer ثماني ثغرات أمنية محتملة دون الحاجة إلى أي كلمات مرور أو وثائق سرية. بل إنه وجد طرقًا لجعل النظام يتوقف عن العمل ويكشف عن الكود البرمجي الداخلي له، وهو أمر مرفوض تمامًا من الناحية الأمنية. كما أظهرت الورقة أن GraphQLer يمكنه إعادة إنتاج الثغرات المعروفة في منصة مفتوحة المصدر شهيرة تسمى "Saleor"، مما يثبت نجاعته في الأنظمة المعروفة بوجود خلل فيها.

يؤكد المؤلفون بحذر شديد أنه على الرغم من براعة أداتهم في اكتشاف هذا النوع المحدد من أخطاء "تفاعل السلسلة"، إلا أنها ليست عصا سحرية تحل كل شيء. فهي لا تزال تواجه صعوبة في بعض السيناريوهات المعقدة للغاية التي تتطلب معلومات متعددة في آن واحد لكي تعمل. ولكن بالنسبة للغالبية العظمى من التطبيقات الحديثة التي تستخدم تقنية GraphQL المرنة هذه، يثبت GraphQLer أنه لا يمكنك مجرد اختبار الأزرار واحدًا تلو الآخر بعد الآن؛ بل يجب عليك فهم القصة التي ترويها الآلة، وعندها فقط يمكنك العث lập الثغرات في الحبكة.

غارق في أبحاث مجالك؟

تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.

جرّب Digest →