CLI commands

الأمان

openclaw security

أدوات الأمان (التدقيق + إصلاحات اختيارية).

ذات صلة:

التدقيق

openclaw security audit
openclaw security audit --deep
openclaw security audit --deep --password <password>
openclaw security audit --deep --token <token>
openclaw security audit --fix
openclaw security audit --json

يبقى الأمر security audit العادي على مسار الإعدادات/نظام الملفات/القراءة فقط البارد. ولا يكتشف مجمّعات أمان تشغيل Plugins افتراضيًا، لذلك لا تحمّل عمليات التدقيق الروتينية كل بيئة تشغيل Plugin مثبّت. استخدم --deep لتضمين فحوصات Gateway الحية بأفضل جهد ومجمّعات تدقيق الأمان المملوكة للـ Plugin؛ يمكن للمتصلين الداخليين الصريحين أيضًا اختيار هذه المجمّعات المملوكة للـ Plugin عندما يكون لديهم بالفعل نطاق تشغيل مناسب.

يحذّر التدقيق عندما يتشارك عدة مرسلين للرسائل المباشرة الجلسة الرئيسية، ويوصي بـ وضع الرسائل المباشرة الآمن: session.dmScope="per-channel-peer" (أو per-account-channel-peer للقنوات متعددة الحسابات) لصناديق الوارد المشتركة. هذا مخصص لتقوية صناديق الوارد التعاونية/المشتركة. لا يُوصى بإعداد Gateway واحد مشترك بين مشغلين غير موثوقين متبادلين/متخاصمين؛ افصل حدود الثقة باستخدام gateways منفصلة (أو مستخدمي نظام تشغيل/مضيفين منفصلين). ويصدر أيضًا security.trust_model.multi_user_heuristic عندما تشير الإعدادات إلى دخول محتمل لمستخدمين مشتركين (مثل سياسة رسائل مباشرة/مجموعات مفتوحة، أو أهداف مجموعات مضبوطة، أو قواعد مرسلين بأحرف بدل)، ويذكّرك بأن OpenClaw يستخدم نموذج ثقة مساعد شخصي افتراضيًا. بالنسبة للإعدادات المقصودة لمستخدمين مشتركين، تتمثل إرشادات التدقيق في عزل كل الجلسات، وإبقاء وصول نظام الملفات محدودًا بمساحة العمل، وإبعاد الهويات أو بيانات الاعتماد الشخصية/الخاصة عن بيئة التشغيل تلك. كما يحذّر عندما تُستخدم النماذج الصغيرة (<=300B) دون عزل ومع تمكين أدوات الويب/المتصفح. بالنسبة لدخول Webhook، يحذّر عندما يعيد hooks.token استخدام رمز Gateway، أو عندما يكون hooks.token قصيرًا، أو عندما يكون hooks.path="/"، أو عندما لا يكون hooks.defaultSessionKey معيّنًا، أو عندما يكون hooks.allowedAgentIds غير مقيّد، أو عندما تكون تجاوزات sessionKey في الطلب مفعّلة، أو عندما تكون التجاوزات مفعّلة دون hooks.allowedSessionKeyPrefixes. كما يحذّر عندما تكون إعدادات Docker الخاصة بالعزل مضبوطة بينما يكون وضع العزل متوقفًا، أو عندما يستخدم gateway.nodes.denyCommands إدخالات شبيهة بالأنماط/غير معروفة وغير فعالة (مطابقة اسم أمر Node بدقة فقط، وليس ترشيح نص الصدفة)، أو عندما يفعّل gateway.nodes.allowCommands أوامر Node خطرة صراحةً، أو عندما تتجاوز ملفات تعريف أدوات الوكلاء الإعداد العام tools.profile="minimal"، أو عندما تكشف المجموعات المفتوحة أدوات التشغيل/نظام الملفات دون حواجز عزل/مساحة عمل، أو عندما قد تكون أدوات Plugin المثبّتة قابلة للوصول ضمن سياسة أدوات متساهلة. كما يعلّم gateway.allowRealIpFallback=true (خطر انتحال الرؤوس إذا كانت الوكلاء مضبوطة خطأً) وdiscovery.mdns.mode="full" (تسرب بيانات وصفية عبر سجلات mDNS TXT). كما يحذّر عندما يستخدم متصفح العزل شبكة Docker bridge دون sandbox.browser.cdpSourceRange. كما يعلّم أوضاع شبكة Docker الخطرة للعزل (بما في ذلك host والانضمام إلى مساحات الأسماء container:*). كما يحذّر عندما تحتوي حاويات Docker الحالية لمتصفح العزل على تسميات تجزئة مفقودة/قديمة (مثل حاويات ما قبل الترحيل التي تفتقد openclaw.browserConfigEpoch) ويوصي بـ openclaw sandbox recreate --browser --all. كما يحذّر عندما تكون سجلات تثبيت Plugin/الخطافات المستندة إلى npm غير مثبّتة الإصدار، أو تفتقد بيانات تعريف السلامة، أو تنحرف عن إصدارات الحزم المثبّتة حاليًا. يحذّر عندما تعتمد قوائم السماح للقنوات على أسماء/رسائل بريد إلكتروني/وسوم قابلة للتغيير بدلًا من معرّفات مستقرة (نطاقات Discord وSlack وGoogle Chat وMicrosoft Teams وMattermost وIRC عند الانطباق). يحذّر عندما يترك gateway.auth.mode="none" واجهات HTTP API الخاصة بـ Gateway قابلة للوصول دون سر مشترك (/tools/invoke بالإضافة إلى أي نقطة نهاية /v1/* مفعّلة). الإعدادات المسبوقة بـ dangerous/dangerously هي تجاوزات مشغل صريحة لحالات كسر الزجاج؛ وتمكين أحدها لا يُعد، بحد ذاته، تقرير ثغرة أمنية. للاطلاع على الجرد الكامل للمعلمات الخطرة، راجع قسم "ملخص العلامات غير الآمنة أو الخطرة" في الأمان.

سلوك SecretRef:

  • يحل security audit مراجع SecretRefs المدعومة في وضع القراءة فقط لمساراته المستهدفة.
  • إذا كان SecretRef غير متاح في مسار الأمر الحالي، يستمر التدقيق ويبلّغ عن secretDiagnostics (بدلًا من الانهيار).
  • لا يتجاوز --token و--password مصادقة الفحص العميق إلا لاستدعاء ذلك الأمر؛ ولا يعيدان كتابة الإعدادات أو تعيينات SecretRef.

مخرجات JSON

استخدم --json لفحوصات CI/السياسات:

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

يطبّق --fix إصلاحات آمنة وحتمية:

  • يبدّل groupPolicy="open" الشائع إلى groupPolicy="allowlist" (بما في ذلك متغيرات الحساب في القنوات المدعومة)
  • عندما تنقلب سياسة مجموعات WhatsApp إلى allowlist، يملأ groupAllowFrom من ملف allowFrom المخزّن عندما تكون تلك القائمة موجودة ولا تكون الإعدادات قد عرّفت allowFrom بالفعل
  • يعيّن logging.redactSensitive من "off" إلى "tools"
  • يشدّد الأذونات لملفات الحالة/الإعدادات والملفات الحساسة الشائعة (credentials/*.json، وauth-profiles.json، وsessions.json، وملفات جلسات *.jsonl)
  • يشدّد أيضًا ملفات تضمين الإعدادات المشار إليها من openclaw.json
  • يستخدم chmod على مضيفات POSIX وإعادات ضبط icacls على Windows

لا يقوم --fix بما يلي:

  • تدوير الرموز/كلمات المرور/مفاتيح API
  • تعطيل الأدوات (gateway، وcron، وexec، وما إلى ذلك)
  • تغيير خيارات ربط gateway/المصادقة/التعرض الشبكي
  • إزالة Plugins/Skills أو إعادة كتابتها

ذات صلة