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 แบบธรรมดาจะอยู่บนเส้นทาง config/ระบบไฟล์/อ่านอย่างเดียวแบบเย็น โดยค่าเริ่มต้นจะไม่ค้นหาตัวรวบรวมความปลอดภัยของ runtime Plugin ดังนั้นการตรวจสอบตามปกติจะไม่โหลด runtime ของ Plugin ที่ติดตั้งไว้ทุกตัว ใช้ --deep เพื่อรวมการ probe Gateway แบบสดตามความพยายามที่ดีที่สุดและตัวรวบรวม security audit ที่ Plugin เป็นเจ้าของ ผู้เรียกภายในแบบชัดเจนอาจเลือกใช้ตัวรวบรวมที่ Plugin เป็นเจ้าของเหล่านั้นได้ด้วย เมื่อมีขอบเขต runtime ที่เหมาะสมอยู่แล้ว
การตรวจสอบจะเตือนเมื่อผู้ส่ง DM หลายรายแชร์ session หลัก และแนะนำ โหมด DM ปลอดภัย: session.dmScope="per-channel-peer" (หรือ per-account-channel-peer สำหรับช่องทางหลายบัญชี) สำหรับกล่องข้อความเข้าที่แชร์กัน
สิ่งนี้มีไว้สำหรับการเพิ่มความแข็งแกร่งให้กล่องข้อความเข้าที่ทำงานร่วมกัน/แชร์กัน Gateway เดียวที่แชร์โดยผู้ปฏิบัติการที่ไม่ไว้วางใจกันหรือเป็นฝ่ายตรงข้ามกันไม่ใช่การตั้งค่าที่แนะนำ ให้แยกขอบเขตความไว้วางใจด้วย gateway แยกกัน (หรือผู้ใช้/โฮสต์ OS แยกกัน)
นอกจากนี้ยังปล่อย security.trust_model.multi_user_heuristic เมื่อ config บ่งชี้ว่ามี ingress จากผู้ใช้ที่แชร์กันได้สูง (เช่น นโยบาย DM/กลุ่มแบบเปิด, เป้าหมายกลุ่มที่กำหนดค่าไว้ หรือกฎผู้ส่งแบบ wildcard) และเตือนคุณว่า OpenClaw เป็นโมเดลความไว้วางใจแบบผู้ช่วยส่วนบุคคลโดยค่าเริ่มต้น
สำหรับการตั้งค่าแบบผู้ใช้ร่วมกันโดยเจตนา คำแนะนำจากการตรวจสอบคือให้ sandbox ทุก session, จำกัดการเข้าถึงระบบไฟล์ให้อยู่ในขอบเขต workspace และอย่าเก็บตัวตนหรือข้อมูลรับรองส่วนบุคคล/ส่วนตัวไว้ใน runtime นั้น
นอกจากนี้ยังเตือนเมื่อใช้โมเดลขนาดเล็ก (<=300B) โดยไม่มี sandboxing และเปิดใช้งานเครื่องมือ web/browser
สำหรับ ingress ของ Webhook จะเตือนเมื่อ hooks.token ใช้ token เดียวกับ Gateway, เมื่อ hooks.token สั้น, เมื่อ hooks.path="/", เมื่อไม่ได้ตั้งค่า hooks.defaultSessionKey, เมื่อ hooks.allowedAgentIds ไม่ถูกจำกัด, เมื่อเปิดใช้การ override sessionKey ของ request และเมื่อเปิดใช้การ override โดยไม่มี hooks.allowedSessionKeyPrefixes
นอกจากนี้ยังเตือนเมื่อกำหนดค่า Docker ของ sandbox ไว้ขณะที่โหมด sandbox ปิดอยู่, เมื่อ gateway.nodes.denyCommands ใช้รายการที่ไม่มีผลแบบคล้าย pattern/ไม่รู้จัก (จับคู่เฉพาะชื่อคำสั่ง node แบบตรงตัวเท่านั้น ไม่ใช่การกรองข้อความ shell), เมื่อ gateway.nodes.allowCommands เปิดใช้คำสั่ง node ที่อันตรายอย่างชัดเจน, เมื่อ global tools.profile="minimal" ถูก override โดยโปรไฟล์เครื่องมือของ agent, เมื่อกลุ่มแบบเปิดเผยเครื่องมือ runtime/ระบบไฟล์โดยไม่มี guard ของ sandbox/workspace และเมื่อเครื่องมือของ Plugin ที่ติดตั้งไว้อาจถูกเข้าถึงได้ภายใต้นโยบายเครื่องมือที่ผ่อนปรน
นอกจากนี้ยังทำเครื่องหมาย gateway.allowRealIpFallback=true (ความเสี่ยงการปลอมแปลง header หาก proxy กำหนดค่าผิด) และ discovery.mdns.mode="full" (การรั่วไหลของ metadata ผ่านระเบียน mDNS TXT)
นอกจากนี้ยังเตือนเมื่อ browser ของ sandbox ใช้เครือข่าย Docker bridge โดยไม่มี sandbox.browser.cdpSourceRange
นอกจากนี้ยังทำเครื่องหมายโหมดเครือข่าย Docker ของ sandbox ที่อันตราย (รวมถึง host และการ join namespace แบบ container:*)
นอกจากนี้ยังเตือนเมื่อ container Docker ของ browser sandbox ที่มีอยู่มี label hash ที่หายไป/ล้าสมัย (เช่น container ก่อนการ migration ที่ไม่มี openclaw.browserConfigEpoch) และแนะนำ openclaw sandbox recreate --browser --all
นอกจากนี้ยังเตือนเมื่อระเบียนการติดตั้ง Plugin/hook แบบ npm ไม่ถูก pin, ไม่มี metadata ความถูกต้องสมบูรณ์ หรือคลาดเคลื่อนจากเวอร์ชัน package ที่ติดตั้งอยู่ในปัจจุบัน
จะเตือนเมื่อ allowlist ของช่องทางพึ่งพาชื่อ/อีเมล/tag ที่เปลี่ยนแปลงได้แทน ID ที่เสถียร (Discord, Slack, Google Chat, Microsoft Teams, Mattermost, ขอบเขต IRC ที่เกี่ยวข้อง)
จะเตือนเมื่อ gateway.auth.mode="none" ทำให้ HTTP API ของ Gateway เข้าถึงได้โดยไม่มี shared secret (/tools/invoke รวมถึง endpoint /v1/* ใด ๆ ที่เปิดใช้งาน)
การตั้งค่าที่ขึ้นต้นด้วย dangerous/dangerously คือ override แบบ break-glass ของผู้ปฏิบัติการโดยชัดเจน การเปิดใช้หนึ่งรายการไม่ถือเป็นรายงานช่องโหว่ด้านความปลอดภัยโดยตัวมันเอง
สำหรับรายการพารามิเตอร์อันตรายฉบับสมบูรณ์ ดูหัวข้อ "สรุป flag ที่ไม่ปลอดภัยหรืออันตราย" ใน ความปลอดภัย
พฤติกรรม SecretRef:
security auditresolve SecretRef ที่รองรับในโหมดอ่านอย่างเดียวสำหรับเส้นทางเป้าหมาย- หาก SecretRef ไม่พร้อมใช้งานในเส้นทางคำสั่งปัจจุบัน การตรวจสอบจะดำเนินต่อและรายงาน
secretDiagnostics(แทนที่จะ crash) --tokenและ--passwordoverride เฉพาะ auth ของ deep-probe สำหรับการเรียกใช้คำสั่งนั้นเท่านั้น ไม่ได้เขียน config หรือการ mapping 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"(รวมถึงตัวแปรตามบัญชีในช่องทางที่รองรับ) - เมื่อ policy กลุ่มของ WhatsApp เปลี่ยนเป็น
allowlistจะ seedgroupAllowFromจาก ไฟล์allowFromที่เก็บไว้ เมื่อมีรายการนั้นอยู่และ config ยังไม่ได้ กำหนดallowFrom - ตั้งค่า
logging.redactSensitiveจาก"off"เป็น"tools" - ทำให้ permissions สำหรับ state/config และไฟล์สำคัญที่มักมีข้อมูลอ่อนไหวเข้มงวดขึ้น
(
credentials/*.json,auth-profiles.json,sessions.json, session*.jsonl) - ทำให้ไฟล์ include ของ config ที่อ้างอิงจาก
openclaw.jsonเข้มงวดขึ้นด้วย - ใช้
chmodบนโฮสต์ POSIX และ reset ด้วยicaclsบน Windows
--fix จะไม่:
- หมุนเวียน tokens/passwords/API keys
- ปิดใช้งานเครื่องมือ (
gateway,cron,execฯลฯ) - เปลี่ยนตัวเลือกการ bind/auth/network exposure ของ gateway
- ลบหรือเขียน Plugin/Skills ใหม่