CVE-2026-33718OpenHands是一款用于AI驱动的开发软件。在1.5.0版本中,其`openhands/runtime/utils/git_handler.py`文件的`get_git_diff()`方法存在命令注入漏洞。该漏洞源于`/api/conversations/{conversation_id}/git/diff` API端点接收的`path`参数在未经任何清理的情况下被直接传递给shell命令执行环境。尽管用户通常被允许指示代理执行命令,但该漏洞允许经过身份验证的攻击者绕过正常渠道,在代理沙箱中执行任意命令,从而可能导致沙箱逃逸或敏感信息泄露。该问题已在1.5.0版本的后续提交中修复。
该漏洞位于OpenHands的Git处理逻辑中,具体文件为`openhands/runtime/utils/git_handler.py`的第134行。漏洞触发点为`get_git_diff()`方法,该方法旨在获取Git仓库的差异信息。当外部请求发送至`/api/conversations/{conversation_id}/git/diff`接口时,攻击者可以通过控制请求中的`path`参数来利用此漏洞。由于程序未对`path`参数进行严格的输入验证或过滤(如未使用`shlex.quote`),攻击者可以注入恶意的Shell元字符(如`;`, `|`, `&`等)。当该参数被拼接到系统命令中执行时(例如通过`subprocess`调用shell=True),注入的命令将连同系统命令一起被服务器执行。虽然执行环境被限制在agent沙箱内,但这允许攻击者绕过OpenHands的常规指令验证机制,直接操控底层操作系统,执行未经授权的文件读写、网络探测等操作。