الانتقال إلى المحتوى الرئيسي

الوكيل المارق هو عقد خروج مفقود، وليس نموذجًا مارقًا

عندما يصل وكيل إلى مضيف غير مرتبط بمهمته، يكون الخلل فجوة في الشبكة والصلاحيات. الحل هو عقد خروج صريح يُفرض عند طبقة المقابس، لا نموذج أفضل.

High contrast black and white close-up of a circuit board showcasing electronic components and intricate details.

ما تصفه تقارير الحوادث فعليًا

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

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

الخروج قدرة، والقدرات يجب منحها صراحةً

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

بيان الوجهات لكل تشغيلة هو الآلية الملموسة. قبل بدء المهمة، يصدر المنسّق بيانًا يسرد كل وجهة قد تصل إليها المهمة، مع قيود البروتوكول والمنفذ:

run_id: 7f3c2a
manifest_version: 4
destinations:
  - host: api.internal.example
    port: 443
    protocol: https
  - host: storage.internal.example
    port: 443
    protocol: https

يُوقَّع البيان وتُدار إصداراته إلى جانب مواصفات المهمة. يفرضه وقت التشغيل عند طبقة المقابس، لا في الـ prompt ولا في المخطط. الفرض في الـ prompt استشاري؛ والفرض في المخطط قابل للتجاوز بواسطة أداة تتجاهل الخطة. الفرض عند طبقة المقابس هو النقطة الوحيدة التي لا يمكن فيها الوصول إلى وجهة مرفوضة عبر أي مسار برمجي.

Close-up of a computer screen displaying colorful programming code with depth of field.

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

مشكلة الاستكشاف تقع قبل الطلب

الوكيل القادر على تعداد الخدمات سينتهي به الأمر إلى تعداد شيء لا ينبغي له لمسه. الاستكشاف ليس أثرًا جانبيًا؛ إنه قدرة. لا ينبغي لأسطح الأدوات أن تكشف عن أوليات استكشاف لا تتطلبها المهمة. مهمة تلخّص مستندًا لا تحتاج إلى ماسح منافذ، ولا نقل منطقة DNS، ولا بحث في سجل خدمات داخلي.

المقايضة الصادقة: إزالة أدوات الاستكشاف تقلل قدرة الوكيل على التكيف عندما تنتقل تبعية. الفرق التي تعتمد على الاستكشاف وقت التشغيل للتعامل مع بنية تحتية ديناميكية ستشعر بهذا كاحتكاك. البديل هو حل التبعيات في وقت توليد البيان، حيث يمكن لإنسان أو محرك سياسات مراجعة مجموعة الوجهات. هذا ينقل العمل إلى اليسار، وهو المقصود. وجهة تظهر وقت التشغيل دون مدخل في البيان ينبغي أن تكون انتهاكًا للسياسة، لا اتصالًا ناجحًا.

سجّل كل محاولة تحليل، لا كل اتصال مكتمل فقط. استعلام DNS لمضيف خارج البيان إشارة. حزمة TCP SYN إلى منفذ مرفوض إشارة. هذه الأحداث رخيصة التسجيل وهي أبكر دليل قابل للملاحظة على أن الوكيل يستكشف بما يتجاوز منحه. تسجيل الاتصالات المكتملة وحده يفوت المحاولات التي فشلت لأسباب غير مرتبطة، وهي بالضبط المحاولات التي يحتاج المشغّل إلى رؤيتها.

عقد قابل للتطبيق

يتكون العقد من أربعة أجزاء.

بيان الوجهات لكل تشغيلة. موقّع، مُدار الإصدارات، ومرفق بمواصفات المهمة. البيان هو المرجع لما قد تصل إليه التشغيلة. ليس اقتراحًا وليس قابلًا للتعديل من الوكيل.

الفرض وقت التشغيل عند طبقة المقابس. مساحة أسماء شبكية، أو برنامج eBPF، أو وكيل في مساحة المستخدم يحل كل اتصال صادر مقابل البيان. ال

Three engineers discussing sound waves displayed on a monitor in a professional sound studio.

الخروج المُحاول لكن المرفوض كإشارة من الدرجة الأولى. الرفض ليس خطأً يُكبَت. إنه تنبيه. تشغيلة تحاول عشرة اتصالات مرفوضة هي تشغيلة ينبغي إيقافها ومراجعتها، لا إعادة محاولتها.

تحديد نطاق بيانات الاعتماد بما يتوافق مع البيان. بيانات اعتماد صالحة في مكان آخر هي مسار خروج ثانٍ. إذا منح البيان مضيفًا واحدًا، ينبغي أن تصادق بيانات الاعتماد على ذلك المضيف ولا غيره. بيانات اعتماد واسعة وبيانات ضيقة تناقض.

لماذا هذه مشكلة صلاحيات، لا مشكلة نموذج

تتشارك الحوادث المُبلَّغ عنها خاصية بنيوية: كان للوكيل وصول لم يُمنح له قط. نموذج أكثر قدرة لم يكن ليتجنب الاختراق؛ بل ربما كان نموذج أكثر قدرة ليجد أهدافًا أكثر. التحكم الذي يمنع الاختراق هو عقد الخروج، ويُفرض خارج النموذج.

هذا ليس ادعاءً بأن سلوك النموذج غير ذي صلة. إنه ادعاء حول الترتيب. تُمنح الصلاحية قبل تشغيل النموذج. إذا كان المنح خاطئًا، فنية النموذج غير ذات صلة. وإذا كان المنح صحيحًا، فنبة النموذج مقيّدة بالبناء.

ملاحظات التنفيذ

ابدأ بمخطط بيان ومحلّل يرفض أي وجهة غير مدرجة. شغّله في وضع التدقيق أولًا: سجّل حالات الرفض دون حجب، وقارن الوجهات المسجلة بالبيان. الفجوة بين ما تصل إليه التشغيلات فعليًا وما يعلنه البيان هي أول قياس مفيد. ثم انتقل إلى وضع الفرض، لكل تشغيلة، مع مسار تراجع.

المقايضة هي عبء تشغيلي. كل تبعية جديدة تتطلب تحديث البيان، وتحديثات البيان تتطلب خطوة مراجعة. الفرق التي تشحن بسرعة ستقاوم هذا. المقاومة حقيقية، والبديل هو وكيل بوصول محيط وبيانات اعتماد تعمل في مكان آخر. هذا المزيج هو تقرير الحادث.

عقد الخروج لا يجعل الوكيل آمنًا. إنه يجعل وصول الوكيل قرارًا صريحًا وقابلًا للمراجعة والفرض. هذا هو الفرق بين نظام يمكن تدقيقه ونظام لا يمكن إلا وصفه بعد وقوع الأمر.

مشاركةXLinkedInرابط دائم5 دقيقة قراءة

قراءات ذات صلة

الأسئلة التي يجيب عنها هذا

What is an egress contract for an AI agent?

An egress contract is a per-run destination manifest that lists every host, port, and protocol the agent may reach. It is signed, versioned with the task spec, and enforced at the socket layer so the agent cannot express a request to an ungranted host.

Why is model intent the wrong control point?

If the runtime permits a connection and the credential authenticates, the request succeeds regardless of what the planner intended. Authority is granted before the model runs, so the control belongs in the grant, not in the model.

How should discovery primitives be handled?

Tool surfaces should not expose discovery primitives the task does not require. Dependencies should be resolved at manifest-generation time, where a policy engine or reviewer can see the destination set before the run starts.

What is the trade-off of strict egress control?

Every new dependency requires a manifest update and a review step, which adds operational overhead. The alternative is ambient network reach with credentials that are valid somewhere else, which is the shape of the reported incidents.