التحقق الشكلي (نماذج الأمان)
تتتبع هذه الصفحة نماذج الأمان الشكلية الخاصة بـ OpenClaw (TLA+/TLC حاليًا؛ والمزيد حسب الحاجة).ملاحظة: قد تشير بعض الروابط الأقدم إلى الاسم السابق للمشروع.الهدف (البوصلة الأساسية): تقديم حجة متحقق منها آليًا تفيد بأن OpenClaw يفرض سياسة الأمان المقصودة لديه (التفويض، وعزل الجلسات، وتقييد الأدوات، وسلامة سوء الإعداد)، وذلك ضمن افتراضات صريحة. ما الذي يمثله هذا (حاليًا): حزمة انحدار أمان تنفيذية يقودها المهاجم:
- لكل ادعاء فحص نموذج قابل للتشغيل على فضاء حالات محدود.
- لدى العديد من الادعاءات نموذج سلبي مقترن ينتج مسار مثال مضاد لفئة أخطاء واقعية.
مكان وجود النماذج
تُدار النماذج في مستودع منفصل: vignesh07/openclaw-formal-models.تنبيهات مهمة
- هذه نماذج وليست تنفيذ TypeScript الكامل. ومن الممكن حدوث انحراف بين النموذج والشفرة.
- النتائج مقيدة بفضاء الحالات الذي يستكشفه TLC؛ فالحالة “الخضراء” لا تعني الأمان خارج حدود الافتراضات والقيود المصاغة في النموذج.
- تعتمد بعض الادعاءات على افتراضات بيئية صريحة (مثل النشر الصحيح، وصحة مدخلات الإعدادات).
إعادة إنتاج النتائج
حاليًا، تُعاد النتائج عبر استنساخ مستودع النماذج محليًا وتشغيل TLC (انظر أدناه). وقد يوفّر إصدار مستقبلي:- نماذج تعمل ضمن CI مع عناصر منشورة علنًا (مسارات الأمثلة المضادة، وسجلات التشغيل)
- سير عمل مستضاف من نوع “شغّل هذا النموذج” لعمليات التحقق الصغيرة والمحدودة
تعريض البوابة وسوء إعداد البوابة المفتوحة
الادعاء: يمكن أن يؤدي الربط خارج local loopback من دون مصادقة إلى جعل الاختراق عن بُعد ممكنًا / زيادة التعرض؛ ويمنع الرمز/كلمة المرور المهاجمين غير المصادقين (وفقًا لافتراضات النموذج).- التشغيلات الخضراء:
make gateway-exposure-v2make gateway-exposure-v2-protected
- الأحمر (متوقع):
make gateway-exposure-v2-negative
docs/gateway-exposure-matrix.md في مستودع النماذج.
مسار تنفيذ العقدة (أعلى القدرات خطورة)
الادعاء: يتطلبexec host=node (أ) قائمة سماح لأوامر العقدة بالإضافة إلى الأوامر المصرّح بها و(ب) موافقة مباشرة عند ضبطها؛ وتُرمَّز الموافقات لمنع إعادة التشغيل (ضمن النموذج).
- التشغيلات الخضراء:
make nodes-pipelinemake approvals-token
- الأحمر (متوقع):
make nodes-pipeline-negativemake approvals-token-negative
مخزن الاقتران (تقييد الرسائل الخاصة)
الادعاء: تحترم طلبات الاقتران TTL والحدود القصوى للطلبات المعلقة.- التشغيلات الخضراء:
make pairingmake pairing-cap
- الأحمر (متوقع):
make pairing-negativemake pairing-cap-negative
تقييد الإدخال (الإشارات + تجاوز أوامر التحكم)
الادعاء: في سياقات المجموعات التي تتطلب إشارة، لا يمكن لـ “أمر تحكم” غير مصرّح به تجاوز تقييد الإشارة.- الأخضر:
make ingress-gating
- الأحمر (متوقع):
make ingress-gating-negative
التوجيه / عزل مفتاح الجلسة
الادعاء: لا تنهار الرسائل الخاصة الواردة من أقران مختلفين إلى الجلسة نفسها ما لم تكن مرتبطة/مضبوطة صراحة.- الأخضر:
make routing-isolation
- الأحمر (متوقع):
make routing-isolation-negative
v1++: نماذج محدودة إضافية (التزامن، وإعادات المحاولة، وصحة التتبع)
هذه نماذج لاحقة تزيد من دقة المطابقة حول أوضاع الفشل الواقعية (التحديثات غير الذرية، وإعادات المحاولة، وتوزيع الرسائل).التزامن / الإديمبوتية في مخزن الاقتران
الادعاء: يجب أن يفرض مخزن الاقترانMaxPending والإديمبوتية حتى في ظل التداخلات (أي إن “التحقق ثم الكتابة” يجب أن يكون ذريًا / مقفلًا؛ ويجب ألا يؤدي التحديث إلى إنشاء تكرارات).
ما الذي يعنيه ذلك:
-
في ظل الطلبات المتزامنة، لا يمكنك تجاوز
MaxPendingلقناة ما. -
يجب ألا تنشئ الطلبات/التحديثات المتكررة للزوج نفسه
(channel, sender)صفوفًا معلقة حية مكررة. -
التشغيلات الخضراء:
make pairing-race(تحقق حد أقصى ذري/مقفّل)make pairing-idempotencymake pairing-refreshmake pairing-refresh-race
-
الأحمر (متوقع):
make pairing-race-negative(سباق حد أقصى غير ذري بين begin/commit)make pairing-idempotency-negativemake pairing-refresh-negativemake pairing-refresh-race-negative
ارتباط التتبع في الإدخال / الإديمبوتية
الادعاء: يجب أن تحافظ عملية الإدخال على ارتباط التتبع عبر التوزيع وأن تكون إديمبوتية تحت إعادات المحاولة من المزوّد. ما الذي يعنيه ذلك:- عندما يتحول حدث خارجي واحد إلى عدة رسائل داخلية، يحتفظ كل جزء بهوية التتبع/الحدث نفسها.
- لا تؤدي إعادات المحاولة إلى معالجة مزدوجة.
- إذا كانت معرّفات أحداث المزوّد مفقودة، يعود إلغاء التكرار إلى مفتاح آمن (مثل معرّف التتبع) لتجنب إسقاط أحداث متميزة.
-
الأخضر:
make ingress-tracemake ingress-trace2make ingress-idempotencymake ingress-dedupe-fallback
-
الأحمر (متوقع):
make ingress-trace-negativemake ingress-trace2-negativemake ingress-idempotency-negativemake ingress-dedupe-fallback-negative
أسبقية dmScope في التوجيه + identityLinks
الادعاء: يجب أن يحافظ التوجيه على عزل جلسات الرسائل الخاصة افتراضيًا، وألا يدمج الجلسات إلا عند ضبط ذلك صراحةً (أسبقية القناة + روابط الهوية). ما الذي يعنيه ذلك:- يجب أن تتغلب تجاوزات dmScope الخاصة بالقناة على الإعدادات الافتراضية العامة.
- يجب أن تقوم identityLinks بالدمج فقط داخل المجموعات المرتبطة صراحة، وليس عبر أقران غير ذوي صلة.
-
الأخضر:
make routing-precedencemake routing-identitylinks
-
الأحمر (متوقع):
make routing-precedence-negativemake routing-identitylinks-negative