shell.exec، ويحرّر الملفات، ويجلب روابط URL، ويحمّل مهارات مجتمعية —
وأيّ واحد منها يمكن أن يفعل rm -rf لقرص، أو يقرأ .env، أو يسرّب إلى
مضيف مهاجم. تحكم هذه الوصفة إغلاق ذلك السطح بـ
جدار الحماية: ارفض الـ shell المدمّر، وتحقّق من
وسائط الاستدعاءات التي تسمح بها، وسيّج egress، وعلّق العمليات الخطرة
حقاً لإنسان. لا شيء من ذلك يلمس كود وكيلك — تعيش السياسة في البوابة وتُفرض
في الاستدعاء التالي.
كل شيء أدناه يُضبط في وحدة التحكم (Firewall → Posture / Policies).
تستخدم مسارات الإدارة تلك جلسة وحدة تحكّمك، لا مفتاح ترحيل. وحدها
استدعاءات
/v1/* التي يجريها وكيلك تحمل مفتاح sk-orca-…. تتطلب تحريرات
السياسة دور Developer.1. ابدأ بالمراقبة لا الحجب — خط أساس وكيل البرمجة الآمن
لا تؤلّف القواعد بلا رؤية. أعطِ الوكيل مفتاحsk-orca-… خاصته، ثم افتح
Firewall → Posture وطبّق مستوى الاستقلالية balanced
مستوى الاستقلالية. في
معاملة واحدة يدقّق هذا كل استدعاء أداة، ويعلّم PII، ويرفض الـ shell
المدمّر — فيكون أسوأ إجراء مسيَّجاً بالفعل بينما تتعلّم بقية سلوك
الوكيل من حركة المرور الحقيقية.
دعه يعمل، ثم اقرأ Firewall → Discovered tools: كل أداة رأتها مساحة
العمل، مُعلَّمة covered (تنطبق قاعدة) أو gap (لا شيء ينطبق). تلك
القائمة مسوّدة قائمة السماح لديك. عندما تبدو التغذية صحيحة، انتقل إلى
tight (حجب-افتراضي) أو ألّف السياسة المستهدفة أدناه.
2. ارفض الـ shell المدمّر — الأرضية غير القابلة للتفاوض
أهم قاعدة وحيدة لوكيل برمجة هي لا shell مدمّر. يطرح مستويا الاستقلاليةbalanced وtight هذا بالفعل كإعداد مسبق Block destructive shell،
الذي يجسّد قواعد deny حقيقية قابلة للتحرير تغطي أسماء الأدوات المباشرة
لمساحة العمل (shell.*، bash، cmd.*، powershell.*، exec.*)
والصيغ ذات مساحة أسماء MCP التي يكشفها خادم مسجَّل (*.shell.*،
*.cmd.*، …).
إن آثرت قصره أضيق من “ارفض كل shell”، ألّف قاعدة واحدة ترفض فقط الأوامر
المدمّرة وتدقّق الباقي. تطابق القاعدة على نمط glob لاسم الأداة بالإضافة
إلى مُسنِد وسائط اختياري (JSONPath مقابل وسائط الاستدعاء):
ارفض rm -rf لكن اسمح باستدعاءات shell أخرى
ارفض rm -rf لكن اسمح باستدعاءات shell أخرى
في Firewall → Policies، أضف قاعدة فوق افتراضيك:
- Tool glob:
shell.exec - Args match (عبارة JSONPath):
- Verdict:
deny
eq، contains، regex، in،
cidr_match، gt، lt. يُحجب استدعاء يطابق $.command لديه الـ
regex؛ وكل شيء آخر يسقط إلى القاعدة التالية.كيف يبدو الحجب
كيف يبدو الحجب
استدعاء مرفوض على سطح inbound يعيد HTTP 400 برمز خطأ
firewall_blocked ورسالة تسمّي الأداة والسبب. استدعاء مُرسَل عبر
بوابة MCP يعود كـخطأ أداة (firewall deny: …) فيستطيع النموذج
التفاعل بدلاً من الانهيار. تُطلق حجوب inbound قبل استدعاء النموذج
الأعلى، فلا تكلّف أي رموز نموذج.3. تحقّق من الوسائط على الأدوات التي تُبقيها
السماح بأداة ليس كالسماح بكل وسيطة لها. نفس مُسنِد JSONPath الذي يقصر deny يتيح لك تقييد شكل استدعاء مسموح — فلا يحملdb.query عبارة DROP،
ولا يهرب file.write من مجلد.
احجب SQL DROP
Glob
db.query، عبارة
{"path":"$.sql","op":"regex","value":"(?i)\\bdrop\\b"}، حكم
deny.نقّح سرّاً في الوسائط
ينقّح حكم
sanitize السلاسل الفرعية المطابقة من وسائط استدعاء
الأداة قبل تمرير الاستدعاء. لا يلمس أبداً ما تعيده أداة؛ على سطح
inbound (لا وسائط وقت استدعاء بعد) يتصاعد إلى حجب.4. تحكّم في egress — سيّج أين يمكن للوكيل أن يصل
وكيل برمجة يستطيع جلب روابط URL يمكن توجيهه نحو SSRF (الوصول إلى البيانات الوصفية للسحابة أو مضيف داخلي10.x) أو استخدامه للتسريب. يطرح مستوى
الاستقلالية tight إعداد SSRF مسبق يرفض أسماء الأدوات على هيئة جلب
(http_fetch، web_search، fetch_url، request، وصيغها <server>.*)
بالكامل.
للتحكم على مستوى الوجهة، ألّف قاعدة egress. تقصر قواعد egress حسب
host أو CIDR بمدخلات allow / deny، مقيَّمة على سطح egress:
لا يطرح أي إعداد مسبق قواعد egress مبنية على CIDR — يطابق إعداد SSRF
المسبق أسماء الأدوات على هيئة جلب. قائمة رفض host/CIDR أعلاه واحدة
تؤلّفها بنفسك. انظر أوقف التسريب
للنمط الكامل.
5. علّق العمليات الخطرة لإنسان (HITL)
بعض العمليات لا ينبغي السماح بها تلقائياً ولا رفضها تلقائياً — نشر، أوgit push، أو هجرة مدمّرة. لتلك، استخدم حكم pending_approval. يُعلَّق
الاستدعاء، ويحصل الوكيل على استجابة “مُعلَّقة” بمعرّف موافقة، ويحلّها
مراجِع خارج النطاق:
- ألّف قاعدة (مثلاً glob
deploy.*، حكمpending_approval). - يعيد الاستدعاء المُعلَّق HTTP 400
firewall_approval_pendingبمعرّف موافقة. - يوافق عليه مراجِع من وحدة التحكم (Developer+) أو عبر استدعاء webhook مُوقَّع بـ HMAC.
- يستطلع الوكيل الموافقة، ثم يعيد تقديم الاستدعاء الأصلي بترويسة
X-OrcaRouter-Firewall-Approvalأحادية الاستخدام — وتمرّره البوابة تلك المرة الواحدة.
6. احكم المهارات وخوادم MCP التي يحمّلها
تجلب وكلاء البرمجة القدرات وقت التشغيل — مهارات مجتمعية، خوادم MCP خاصة بك. يحكم جدار الحماية كليهما في البوابة:- تُفحَص المهارات إلى نطاق مخاطر بوضع فرض
(
allow/quarantine/block). مهارة مكتشَفة تلقائياً محجوزة في الحجر — معلَّقة للموافقة — حتى يصفّيها مراجِع. انظر المهارات. - خوادم MCP التي تسجّلها ترسل كل
tools/callعبر البوابة، التي تقيّم كل واحد على سطحmcpقبل الإرسال. تُخزَّن بيانات الاعتماد مشفَّرة؛ ويبلّغ فحص صحة عنok/degraded/down. انظر خوادم MCP و تقوية وكيل MCP.
7. تحقّق وراقب
قبل أن تعتمد على سياسة، شغّلها تجريبياً. يقيّم تبويب Test استدعاء أداة عينة مقابل السياسة الحالية ويُظهر الحكم، والقاعدة المطابقة، والسبب — لا يُرسَل شيء، ولا يُحفظ شيء. بمجرد التشغيل، Firewall → Events / Runs هو سجل كل تقييم، قابل للتصفية حسب الحكم والسطح والأداة والتشغيل، وتعلّم تغذية الشذوذ ارتفاعات المعدل/التكلفة مقابل خط الأساس المتعلَّم لمساحة العمل، وretry_loop، ومسارات الأدوات غير المرئية من قبل.
الخلاصة
مرجع جدار الحماية
مستوى السياسة الكامل — الأسطح، الأحكام، الحل، الاستقلالية.
قواعد جدار الحماية
لغة المطابقة: globs، عبارات الوسائط، egress، التسلسلات.
استدعاءات الأدوات الخطرة
التهديد الذي تدافع عنه هذه الوصفة.
الوكالة المفرطة
لماذا الوكلاء مفرطو الصلاحيات هم الخطر الجوهري للوكلاء.
وصفة الوكيل المستقل
أحكم إغلاق حلقة وكيل مستقل بالكامل من طرف إلى طرف.
أوقف التسريب
أنماط egress والثالوث القاتل بعمق.
