Detecting Privilege Escalation in Polyglot Microservices via Agentic Program Analysis
تقدم هذه الورقة Neo، وهو إطار عمل لتحليل البرامج القائم على الوكلاء الذي يجمع بين النماذج اللغوية الكبيرة وتحليل البرامج الكلاسيكي للكشف بفعالية عن ثغرات تصعيد الامتيازات في بنيات الخدمات المصغرة المعقدة ومتعددة اللغات، حيث نجح في تحديد 24 ثغرة من نوع "اليوم الصفر" عبر 25 تطبيقاً مفتوح المصدر بدقة واستدعاء عاليين.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
تخيل مدينة ضخمة وعالية التقنية حيث كل مبنى فيها عبارة عن متجر متخصص ومستقل. هناك متجر يبيع الملابس، وآخر يتعامل مع التحويلات البنكية، وثالث يدير حسابات المستخدمين. في العالم الرقمي الحديث، تُسمى هذه "المتاجر" بالخدمات المصغرة (Microservices). وهي رائعة لأنها تستطيع النمو بشكل مستقل وإصلاح نفسها إذا تعطلت. ومع ذلك، نظرًا لأن جميع هذه المتاجر مختلفة، بناها أشخاص مختلفون باستخدام أدوات مختلفة (بعضها يستخدم Python، وبعضها Java، وبعضها Go)، فإن تتبع من يُسمح له بفعل ماذا يصبح كابوسًا.
هنا يأتي دور NEO. فكر في NEO كأنه محقق أمني فائق الذكاء ولا يكلّ، يجمع بين مهارتين قويتين:
- الحدس البشري للنماذج اللغوية الكبيرة (LLM): مثل المحقق الذي يمكنه قراءة ملاحظة وفهم القصد من وراء الكلمات (على سبيل المثال: "هذا الشخص يحاول تغيير دوره").
- دقة قارئ الخرائط الآلي: مثل المحقق الذي يمكنه تتبع كل خطوة خطاها شخص ما عبر جميع المباني المختلفة في المدينة فورًا، دون أن يضل طريقه.
المشكلة: خلل "تقمص الأدوار"
يشرح البحث خطرًا محددًا يسمى تصعيد الامتيازات (Privilege Escalation). تخيل عميلة تدعى "أليس" تريد تغيير ملفها الشخصي من "مستخدم عادي" إلى "مطور".
- تدخل أليس إلى متجر البوابة (الباب الأمامي). يتحقق الحارس من هويتها (المصادقة/Authentication). "حسنًا، أنتِ أليس".
- تذهب أليس إلى متجر الملف الشخصي. يتلقى الموظف طلبها ويمرره إلى متجر إدارة المستخدمين.
- يقوم متجر إدارة المستخدمين بتغيير دورها.
الخلل: المتاجر لم تتحدث مع بعضها البعض بشكل صحيح. المتجر الأول تحقق من هويتها، لكن المتجر الأخير لم يتحقق مما إذا كان يُسمح لها بفعل ذلك. يمكن للمهاجم خداع النظام ليقول: "غير دور أليس إلى مسؤول (Admin)" بدلاً من "مطور". ولأن المتاجر لم تنسق فيما بينها، يسمح النظام للمهاجم بأن يصبح هو المدير. هذا يشبه نزيل فندق يدخل إلى المطبخ ويقول للطاهي: "أنا المدير الآن، أعطني مفاتيح الخزنة"، فيقوم الطاهي، لعدم معرفته بأن هذا الشخص مجرد نزيل، بتسليم المفاتيح له.
التحدي: لماذا يصعب العثور على ذلك؟
إن العث find هذه الثغرات أمر صعب للغاية لثلاثة أسباب:
- لغز تعدد اللغات (The Polyglot Puzzle): المدينة مبنية بلغات مختلفة. قد تتحدث "البوابة" لغة Java، بينما يتحدث "مدير المستخدمين" لغة Python. أدوات الأمن القديمة تشبه المترجمين الذين يتحدثون لغة واحدة فقط؛ لا يمكنهم تتبع المحادثة عبر الحدود.
- المعنى الخفي: الكمبيوتر يرى الكود كرموز. هو لا يعرف أن الدالة
setUserRole()هي "خطوة استراتيجية" تتطلب تصريحًا خاصًا. هو يرى فقط اسم دالة. البشر يفهمون المعنى، لكن الكمبيوتر يحتاج إلى مساعدة. - المتاهة: المسار من الباب الأمامي إلى الخزنة قد يلتوي عبر 10 مبانٍ مختلفة، مرورًا ببرمجيات وسيطة (middleware)، وموجهات (routers)، ومزخرفات (decorators). الأدوات القديمة تضل طريقها في المتاهة.
الحل: كيف يعمل NEO
قام الباحثون ببناء NEO، وهو نظام "وكيل" (Agentic). فكر في NEO ليس كماسح ضوئي ثابت، بل كمحقق لديه خطة ذكية ومجموعة أدوات سحرية.
1. مجموعة الأدوات السحرية (بدائيات البحث في الكود)
بدلاً من أن تطلب من المحقق قراءة كل كتاب في المكتبة (الذي سيستغرق وقتًا طويلاً ويرهق عقله)، يمنح NEO أدوات محددة وقوية:
- أداة "البحث عن الاسم": تجد فورًا كل الدوال التي تحمل اسم "update" أو "role".
- أداة "تتبع التدفق": تتبع قطعة من البيانات (مثل طلب مستخدم) من الباب الأمامي وصولاً إلى الخزنة، حتى لو انتقلت بين لغات برمجة مختلفة.
- أداة "من استدعى من": ترسم خريطة كاملة لسلسلة القيادة لمعرفة من يتحدث مع من.
تعمل هذه الأدوات كمترجم عالمي، مما يسمح للمحقق بفهم لغات Java وPython وGo بالتساوي دون ارتباك بسبب قواعد اللغة (syntax).
2. عقل المحقق (النموذج اللغوي الكبير - LLM Agent)
يستخدم NEO نموذجًا لغويًا كبيرًا كعقل له.
- التخطيط الديناميكي: بدلاً من اتباع قائمة مراجعة جامدة، ينظر المحقق إلى الخريطة، ويرى مسارًا مشبوهًا، ويقرر: "أحتاج إلى فحص الموجه (router) في المبنى التالي". ثم يستخدم مجموعة الأدوات السحرية للتركيز على تلك النقطة تحديدًا.
- الفهم الدلالي: يقرأ المحقق الكود ويفهم: "آه، هذه الدالة تغير صلاحيات المستخدم. هذه (عملية ذات امتيازات) وتتطلب فحصًا صارمًا".
- التحقق: المحقق لا يخمن فقط. هو يسأل: "هل يوجد حارس عند هذا الباب؟". إذا وجد فحصًا، فإنه يقرأ قواعد الحارس ليرى ما إذا كانت صارمة بما يكفي. (مثال: "الحارس يتحقق مما إذا كنت مسجل الدخول، لكن هل يتحقق مما إذا كان مسموحًا لك أن تكون مسؤولًا (Admin)؟ لا؟ إذن هذه ثغرة").
النتائج: عملية صيد قياسية
اختبر الباحثون NEO على 25 تطبيقًا من تطبيقات الخدمات المصغرة الواقعية (مثل المتاجر الإلكترونية وأنظمة حجز التذاكر) التي تحتوي على ملايين الأسطر من الكود.
- الاكتشاف: وجد NEO 24 ثغرة جديدة تمامًا (Zero-day) لم يكن أحد يعرف عنها شيئًا من قبل.
- الدقة: كان محقًا بنسبة 81% عندما أطلق إنذارًا، واكتشف 85% من المشكلات الحقيقية.
- المقارنة:
- الأدوات القديمة (مثل MScan أو CodeQL): هي مثل محققين يتحدثون لغة واحدة فقط أو ينظرون إلى مبنى واحد فقط. لقد فاتهم معظم الهجمات التي تحدث عبر المباني المختلفة.
- الوكلاء الآخرون المعتمدون على الذكاء الاصطنا_ي (مثل EnIGMA): هم مثل محققين يحاولون قراءة كل صفحة من كل كتاب في المكتبة. يصابون بالإرهاق، وينفد وقتهم، ويفوتهم الأدلة.
- NEO: من خلال استخدام "مجموعة الأدوات السحرية" لأخذ الصفحات ذات الصلة فقط، و"عقل المحقق" لفهم القصة، وجد NEO 24 ثغرة إضافية مقارنة بأفضل طريقة أخرى.
الخلاصة
يثبت NEO أنك لست مضطرًا للاختيار بين "الذكاء الاصطناعي الذكي" و"تحليل الكود الدقيق". فمن خلال الجمع بينهما، تحصل على نظام يمكنه التنقل في عالم البرمجيات السحابية المعقد، متعدد اللغات، ومتعدد المباني للعثور على الثغرات الأمنية التي كانت غير مرئية سابقًا.
لقد قام الباحثون بإبلاغ مالكي البرمجيات بجميع نتائجهم بكل مسؤولية. وقد تم إصلاح الكثير منها بالفعل، مما يجعل هذه المدن الرقمية أكثر أمانًا للجميع.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.