يفتح أحد العملاء محادثة دعم فني ويسأل: “هل يمكنك توضيح سبب تصنيف الفاتورة INV-1042 على أنها متأخرة السداد؟” فيرد مساعد الدعم بتفسير واثق مستشهداً بملاحظة داخلية تخص شركة أخرى، تتضمن عبارة مثل: “وفقاً لشروط التجديد الخاصة بشركة ACME، يتم إعفاء العميل من الرسوم في حال الدفع خلال 60 يوماً (net-60).” لم تظهر واجهة الدعم أي تذاكر خاصة بشركة ACME أمام الموظف أو العميل، ومع ذلك قام المساعد بجلب تلك الملاحظة وإدراجها في الإجابة. لم يحدث شيء غير مألوف هنا؛ إذ اكتفى العميل بطرح سؤال عادي عبر القناة المعتادة، وتولى التطبيق بقية العملية.
إن هيكلية النظام التي أدت إلى هذا التسريب بسيطة بما يكفي لاستيعابها وفهمها بسهولة. تبدأ العملية بإرسال المستخدم النهائي رسالة إلى تطبيق الدعم، فيقوم التطبيق بجلب السجلات ذات الصلة من قاعدة البيانات، ثم يجمع “مطالبة” (prompt) تتضمن رسالة المستخدم والصفوف المسترجعة، ويرسلها إلى مزود النموذج الذكي. يعيد النموذج نصاً معيناً، فيقوم التطبيق بعرضه كإجابة للمساعد. يتجلى الخلل في صورة استشهاد ببيانات تخص مستأجراً (عميلاً مؤسسياً) آخر؛ حيث قام التطبيق بإظهار بيانات خاصة بمستأجر لمستخدم يتبع مستأجراً آخر.
لا يمكننا معالجة التسريب إلا بعد تحديد الحد الفاصل الدقيق الذي تنتقل عنده البيانات غير الموثوقة لتتحول إلى إجراء موثوق. يُعرف حد الثقة (trust boundary) بأنه النقطة الفاصلة التي لا ينبغي عندها للبيانات القادمة من أحد الجانبين أن تكتسب تلقائياً صلاحيات الجانب الآخر، نظراً لاختلاف الدوافع ومستويات الوصول بينهما. في حالة مساعد الدعم لدينا، يقع المستخدم النهائي في جانب، بينما تقع آلية وصول التطبيق للبيانات في الجانب الآخر، إلا أن هذا الحد يتكرر عند كل مرحلة انتقالية قد تغير طبيعة البيانات المقروءة أو المكشوفة.
على امتداد مسار الطلب بالكامل، نتعامل مع أربعة عناصر باعتبارها غير موثوقة، لأن كلاً منها قد يحمل تعليمات أو محتوى لم يقم التطبيق بإنشائه. تُعد رسالة المستخدم النهائي غير موثوقة لأن المستخدم هو من يتحكم فيها. وتُعد صفوف قاعدة البيانات غير موثوقة لأن القاعدة قد تعيد صفوفاً غير متوقعة في حال وجود خطأ في الاستعلام أو عامل التصفية (filter)، ولأن النصوص المسترجعة قد تحتوي على محتوى بصيغة تعليمات لا ينبغي أن تظهر في الإجابة. كما يُعد مخرَج النموذج غير موثوق لأن النموذج يتبع النص الذي تلقاه، وقد يقترح عمليات قراءة أو كتابة أو كشف بيانات لم يكن التطبيق يقصدها. العنصر الوحيد الذي يُعتبر موثوقاً منذ البداية هو إعدادات التطبيق نفسه — مثل القائمة الثابتة المسموح بها لأسماء الأدوات أو قائمة الأعمدة المحددة برمجياً (hard-coded) — وحتى هذه الإعدادات تظل موثوقة فقط إذا قام التطبيق بتحميلها من مصدر خاضع للتحكم. يُبيّن مخطط حدود الثقة أدناه كل مرحلة انتقال (hop) والبيانات المتدفقة عبرها. فلنُحدِّد موضع دخول كل مُدخل غير موثوق إلى مسار التدفق: