GoClaw TTS配置SSRF漏洞CVE-2026-10583
GoClaw是基于Go语言开发、开源生产级 AI 智能体(Agent)网关框架,由OpenClaw项目Go语言重构而来,配套PostgreSQL数据库。
一、基本情况
GoClaw开源AI Agent平台提供多租户隔离和文本转语音功能,默认依赖 PostgreSQL,原生多租户数据隔离,内置 TTS 语音合成模块。

GoClaw支持多渠道对接、大模型接入,适用于私有部署AI客服、私人语音助手、企业内部智能机器人、多模型统一代理网关相关场景。
栋科技漏洞库关注到 GoClaw TTS 配置中存在 SSRF漏洞,该漏洞现在已经被追踪为CVE-2026-10583,漏洞的CVSS 3.1评分为4.7。
二、漏洞分析
CVE-2026-10583漏洞是存在于GoClaw相关版本的安全漏洞,源于 TTS 服务商接口基础配置未做校验引发服务端请求伪造(SSRF)。
该漏洞是存在于 GoClaw 的文本转语音(TTS)配置接口(POST /v1/tts/config)中的一处 URL 参数未校验漏洞。
相关版本 handleSave 函数调用 resolvedAPIBase() 获取用户输入 api_base URL,但未调用 validateProviderURL() 进行内部 IP 验证,
这就导致了拥有管理员权限的已认证用户(默认 / 开发单用户部署模式下任意用户均可利用)可写入恶意接口基础地址。
后续发起语音合成请求时会使用该恶意 URL,服务端使用原生 HTTP 客户端访问该配置地址,无任何网络访问限制触发 SSRF 漏洞。
具体来说,漏洞根源位于internal/http/tts_config.go中 TTSConfigHandler 的配置保存方法 handleSave。
调用 POST /v1/tts/config 接口时,
后端直接解析并持久化保存 OpenAI、ElevenLabs、MiniMax 等服务商自定义 api_base 配置,未做合规校验。
而在连通性测试接口 POST /v1/tts/test-connection(tts_test_connection.go 第 117 行)中,
程序会调用 validateProviderURL 校验函数,拦截 127.0.0.1、AWS 元数据地址 169.254.169.254 等内网私有地址。
保存配置的 handleSave 函数遗漏该校验逻辑,导致配置落地后,
在语音合成接口 POST /v1/tts/synthesize 调用时可绕过安全检测,触发漏洞。
外部攻击者可借此驱使服务器非法访问内网网段、本地服务、云服务器元数据地址等内部资源。
// internal/http/tts_config.go
func (h *TTSConfigHandler) handleSave(w http.ResponseWriter, r *http.Request) {
// ...
// Provider-specific non-secrets
if req.OpenAI != nil {
// [VULNERABILITY] `resolvedAPIBase()` does not run validateProviderURL() against internal IPs
if v := req.OpenAI.resolvedAPIBase(); v != "" && !set("tts.openai.api_base", v, "openai api_base") {
return
}
// ...
}
通过保存一个恶意内网端点,攻击者可确保后续每次调用该TTS服务提供商请求,都会指令 Go 后端向被攻击的地址发送 POST 请求。
三、POC概念验证
(一)前提条件
运行 PostgreSQL 的标准部署 Goclaw 框架。
可访问 /v1/tts/config 路由。在默认拓扑的标准部署环境中(GOCLAW_GATEWAY_TOKEN 依赖单用户模式),
所有未认证攻击者都拥有管理员权限,极大降低了攻击的前置条件门槛。
(二)复现步骤
1、使用简化的 compose 配置搭配 PostgreSQL 启动存在漏洞的环境:docker-compose.yml
2、使用提供的Python脚本注入恶意AWS实例元数据地址(http://169.254.169.254/latest/meta-data),
随后请求服务器触发语音合成:poc_tts_config_ssrf.py
3、附带提供了一个控制脚本,用于证明对应的连接检查方法可正确过滤注入的攻击载荷:control-test_connection_ssrf_blocked.py
4、执行 python3 poc_tts_config_ssrf.py,查看超时现象,证明已成功请求目标内网资源。
(三)证据日志
=== PoC: TTS Config SSRF (POST /v1/tts/config) ===
[1] Saving TTS config with api_base = http://169.254.169.254/latest/meta-data
Status: 200 | Body: {"ok":true}
[SUCCESS] Internal URL stored without validation!
[2] Verifying stored api_base...
Stored api_base: http://169.254.169.254/latest/meta-data
[SUCCESS] SSRF target URL persisted in system_configs!
[3] Triggering TTS synthesis to cause SSRF...
Status: 504 | Body: {"error": "..."}
[EXPLOITED-EXTERNAL] Server hung connecting to internal target (timeout confirms SSRF)
=== RESULT: POST /v1/tts/config accepts internal URLs without SSRF check ===
The api_base is later used by audio providers with a vanilla http.Client.
(四)影响说明
该服务端请求伪造(SSRF)漏洞可让外部攻击者以受信任服务的身份无限制对内网开展探测。
若业务部署在亚马逊云、谷歌云环境中,危害极高:
攻击者可借助http://169.254.169.254/获取云实例 IAM 权限令牌,进而提升权限控制整套云资源。
此外,攻击者还能操作未对外网开放的内网数据库、访问老旧微服务接口,或是通过盲扫端口对内部业务造成破坏性影响。
四、影响范围
GoClaw 3.11.0 ≤ GoClaw ≤ 3.11.3
五、修复建议
未知
六、参考链接
管理员已设置登录后刷新可查看