shell.exec جيد لـ ls؛ وهو كارثة لـ rm -rf /.
db.query جيد مقابل نسخة طبق الأصل؛ ومقابل prod هو مسؤولية. الفرق يعيش في
الوسائط، وقاعدة اسم أداة لا يمكنها رؤيته.
عبارات الوسائط في جدار الحماية (args_match_json) تسد تلك الثغرة. تفحص
الوسائط الملموسة التي اختارها النموذج لاستدعاء أداة وتقرر الحكم من قيمها —
فيمكنك السماح بأداة على نطاق واسع بينما ترفض الشكل الخطر الوحيد الذي يمكن أن
تتخذه. هذه الصفحة هي الدليل المركّز لتأليف تلك العبارات؛ لمفردات القواعد
الكاملة انظر قواعد جدار الحماية، ولنموذج السياسة
حولها، جدار الحماية.
1. متى تتحقق من وسائط استدعاء الأداة
الجأ إلى عبارة وسائط كلما كانت أداة آمنة عموماً لكن خطرة في شكل محدد:الأوامر المدمّرة
اسمح بـ
shell.exec، لكن ارفض عندما يطابق الأمر rm -rf أو mkfs أو
dd if=.نصف قطر انفجار الإنتاج
اسمح بـ
db.query، لكن ارفض (أو علّق للموافقة) عندما يكون هدف الاتصال
prod.الوجهات الداخلية
اسمح بأداة جلب، لكن ارفض عندما تقع وسيطة
url/ip داخل نطاق RFC-1918 أو
IP بيانات تعريف السحابة.العمليات المفرطة الحجم
اسمح بأداة دفعية، لكن ارفض عندما تتجاوز وسيطة
limit أو count سقفاً
رقمياً.2. شكل مجموعة عبارات
args_match_json هي سلسلة مرمّزة بصيغة JSON قيمتها المفكوكة كائن يحمل
قائمة clauses. كل عبارة ثلاثية { path, op, value }، وكل العبارات تُدمج
بـ AND — تُطلق القاعدة فقط عندما تكون كل عبارة صحيحة. مفكوكة، تبدو القيمة:
"args_match_json": "{\"clauses\":[{\"path\":\"$.command\",\"op\":\"regex\",\"value\":\"rm -rf\"}]}".
args_match_json فارغة أو غائبة هي صحيحة فراغياً — تطابق القاعدة على glob
اسم أداتها وحده، تماماً كما تفعل قاعدة بالاسم فقط.
3. العوامل
سبعة عوامل تشكّل المفردات المغلقة. تتحقق وحدة التحكم من العامل وشكل قيمته عند الحفظ، فلا تبقى أبداً عبارة مشوّهة.| العامل | يطابق عندما |
|---|---|
eq | مساواة قياسية (الأرقام تُقارَن رقمياً؛ عدم تطابق النوع لا مطابقة). |
contains | سلسلة فرعية — يجب أن يكون كلا المعاملين سلاسل. |
regex | نمط Go RE2 يطابق قيمة السلسلة (زمن خطّي، لا مراجع خلفية). |
in | القيمة عنصر من مصفوفة JSON المعطاة. |
cidr_match | IP السلسلة يقع داخل CIDR المعطى. |
gt / lt | أكبر-من / أصغر-من رقمي (السلاسل لا تُقسَر). |
4. صيغة المسار
path للعبارة هو مجموعة فرعية صغيرة من JSONPath على كائن وسائط الأداة:
$.foo، $.foo.bar — الوصول للحقل
$.foo، $.foo.bar — الوصول للحقل
اقرأ حقل كائن من المستوى الأعلى أو متداخل بالاسم.
$.foo[0]، $.arr[1].k — فهرسة المصفوفة
$.foo[0]، $.arr[1].k — فهرسة المصفوفة
فهرِس داخل مصفوفة، واختيارياً تابع إلى حقول العنصر.
$ — كائن الوسائط بالكامل
$ — كائن الوسائط بالكامل
طابق مقابل كتلة الوسائط كاملةً (مفيد مع
contains أو regex لفحص خشن).5. مثال معالَج
تدع وكلاءك يشغّلونshell.exec بحرية، لكن حذفاً قسرياً تكرارياً يجب ألّا يصل
أبداً إلى الـ shell. ألّف قاعدة واحدة على مرحلة response ترفض shell.exec
فقط عندما تبدو وسيطة الأمر مدمّرة.
افتح محرر القواعد
في وحدة التحكم، افتح سياسة جدار الحماية المرتبطة بمفتاح وكيلك (أو افتراضي
مساحة العمل) وأضف قاعدة. تحرير السياسات إجراء Developer+ — يمكن لأعضاء
Member قراءة السياسات لكن ليس كتابتها.
طابق الأداة على مرحلة response
اضبط المرحلة على
response وglob الأداة على shell.exec. مرحلة
response تحمل الوسائط التي اختارها النموذج، التي تحتاجها العبارة.أضف عبارة الوسائط
أضف عبارة
regex واحدة على $.command، ثم اضبط الحكم على deny:args_match_json سلسلة مرمّزة بصيغة JSON؛ قيمتها المفكوكة هي كائن
{ "clauses": [ … ] } المعروض في §2.أجرها تجريبياً قبل أن تعتمد عليها
استخدم تبويب Test لتقييم القاعدة مقابل
استدعاء
shell.exec عينة. يعيد الحكم، والقاعدة المطابقة، والسبب — لا شيء
يُرسَل ولا شيء يُحفظ.shell.exec بـ "command": "ls -la" يتدفّق كما من قبل، بينما
"command": "rm -rf /var" يُرفض. deny على response يدع النموذج يرى خطأ
أداة ويتفاعل — اختيار أداة أخرى، أو سؤال المستخدم، أو التوقف — بدلاً من
الانهيار.
6. العبارات تفشل مغلقةً — القاعدة، وليس الطلب
إذا تعذّر تقييم عبارة — لم يُحَل المسار، أو الوسائط مشوّهة، أو regex / CIDR غير صالح — تُقيَّم العبارة إلى خطأ والقاعدة ببساطة لا تُطلق. يسقط الاستدعاء إلى القاعدة التالية أوdefault_verdict للسياسة. عبارة معطوبة لا
ترفض تلقائياً أبداً ولا تزعج الترحيل.
7. دمج العبارات مع بقية قاعدة
تتراكم عبارات الوسائط مع كل ما تعبّر عنه قاعدة — إنها شرط واحد مدموج بـ AND بين عدة:| ادمج مع | الأثر |
|---|---|
tool_name_glob | تعمل العبارة فقط بعد أن يطابق اسم الأداة — الاسم أولاً، الوسائط ثانياً. |
skill_name_glob | احكم وسائط نفس الأداة بشكل مختلف حسب المهارة المالكة (مثل أصرم على community.*). |
verdict | اقرن العبارات بـ deny أو sanitize أو pending_approval أو cap_cost، وليس deny فقط. |
| عبارات متعددة | يجب أن تصحّ كلها — ادمج فحص أمر regex مع فحص بيئة in لقصر deny بإحكام. |
8. أين يقع هذا
قواعد جدار الحماية
مرجع القاعدة الكامل — globs، العبارات، المُطهّرات، egress، والتسلسلات.
كتاب طبخ الوسائط
وصفات
args_match_json للنسخ واللصق للأشكال الخطرة الشائعة.مراحل جدار الحماية
لماذا تعيش عبارات الوسائط على
response وmcp، وليس inbound.حجب الأدوات
ارفض أداة صراحةً عندما لا تكون أي وسيطة آمنة.
