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 के विरुद्ध जाँच सके।

यह क्या जाँचता है

DM/विश्वास मॉडल

  • जब कई DM प्रेषक मुख्य सत्र साझा करते हैं, तो चेतावनी देता है और साझा इनबॉक्स के लिए सुरक्षित DM मोड की अनुशंसा करता है: session.dmScope="per-channel-peer" (या बहु-अकाउंट चैनलों के लिए per-account-channel-peer)। यह सहयोगी/साझा-इनबॉक्स सुदृढ़ीकरण है, परस्पर अविश्वसनीय ऑपरेटरों के लिए पृथक्करण नहीं; उसके लिए अलग-अलग Gateway (या अलग OS उपयोगकर्ताओं/होस्ट) के साथ विश्वास सीमाएँ विभाजित करें।
  • जब कॉन्फ़िगरेशन संभावित साझा-उपयोगकर्ता प्रवेश का संकेत देता है (उदाहरण के लिए, खुली DM/समूह नीति, कॉन्फ़िगर किए गए समूह लक्ष्य या वाइल्डकार्ड प्रेषक नियम), तब security.trust_model.multi_user_heuristic उत्सर्जित करता है—OpenClaw का डिफ़ॉल्ट विश्वास मॉडल व्यक्तिगत सहायक (एक ऑपरेटर) है, शत्रुतापूर्ण बहु-टेनेंट पृथक्करण नहीं। जानबूझकर किए गए साझा-उपयोगकर्ता सेटअप के लिए: सभी सत्रों को सैंडबॉक्स करें, फ़ाइल सिस्टम पहुँच को कार्यस्थान के स्कोप तक सीमित रखें और व्यक्तिगत/निजी पहचान या क्रेडेंशियल उस रनटाइम से दूर रखें।
  • जब छोटे मॉडल (<=300B पैरामीटर) सैंडबॉक्सिंग के बिना और वेब/ब्राउज़र टूल सक्षम करके उपयोग किए जाते हैं, तो चेतावनी देता है।

Webhook/हुक

स्टार्टअप एक गैर-घातक सुरक्षा चेतावनी लॉग करता है और ऑडिट सक्रिय Gateway साझा-सीक्रेट प्रमाणीकरण मानों (gateway.auth.token / OPENCLAW_GATEWAY_TOKEN, gateway.auth.password / OPENCLAW_GATEWAY_PASSWORD) के hooks.token पुनः उपयोग को चिह्नित करता है। यह निम्न स्थितियों में भी चेतावनी देता है:

  • hooks.token छोटा है
  • hooks.path="/"
  • hooks.defaultSessionKey सेट नहीं है
  • hooks.allowedAgentIds अप्रतिबंधित है
  • अनुरोध के sessionKey ओवरराइड सक्षम हैं
  • hooks.allowedSessionKeyPrefixes के बिना ओवरराइड सक्षम हैं

स्थायी रूप से सहेजे गए और पुनः उपयोग किए गए hooks.token को बदलने के लिए openclaw doctor --fix चलाएँ, फिर बाहरी हुक प्रेषकों को नए टोकन का उपयोग करने के लिए अपडेट करें।

सैंडबॉक्स/टूल

  • सैंडबॉक्स मोड बंद होने के बावजूद सैंडबॉक्स Docker सेटिंग कॉन्फ़िगर होने पर चेतावनी देता है।
  • जब gateway.nodes.denyCommands अप्रभावी पैटर्न-जैसी/अज्ञात प्रविष्टियों का उपयोग करता है, तो चेतावनी देता है (मिलान केवल सटीक Node कमांड नाम से होता है, शेल टेक्स्ट फ़िल्टरिंग से नहीं)।
  • जब gateway.nodes.allowCommands खतरनाक Node कमांड को स्पष्ट रूप से सक्षम करता है, तो चेतावनी देता है।
  • जब वैश्विक tools.profile="minimal" को एजेंट टूल प्रोफ़ाइल द्वारा ओवरराइड किया जाता है, तो चेतावनी देता है।
  • जब लिखने/संपादित करने वाले टूल अक्षम हैं, लेकिन किसी प्रतिबंधात्मक सैंडबॉक्स फ़ाइल सिस्टम सीमा के बिना exec अभी भी उपलब्ध है, तो चेतावनी देता है।
  • जब खुले DM या समूह सैंडबॉक्स/कार्यस्थान सुरक्षा उपायों के बिना रनटाइम/फ़ाइल सिस्टम टूल उजागर करते हैं, तो चेतावनी देता है।
  • जब इंस्टॉल किए गए Plugin टूल उदार टूल नीति के अंतर्गत पहुँच योग्य हो सकते हैं, तो चेतावनी देता है।

सैंडबॉक्स ब्राउज़र

  • जब सैंडबॉक्स ब्राउज़र sandbox.browser.cdpSourceRange के बिना Docker bridge नेटवर्क का उपयोग करता है, तो चेतावनी देता है।
  • host और container:* नेमस्पेस जॉइन सहित खतरनाक सैंडबॉक्स Docker नेटवर्क मोड को चिह्नित करता है।
  • जब मौजूदा सैंडबॉक्स ब्राउज़र Docker कंटेनरों में हैश लेबल अनुपस्थित/पुराने होते हैं (उदाहरण के लिए, माइग्रेशन-पूर्व कंटेनर जिनमें openclaw.browserConfigEpoch नहीं है), तो चेतावनी देता है और openclaw sandbox recreate --browser --all की अनुशंसा करता है।

नेटवर्क/खोज

  • gateway.allowRealIpFallback=true को चिह्नित करता है (यदि प्रॉक्सी गलत तरीके से कॉन्फ़िगर हैं, तो हेडर-स्पूफ़िंग का जोखिम)।
  • discovery.mdns.mode="full" को चिह्नित करता है (mDNS TXT रिकॉर्ड के माध्यम से मेटाडेटा लीक होना)।
  • जब gateway.auth.mode="none" साझा सीक्रेट के बिना Gateway HTTP API को पहुँच योग्य छोड़ता है (/tools/invoke और कोई भी सक्षम /v1/* एंडपॉइंट), तो चेतावनी देता है।

Plugin/चैनल

  • जब npm-आधारित Plugin/हुक इंस्टॉल रिकॉर्ड किसी संस्करण पर पिन नहीं होते, इंटीग्रिटी मेटाडेटा अनुपस्थित होता है या वे वर्तमान इंस्टॉल किए गए पैकेज संस्करणों से भिन्न होते हैं, तो चेतावनी देता है।
  • जब चैनल अनुमति-सूचियाँ स्थिर ID के बजाय परिवर्तनशील नामों/ईमेल/टैग पर निर्भर होती हैं, तो चेतावनी देता है (जहाँ लागू हो वहाँ 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 सूचना निष्कर्ष भी रखता है, ताकि पाठक जान सकें कि ऑडिट फ़िल्टर किया गया था। खतरनाक कॉन्फ़िगरेशन फ़्लैग प्रति निष्कर्ष एक फ़्लैग के रूप में उत्सर्जित होते हैं, इसलिए एक खतरनाक फ़्लैग को स्वीकार करने से समान config.insecure_or_dangerous_flags checkId साझा करने वाले अन्य सक्षम फ़्लैग नहीं छिपते।

क्योंकि दमन स्थायी जोखिम छिपा सकते हैं, एजेंट द्वारा चलाए गए शेल कमांड के माध्यम से उन्हें जोड़ने या हटाने के लिए exec अनुमोदन आवश्यक है, सिवाय इसके कि विश्वसनीय स्थानीय स्वचालन के लिए exec पहले से 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