يطلب مطور من مساعد ذكاء اصطناعي إصلاح استعلام بحث عن العملاء كان يفشل في الاختبار. يؤدي التصحيح المقترح إلى اجتياز الاختبار، ولكنه يستبدل عامل التصفية (الفلتر) المقيَّد بنطاق المستأجر (tenant) بعملية بحث تعتمد على customerId (معرف العميل) فقط. بعد دمج طلب السحب (pull request)، يتمكن مستخدم يعرف معرف مستأجر آخر من الحصول على سجل ذلك العميل. لم يحتج المهاجم إلى صلاحيات الوصول إلى المستودع البرمجي، أو نظام التكامل المستمر (CI)، أو مساعد البرمجة؛ بل استخدم فقط طلباً عادياً للتطبيق موجهاً إلى نقطة نهاية (endpoint) اختفى منها فحص التفويض دون تنبيه.
يُعرَّف التغيير غير الموثوق بأنه أي كود مقترح، أو تبعية (dependency)، أو إعدادات، أو تعديل في سير العمل لم يجتز بعد ضوابط رقابية مستقلة عن مؤلفه. تندرج مخرجات المساعد ضمن هذه الفئة حتى لو كانت قابلة للترجمة البرمجية (compilation)، ومصحوبة بتفسير منطقي، وتُصلح الخلل المُبلغ عنه؛ فالمساعد يولد النص بناءً على المطالبة (prompt) وسياق المستودع، ولا يضمن أي من هذين الأمرين أن الاستعلام الناتج يحافظ على حدود المستأجر الخاصة بالتطبيق.
يمتد المسار المعني عبر عدة حدود؛ إذ تدخل تصحيحات المساعد، وإصدارات الحزم المقترحة، وأي إعدادات مولدة إلى المستودع كعناصر (artifacts) غير موثوقة. يقوم نظام التكامل المستمر (CI) بفحص التغيير المقترح ولكنه لا يتحقق تلقائياً من صحة التفويض. وفي بيئة الإنتاج، يتم تنفيذ العنصر المدمج فقط، حيث يؤدي غياب عامل التصفية إلى كشف بيانات عميل ما لمستأجر آخر. وتوضح خريطة الحدود التالية التمييز بين هذه العناصر:
توضح خريطة الحدود سبب استخدام المسار لاتفاقية أمان واحدة. يجب التعامل مع أي نتاج (أو كود) تم إنشاؤه بواسطة الذكاء الاصطناعي على أنه غير موثوق به حتى تتم الموافقة على التغيير من خلال مراجعة بشرية مستقلة وفحوصات آلية إلزامية. لا يُعد النموذج أبداً نقطة فرض القواعد الأمنية؛ فالأمر (prompt) الذي يطلب عزل المستأجرين (tenant isolation) يمثل تفضيلاً يتم نقله عبر نفس قناة الكود المقترح، وليس ضابطاً أمنياً يمنع الدمج غير الآمن.
فيما يتعلق بتصحيح (patch) ميزة البحث عن العملاء، يتحقق مراجع طلب الدمج (pull request) مما إذا كان الاستعلام لا يزال يطبق صلاحيات المستأجر الخاصة بالمستخدم المُصادق عليه. وتتحقق عملية التكامل المستمر (CI) من أدلة مختلفة: حيث يفحص تحليل الكود المصدري أنماط التنفيذ، ويفحص تحليل التبعيات الحزمة المضافة حديثاً، بينما يفحص مسح الأسرار (secret scanning) الكود المصدري والإعدادات المعدلة بحثاً عن أي بيانات اعتماد. وتفرض آليات حماية فروع المستودع قرار الدمج من خلال اشتراط تلك الفحوصات والموافقات؛ إذ لا ينبغي لأي ضابط أمني أن يعتمد على ادعاء المساعد الذكي بأن التصحيح آمن.
قاعدة الاختبار
لا يُقبل الكود المُنشأ بواسطة الذكاء الاصطناعي إلا عند توفر أدلة مسجلة ناتجة عن مراجعة مستقلة واجتياز البوابات الأمنية المطلوبة. ولا تفرض مخرجات النموذج أو صياغة الأمر (prompt) ضوابط التحكم في الوصول.
لكل ضابط أمني حدود؛ فقد تغفل المراجعة البشرية خطأً دقيقاً في تدفق البيانات، ولذا توفر الفحوصات الآلية مؤشراً إضافياً. وبالمثل، قد تغفل أدوات المسح الآلي منطق التفويض الذي يتطلب فهماً لسياق التطبيق، مما يجعل المراجعة المؤهلة أمراً إلزامياً. إن اجتياز مسار العمل (pipeline) لا يثبت خلو الكود من الثغرات، بل يثبت وجود أدلة البوابة المحددة لهذا الإصدار. وعند فشل اجتياز بوابة مطلوبة، يقوم المستودع بتسجيل النتيجة، ومنع الدمج وفقاً للسياسة المتبعة، والاحتفاظ بسجل تدقيق لقرار القبول أو الاستثناء.
يتمثل العنصر قيد التنفيذ في طلب دمج (pull request) يضيف المسار GET /search?q=... إلى خدمة ويب تدعم تعدد المستأجرين (multi-tenant)، ويضيف تبعية للبحث النصي. وتُعد طلبات المستخدمين مدخلات غير موثوقة؛ حيث يتلقى المعالج (handler) هوية المستخدم المُصادق عليه، ويبني استعلاماً لقاعدة البيانات، ويجب عليه تطبيق صلاحيات المستأجر الخاصة بذلك المستخدم قبل أن تعيد قاعدة البيانات النتائج (الصفوف). تُنفَّذ عملية قاعدة البيانات باستخدام هوية الخدمة الخاصة بالتطبيق، بينما تتولى طبقة الاستعلام أو السياسة فرض القيود على ما يمكن للمستخدم النهائي رؤيته. إذا قبلت نقطة النهاية (endpoint) الجديدة مُعرِّف المستأجر (tenantId) من الطلب دون مقارنته بصلاحيات الوصول المُصادق عليها، فإن نطاق التأثير المحتمل (blast radius) يشمل كل سجل يمكن الوصول إليه عبر هوية الخدمة تلك.
يُعد “طلب السحب” (pull request) بحد ذاته غير موثوق به أيضاً؛ فقد يؤدي “فرق التغيير” (diff) فيه إلى إزالة شرط تصفية المستأجر، وقد تتضمن قائمة التبعيات حزمة برمجية غير آمنة أو غير ملائمة، كما قد يحتوي ملف الإعدادات المُولَّد على بيانات سرية مكشوفة. ولا يمكن للشرح الذي يقدمه المساعد الذكي حسم أي من هذه المسائل؛ إذ تُستمد الأدلة من فرق التغيير، وقائمة التبعيات المعدلة، وفئات أدوات الفحص، وموافقة المراجع، وسجل الدمج.
يقوم الاختبار الساكن لأمن التطبيقات (SAST) بفحص الكود المصدري وتدفق البيانات على مستوى الكود بحثاً عن أنماط الضعف المعروفة. بينما يفحص تحليل تكوين البرمجيات (SCA) التبعيات والبيانات الوصفية للمكونات للتحقق من شروط سلسلة التوريد البرمجية. أما فحص الأسرار فيبحث في ملفات المستودع المعدلة عن بيانات الاعتماد أو الرموز المميزة (tokens) التي لا ينبغي رفعها (commit) إلى المستودع. ونظراً لأن عمليات الفحص هذه تتناول عناصر مختلفة، فلا يمكن لنتيجة إيجابية في أحدها أن تغني عن نتيجة إيجابية في الآخر. يوضح كل من مسار الطلب ومسار التكامل المستمر (CI) مصدر الاقتراحات والمراحل التي تُنتج فيها عملية التحقق أدلة القبول: