CLI commands

امنیت

openclaw security

ابزارهای امنیتی: ممیزی به‌همراه اصلاحات امن اختیاری. مرتبط: امنیت.

bash
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 را به‌صورت بهترین تلاش و گردآورنده‌های ممیزی امنیتی متعلق به Plugin را اضافه می‌کند (فراخوان‌های داخلی صریح نیز، هنگامی که از قبل دامنهٔ زمان اجرای مناسبی دارند، می‌توانند استفاده از آن گردآورنده‌ها را انتخاب کنند).

اگر احراز هویت گذرواژه‌ای Gateway فقط هنگام راه‌اندازی ارائه شده است، همان مقدار را با --auth password --password <password> ارسال کنید تا ممیزی بتواند آن را با hooks.token مقایسه کند.

موارد بررسی‌شده

مدل پیام مستقیم/اعتماد

  • هنگامی هشدار می‌دهد که چند فرستندهٔ پیام مستقیم نشست اصلی را به‌اشتراک می‌گذارند و حالت امن پیام مستقیم را پیشنهاد می‌کند: session.dmScope="per-channel-peer" (یا per-account-channel-peer برای کانال‌های چندحسابی) برای صندوق‌های ورودی مشترک. این مقاوم‌سازی برای همکاری/صندوق ورودی مشترک است، نه جداسازی اپراتورهایی که متقابلاً به یکدیگر اعتماد ندارند؛ برای چنین حالتی، مرزهای اعتماد را با Gatewayهای جداگانه (یا کاربران/میزبان‌های جداگانهٔ سیستم‌عامل) تفکیک کنید.
  • هنگامی که پیکربندی احتمال ورود کاربران مشترک را نشان دهد (برای مثال خط‌مشی بازِ پیام مستقیم/گروه، مقصدهای گروهی پیکربندی‌شده یا قواعد فرستنده با نویسهٔ عام)، 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 فعال هستند

برای تعویض hooks.token ذخیره‌شده‌ای که مجدداً استفاده شده است، openclaw doctor --fix را اجرا کنید، سپس فرستنده‌های قلاب خارجی را برای استفاده از توکن جدید به‌روزرسانی کنید.

محیط ایزوله/ابزارها

  • هنگامی هشدار می‌دهد که تنظیمات Docker محیط ایزوله پیکربندی شده‌اند، اما حالت محیط ایزوله خاموش است.
  • هنگامی هشدار می‌دهد که gateway.nodes.commands.deny از ورودی‌های ناشناخته یا الگوگونهٔ بی‌اثر استفاده می‌کند (تطبیق فقط بر اساس نام دقیق فرمان Node است، نه پالایش متن پوسته).
  • هنگامی هشدار می‌دهد که gateway.nodes.commands.allow صراحتاً فرمان‌های خطرناک Node را فعال می‌کند.
  • هنگامی هشدار می‌دهد که tools.profile="minimal" سراسری توسط پروفایل‌های ابزار عامل بازنویسی می‌شود.
  • هنگامی هشدار می‌دهد که ابزارهای نوشتن/ویرایش غیرفعال هستند، اما exec همچنان بدون مرز محدودکنندهٔ سیستم فایلِ محیط ایزوله در دسترس است.
  • هنگامی هشدار می‌دهد که پیام‌های مستقیم یا گروه‌های باز، ابزارهای زمان اجرا/سیستم فایل را بدون محافظ‌های محیط ایزوله/فضای کاری در معرض دسترسی قرار می‌دهند.
  • هنگامی هشدار می‌دهد که ممکن است ابزارهای Pluginهای نصب‌شده تحت خط‌مشی ابزار سهل‌گیرانه قابل دسترسی باشند.

مرورگر محیط ایزوله

  • هنگامی هشدار می‌دهد که مرورگر محیط ایزوله بدون sandbox.browser.cdpSourceRange از شبکهٔ Docker با bridge استفاده می‌کند.
  • حالت‌های خطرناک شبکهٔ Docker محیط ایزوله، از جمله اتصال به فضای نام host و container:* را علامت‌گذاری می‌کند.
  • هنگامی هشدار می‌دهد که کانتینرهای Docker موجود برای مرورگر محیط ایزوله دارای برچسب‌های هش مفقود/قدیمی هستند (برای مثال کانتینرهای پیش از مهاجرت که openclaw.browserConfigEpoch را ندارند) و openclaw sandbox recreate --browser --all را پیشنهاد می‌کند.

شبکه/کشف

  • gateway.allowRealIpFallback=true را علامت‌گذاری می‌کند (در صورت پیکربندی نادرست پروکسی‌ها، خطر جعل سرآیند).
  • discovery.mdns.mode="full" را علامت‌گذاری می‌کند (نشت فراداده از طریق رکوردهای TXT مربوط به mDNS).
  • هنگامی هشدار می‌دهد که gateway.auth.mode="none"، APIهای HTTP مربوط به Gateway را بدون راز مشترک در دسترس باقی می‌گذارد (/tools/invoke به‌همراه هر نقطهٔ پایانی فعالِ /v1/*).

Pluginها/کانال‌ها

  • هنگامی هشدار می‌دهد که سوابق نصب Plugin/قلاب مبتنی بر 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 که به بزرگی و کوچکی حروف حساس نیستند، محدودتر کرد:

json
{  "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 را پنهان نمی‌کند.

ازآنجاکه سرکوب‌ها می‌توانند ریسک دائمی را پنهان کنند، افزودن یا حذف آن‌ها از طریق فرمان‌های پوسته‌ای که عامل اجرا می‌کند، به تأیید اجرا نیاز دارد؛ مگر اینکه اجرا از قبل برای خودکارسازی محلی مورداعتماد با security="full" و ask="off" در حال انجام باشد.

خروجی JSON

bash
openclaw security audit --json | jq '.summary'openclaw security audit --deep --json | jq '.findings[] | select(.severity=="critical") | .checkId'

با --fix --json، خروجی هم اقدامات اصلاحی و هم گزارش نهایی را شامل می‌شود:

bash
openclaw security audit --fix --json | jq '{fix: .fix.ok, summary: .report.summary}'

آنچه --fix تغییر می‌دهد

اصلاحات امن و قطعی را اعمال می‌کند:

  • groupPolicy="open"های رایج را به groupPolicy="allowlist" تغییر می‌دهد (از جمله گونه‌های حساب در کانال‌های پشتیبانی‌شده)
  • هنگامی که خط‌مشی گروه WhatsApp به allowlist تغییر می‌کند، در صورت وجود آن فهرست و تعریف‌نشدن allowFrom در پیکربندی، groupAllowFrom را از فایل ذخیره‌شدهٔ allowFrom مقداردهی اولیه می‌کند
  • logging.redactSensitive را از "off" به "tools" تنظیم می‌کند
  • مجوزهای وضعیت/پیکربندی و فایل‌های حساس رایج (credentials/*.json، auth-profiles.json، openclaw-agent.sqlite و آثار نشست قدیمی) را سخت‌گیرانه‌تر می‌کند
  • همچنین مجوزهای فایل‌های شامل‌شدهٔ پیکربندی را که از openclaw.json ارجاع داده شده‌اند، سخت‌گیرانه‌تر می‌کند
  • در میزبان‌های POSIX از chmod و در Windows از بازنشانی‌های icacls استفاده می‌کند

--fix موارد زیر را انجام نمی‌دهد:

  • توکن‌ها/گذرواژه‌ها/کلیدهای API را تعویض نمی‌کند
  • ابزارها (gateway، cron، exec و غیره) را غیرفعال نمی‌کند
  • گزینه‌های اتصال/احراز هویت/در معرض شبکه قرارگرفتن Gateway را تغییر نمی‌دهد
  • Pluginها/Skills را حذف یا بازنویسی نمی‌کند

مرتبط

Was this useful?
On this page

On this page