CLI commands
الأمان
openclaw security
أدوات الأمان: التدقيق مع إصلاحات آمنة اختيارية. ذو صلة: الأمان.
openclaw security auditopenclaw security audit --deepopenclaw security audit --deep --password <password>openclaw security audit --deep --token <token>openclaw security audit --auth password --password <password>openclaw security audit --fixopenclaw security audit --jsonأوضاع التدقيق
يبقى security audit العادي ضمن مسار الإعدادات/نظام الملفات البارد والمخصص للقراءة فقط: فهو لا يكتشف مجمّعات أمان وقت تشغيل Plugin، ولذلك لا تحمّل عمليات التدقيق الروتينية وقت تشغيل كل Plugin مثبّت. يضيف --deep فحوصات مباشرة بأفضل جهد لـ Gateway ومجمّعات تدقيق الأمان التي تملكها Plugins (كما يمكن للجهات الداخلية المستدعية الصريحة الاشتراك في تلك المجمّعات عندما يكون لديها بالفعل نطاق وقت تشغيل مناسب).
إذا لم تُوفَّر مصادقة كلمة مرور Gateway إلا عند بدء التشغيل، فمرّر القيمة نفسها باستخدام --auth password --password <password> كي يتمكن التدقيق من فحصها مقابل hooks.token.
ما الذي يفحصه
نموذج الرسائل المباشرة/الثقة
- يحذّر عندما يتشارك عدة مرسلين للرسائل المباشرة الجلسة الرئيسية، ويوصي بوضع الرسائل المباشرة الآمن:
session.dmScope="per-channel-peer"(أوper-account-channel-peerللقنوات متعددة الحسابات) لصناديق الوارد المشتركة. هذا تعزيز أمان تعاوني/لصندوق وارد مشترك، وليس عزلاً للمشغّلين الذين لا يثق بعضهم ببعض؛ افصل حدود الثقة باستخدام بوابات منفصلة (أو مستخدمي نظام تشغيل/مضيفين منفصلين) لهذا الغرض. - يصدر
security.trust_model.multi_user_heuristicعندما تشير الإعدادات إلى احتمال وجود دخول من مستخدمين مشتركين (مثل سياسة مفتوحة للرسائل المباشرة/المجموعات، أو أهداف مجموعات مضبوطة، أو قواعد مرسلين بأحرف بدل) — نموذج الثقة الافتراضي في OpenClaw هو المساعد الشخصي (مشغّل واحد)، وليس عزلاً عدائياً متعدد المستأجرين. في الإعدادات المقصودة للمستخدمين المشتركين: اعزل جميع الجلسات، واقصر الوصول إلى نظام الملفات على نطاق مساحة العمل، وأبقِ الهويات أو بيانات الاعتماد الشخصية/الخاصة خارج وقت التشغيل ذاك. - يحذّر عند استخدام نماذج صغيرة (
<=300Bمن المعلمات) دون عزل مع تمكين أدوات الويب/المتصفح.
Webhook/الخطافات
يسجّل بدء التشغيل تحذيراً أمنياً غير فادح، ويشير التدقيق إلى إعادة استخدام hooks.token لقيم مصادقة السر المشترك النشطة في Gateway (gateway.auth.token / OPENCLAW_GATEWAY_TOKEN، وgateway.auth.password / OPENCLAW_GATEWAY_PASSWORD). ويحذّر أيضاً عندما:
- يكون
hooks.tokenقصيراً hooks.path="/"- تكون قيمة
hooks.defaultSessionKeyغير مضبوطة - تكون قيمة
hooks.allowedAgentIdsغير مقيّدة - تكون تجاوزات
sessionKeyالخاصة بالطلب مفعّلة - تكون التجاوزات مفعّلة دون
hooks.allowedSessionKeyPrefixes
شغّل openclaw doctor --fix لتدوير hooks.token دائم أُعيد استخدامه، ثم حدّث مرسلي الخطافات الخارجيين لاستخدام الرمز المميز الجديد.
العزل/الأدوات
- يحذّر عند ضبط إعدادات Docker الخاصة بالعزل بينما يكون وضع العزل متوقفاً.
- يحذّر عندما يستخدم
gateway.nodes.denyCommandsإدخالات غير فعالة تشبه الأنماط/غير معروفة (المطابقة تكون لاسم أمر Node بدقة فقط، وليست تصفية لنص الصدفة). - يحذّر عندما يمكّن
gateway.nodes.allowCommandsأوامر Node خطرة صراحةً. - يحذّر عندما تتجاوز ملفات تعريف أدوات الوكيل قيمة
tools.profile="minimal"العامة. - يحذّر عندما تكون أدوات الكتابة/التحرير معطّلة، لكن
execلا يزال متاحاً دون حدود مقيّدة لنظام ملفات العزل. - يحذّر عندما تكشف الرسائل المباشرة أو المجموعات المفتوحة أدوات وقت التشغيل/نظام الملفات دون وسائل حماية للعزل/مساحة العمل.
- يحذّر عندما يمكن الوصول إلى أدوات Plugins المثبّتة بموجب سياسة أدوات متساهلة.
متصفح العزل
- يحذّر عندما يستخدم متصفح العزل شبكة Docker
bridgeدونsandbox.browser.cdpSourceRange. - يشير إلى أوضاع شبكة Docker الخطرة للعزل، بما فيها عمليات الانضمام إلى نطاقَي الأسماء
hostوcontainer:*. - يحذّر عندما تكون حاويات Docker الحالية لمتصفح العزل بلا تسميات تجزئة أو ذات تسميات قديمة (مثل حاويات ما قبل الترحيل التي تفتقد
openclaw.browserConfigEpoch) ويوصي باستخدامopenclaw sandbox recreate --browser --all.
الشبكة/الاكتشاف
- يشير إلى
gateway.allowRealIpFallback=true(خطر انتحال الترويسات إذا أسيء ضبط الوكلاء). - يشير إلى
discovery.mdns.mode="full"(تسرّب البيانات الوصفية عبر سجلات mDNS TXT). - يحذّر عندما يترك
gateway.auth.mode="none"واجهات HTTP API الخاصة بـ Gateway قابلة للوصول دون سر مشترك (/tools/invokeبالإضافة إلى أي نقطة نهاية/v1/*مفعّلة).
Plugins/القنوات
- يحذّر عندما تكون سجلات تثبيت Plugins/الخطافات المستندة إلى npm غير مثبّتة على إصدار محدد، أو تفتقد بيانات تعريف التكامل، أو تنحرف عن إصدارات الحزم المثبّتة حالياً.
- يحذّر عندما تعتمد قوائم السماح للقنوات على أسماء/عناوين بريد إلكتروني/وسوم قابلة للتغيير بدلاً من معرّفات ثابتة (ضمن نطاقات Discord وSlack وGoogle Chat وMicrosoft Teams وMattermost وIRC حيثما ينطبق).
الإعدادات التي تبدأ بـ dangerous/dangerously هي تجاوزات صريحة للمشغّل للاستخدام في حالات الطوارئ؛ ولا يُعد تمكين أحدها، بحد ذاته، تقريراً عن ثغرة أمنية. للاطلاع على القائمة الكاملة للمعلمات الخطرة، راجع «ملخص العلامات غير الآمنة أو الخطرة» في الأمان.
سلوك SecretRef
يحل security audit مراجع SecretRef المدعومة في وضع القراءة فقط للمسارات المستهدفة. إذا لم يتوفر SecretRef في مسار الأمر الحالي، يتابع التدقيق ويبلغ عن secretDiagnostics بدلاً من التعطل. لا يتجاوز --token و--password إلا مصادقة الفحص العميق لاستدعاء الأمر ذاك؛ ولا يعيدان كتابة الإعدادات أو تعيينات SecretRef.
عمليات الكبت
اقبل النتائج الدائمة المقصودة باستخدام security.audit.suppressions. تطابق كل عملية كبت قيمة checkId بدقة، ويمكن تضييقها باستخدام السلاسل الفرعية titleIncludes و/أو detailIncludes غير الحساسة لحالة الأحرف:
{ "security": { "audit": { "suppressions": [ { "checkId": "plugins.tools_reachable_permissive_policy", "detailIncludes": "Enabled extension plugins: gbrain", "reason": "trusted local operator plugin" } ] } }}تُزال النتائج المكبوتة من قائمتي summary وfindings النشطتين. يحتفظ إخراج JSON بها ضمن suppressedFindings لأغراض قابلية التدقيق. عند ضبط عمليات الكبت، يحتفظ الإخراج النشط أيضاً بنتيجة معلومات security.audit.suppressions.active غير قابلة للكبت حتى يتمكن القراء من معرفة أن التدقيق قد جرت تصفيته. تُصدر علامات الإعدادات الخطرة بواقع علامة واحدة لكل نتيجة، لذا فإن قبول علامة خطرة واحدة لا يخفي العلامات المفعّلة الأخرى التي تشترك في checkId config.insecure_or_dangerous_flags نفسه.
نظراً إلى أن عمليات الكبت قد تخفي مخاطر دائمة، تتطلب إضافتها أو إزالتها عبر أوامر الصدفة التي يشغّلها الوكيل موافقة exec، ما لم يكن exec يعمل بالفعل باستخدام security="full" وask="off" للأتمتة المحلية الموثوقة.
إخراج JSON
openclaw security audit --json | jq '.summary'openclaw security audit --deep --json | jq '.findings[] | select(.severity=="critical") | .checkId'مع --fix --json، يتضمن الإخراج إجراءات الإصلاح والتقرير النهائي معاً:
openclaw security audit --fix --json | jq '{fix: .fix.ok, summary: .report.summary}'ما الذي يغيّره --fix
يطبّق معالجات آمنة وحتمية:
- يحوّل قيم
groupPolicy="open"الشائعة إلىgroupPolicy="allowlist"(بما في ذلك متغيرات الحسابات في القنوات المدعومة) - عندما تتحول سياسة مجموعات WhatsApp إلى
allowlist، يملأgroupAllowFromمن ملفallowFromالمخزّن عندما تكون تلك القائمة موجودة ولا تعرّف الإعداداتallowFromبالفعل - يضبط
logging.redactSensitiveمن"off"إلى"tools" - يشدّد أذونات الحالة/الإعدادات والملفات الحساسة الشائعة (
credentials/*.jsonوauth-profiles.jsonوopenclaw-agent.sqliteوآثار الجلسات القديمة) - يشدّد أيضاً أذونات ملفات تضمين الإعدادات المشار إليها من
openclaw.json - يستخدم
chmodعلى مضيفي POSIX وعمليات إعادة ضبطicaclsعلى Windows
لا يقوم --fix بما يلي:
- تدوير الرموز المميزة/كلمات المرور/مفاتيح API
- تعطيل الأدوات (
gatewayوcronوexecوغيرها) - تغيير خيارات ربط Gateway أو مصادقته أو تعريضه للشبكة
- إزالة Plugins/Skills أو إعادة كتابتها