Hermes Agent安全加固需系统实施五方面措施:启用容器权限限制(--security-opt no-new-privileges)、强制网络隔离(--network=none)、技能来源管控与扫描、输入过滤与命令审批、配置与密钥安全存储。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您正在部署或运行Hermes Agent,但担心其在生产环境中面临权限提升、代码注入、未授权网络访问等风险,则需系统性实施安全加固措施。以下是保障Hermes Agent安全的多种具体方法:
一、启用容器安全强化选项
通过Docker运行时参数强制限制容器权限,防止恶意进程获取额外特权,是基础且关键的加固手段。该机制在tools/environments/docker.py中默认启用,可有效阻断常见逃逸路径。
1、确认Docker容器启动时包含--security-opt no-new-privileges参数
2、检查tools/environments/docker.py中resource_args.append("--security-opt no-new-privileges")是否被注释或移除
3、若使用自定义Dockerfile,需在FROM指令后立即添加USER nonroot:nonroot声明
4、验证容器内进程实际运行用户:进入容器执行id -u,输出应为非零数值
二、强制网络隔离与端口最小化暴露
禁用不必要的网络连接可大幅缩小攻击面,尤其适用于仅需本地计算、无需外部通信的任务场景。默认策略已在tools/environments/docker.py中通过--network=none实现。
1、在任务配置文件(如environments/benchmarks/terminalbench_2/default.yaml)中显式设置network: none
2、如需有限网络能力,改用--network=bridge并配合-p仅映射必需端口,例如-p 30001:80
3、对敏感服务端口(如TLS邮件端口),确保backend.encryption.type="tls"已在对应技能配置中启用
4、禁用所有动态端口扫描行为,在终端环境管理模块中将随机端口范围锁定为30000-32767以缩短暴露窗口
三、实施技能级安全扫描与来源管控
第三方技能可能引入恶意逻辑或不安全依赖,Hermes Agent通过预安装扫描和运行时注册控制实现纵深防御。所有从技能中心安装的技能均触发_security_scan_skill函数校验。
1、仅允许从builtin或trusted源安装技能,禁止community源未经审核直接启用
2、手动触发扫描:执行hermes skills audit --force重新检查全部已安装技能
3、检查技能目录是否存在可疑文件:遍历skills/*/下所有.sh、.py文件,确认无os.system(、subprocess.call(等高危调用
4、将待审查技能临时移入quarantine/目录,防止其被tools/registry.py自动加载
四、配置输入过滤与命令执行审批
用户输入若未经净化即传入终端执行,极易引发shell注入或路径遍历。Hermes Agent提供多层防护:LLM层面的LLM_AUDIT_PROMPT模板检测、运行时的沙箱拦截、以及人工审批兜底机制。
1、启用SSH终端后端替代本地Shell后端,因SSH代理无法修改自身代码,天然规避注入风险
2、在~/.hermes/config.yaml中设置terminal.backend: ssh并配置有效密钥对
3、开启执行审批模式:将approval_required: true写入任务定义YAML文件
4、对所有含sudo关键字的命令,强制要求输入<strong><font color="green">sudo password must be entered interactively</font></strong>提示,禁止管道自动传递
五、强化配置文件与密钥存储安全
敏感配置若以明文形式存放于用户目录,可能被其他进程读取。Hermes Agent推荐使用操作系统原生凭据库集成方式,避免硬编码密钥。
1、将API密钥、密码等替换为命令式引用,例如在skills/email/himalaya/references/configuration.md中采用:backend.auth.cmd = "security find-generic-password -a user@example.com -s imap -w"
2、确认~/.hermes/目录权限为700(仅属主可读写执行),执行chmod 700 ~/.hermes
3、禁用config.yaml中的debug: true字段,防止日志泄露凭证上下文
4、定期审计~/.hermes/config.yaml中是否残留password:、token:等明文字段,发现即删除并改用凭据命令注入


















