应禁用明文环境变量注入,启用白名单透传、内存隔离凭证、技能沙箱隔离及运行时扫描拦截五项措施,防范OpenClaw技能中敏感信息泄露风险。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
如果您在OpenClaw技能(Skills)中直接写入或引用
环境变量
来传递API密钥、密码等敏感信息,可能导致这些信息被日志记录、插件误读或远程调用意外暴露。以下是防范环境变量注入风险的具体操作路径:
一、禁用明文环境变量注入
OpenClaw默认会将系统级环境变量注入至技能运行上下文,若未加约束,任意Skill均可读取PATH、HOME甚至自定义的SECRET_KEY等变量,构成高危泄露面。必须切断非必要变量的自动继承机制。
1、编辑OpenClaw主配置文件config.yaml,定位skills.runtime.env字段。
2、将该字段值显式设为{}(空对象),禁用全部系统环境变量自动注入。
3、重启OpenClaw服务使配置生效。
二、启用白名单式环境变量透传
仅允许特定技能按需获取严格限定的环境变量,避免全局暴露。该方式通过显式声明实现最小权限控制。
1、在目标Skill目录下的skill.yaml中添加env_whitelist字段。
2、在该字段下以列表形式列出仅允许该Skill访问的变量名,例如:
["OPENCLAW_API_TOKEN", "STORAGE_PATH"]
。
3、确保skill.yaml文件保存后重新加载该Skill。
三、使用内存隔离型凭证注入
绕过文件与环境变量载体,改由OpenClaw Memory模块在运行时动态注入加密凭证,凭证生命周期绑定单次执行会话,不落盘、不透出进程环境。
1、在Memory中创建一个加密条目,键名为
,值为Base64编码后的密钥字符串。
OpenClaw
开源的自托管AI智能体助手,曾用名Clawdbot、Moltbot
下载
2、在Skill代码中调用
读取并即时解码。
3、禁止在任何日志输出、调试打印或错误堆栈中包含该返回值。
四、强制技能沙箱内变量隔离
利用容器化运行时(如Docker)为每个Skill分配独立的轻量沙箱,其内部环境变量空间与宿主机完全隔离,且默认为空,杜绝跨Skill污染可能。
1、在skills.runtime.container字段中启用docker:true配置。
2、为每个Skill指定专属Docker镜像或基础镜像标签,例如
。
3、在镜像构建阶段,仅通过ARG指令注入必需变量,并在RUN指令中立即unset清除。
五、启用运行时环境变量扫描与拦截
OpenClaw v2026.3.31起内置envguard模块,可实时检测技能启动过程中对敏感变量名的非法引用行为,并强制中断执行流程。
1、确认OpenClaw版本为v2026.3.31或更高,执行
验证。
2、在config.yaml中设置envguard.enabled: true,并在envguard.blocklist中添加
。
3、设置envguard.mode为
,启用全匹配阻断模式。
cred:github_apiself.memory.get("cred:github_api")alpine:3.20-slimopenclaw --version["API_KEY", "PASSWORD", "SECRET", "TOKEN"]strict