漏洞概述 标题: 通过设备路径黑名单绕过 工具中的 函数(使用 代替 ) 描述: 摘要: 工具的设备路径黑名单可以通过标准的 UNIX 路径遍历序列(例如 代替 , 代替 )或阻塞等待输入(如 )被轻易绕过。这会导致 Denial of Service (DoS),影响所有共享同一网关进程的用户。 细节: 函数在 中负责防止代理读取产生无限输出(如 , )或阻塞等待输入(如 )的设备文件。该函数仅使用 规范化输入路径,然后检查其是否在硬编码的黑名单中。 仅处理 前缀扩展,不规范化 (当前目录)或 (父目录)路径组件。因此, 和 等路径不会被正确识别为黑名单中的路径。 影响范围 影响: 拒绝服务 (DoS) —— 攻击者可以通过让代理进程读取无限输出设备文件来挂起代理进程。 影响方式: - CLI 模式: 用户的代理会话永久冻结,需要手动 终止。 - 网关模式 (Telegram/Discord/Slack): 消息处理线程块无限期挂起。重复利用可以耗尽线程池,导致所有用户的服务完全中断。 - Batch Runner: 单个恶意提示会永久挂起相应的 worker 线程。 受影响产品: - 生态系统: pip - 包名: - 受影响版本: - 已修复版本: 未提供 修复方案 修复建议: 使用 和 来规范化路径,而不是仅使用 。 具体修复: 在 中的 函数中,将 替换为 和 。 POC 代码 证据日志 弱点 CWE: CWE-22: 对路径名的限制不当(路径遍历) 发生情况 Permalink: https://github.com/NousResearch/hermes-agent/blob/main/tools/file_tools.py#L74-L90 描述: 易受攻击的 函数使用 而不是 进行路径规范化,允许路径遍历绕过设备黑名单。 Permalink: https://github.com/NousResearch/hermes-agent/blob/main/tools/file_tools.py#L82 描述: 使用 的具体行 —— 应该是 。 Permalink: https://github.com/NousResearch/hermes-agent/blob/main/tools/file_tools.py#L102-L118 描述: 同一文件中正确使用的 函数 —— 显示不一致的路径规范化应用。