161k星标OpenCode被曝安全黑洞:实测远程代码执行漏洞全家桶

161k星标OpenCode被曝安全黑洞:实测远程代码执行漏洞全家桶

💡 原文中文,约3700字,阅读约需9分钟。
📝

内容提要

OpenCode虽获161k星标,但存在严重安全漏洞:默认连接云端导致隐私泄露,缓存机制低效,权限系统可被绕过,并有RCE漏洞。建议使用Docker隔离或改用Pi、Codex等替代品,避免冒险使用。

🔎

延伸解读

缓存与压缩机制的实际影响

文章指出OpenCode的缓存机制存在严重缺陷:系统提示词包含当前日期导致每轮对话缓存失效,本地模型预填充阶段可能占用GPU长达十分钟。此外,剪枝机制会丢弃超过四万token的上下文,压缩功能与剪枝机制相互冲突,导致用户难以维持对话连续性。这些设计问题不仅影响效率,还可能让用户误以为AI理解了已读文档,实际却已遗忘。

权限系统的绕过风险

OpenCode的权限系统被指形同虚设。命令过滤基于AST解析和正则匹配,但管道命令如`echo git status | bash`可轻松绕过,base64编码命令也能执行。文件访问控制仅覆盖特定命令列表,`python3 -c`等命令可绕过路径验证。权限持久化机制一旦允许某命令,后续所有同类命令自动放行,攻击者可能利用已授权的python3读取敏感文件如`~/.ssh/id_rsa`。

远程优先设计的隐私隐患

默认配置下OpenCode直连云端模型,且模型URL从models.dev动态下载,安装后按一个字母加回车即可让远程模型接入本地shell,无需用户配置。若第一条消息为空或模糊,模型可能自动扫描目录并上传敏感代码。WebFetch工具允许AI抓取网页,但bash命令无网络沙箱,存在执行`curl | bash`的风险。这些设计使本地开发环境面临隐私泄露和远程攻击的威胁。

RCE漏洞与官方修复态度

文章披露CVE-2026-22812漏洞:OpenCode默认开启HTTP服务,CORS全放行,POST接口可执行任意shell命令,GET接口可读取任意文件,任何网页都能利用该漏洞获取用户级权限。官方修复方案是默认禁用服务,但保留对opencode.ai的例外,允许官网远程控制机器。类似漏洞(如认证命令执行任意URL)的issue被stale bot关闭,引发对官方安全态度的质疑。

Q&A

OpenCode存在哪些严重的安全漏洞?

OpenCode存在多个严重安全漏洞,包括默认连接云端导致隐私泄露、缓存机制低效、权限系统可被绕过,以及远程代码执行漏洞(CVE-2026-22812)。

OpenCode的缓存机制有什么问题?

OpenCode的缓存机制存在多个问题:系统提示词包含当前日期导致每轮对话缓存失效;每轮SSE重新读取AGENTS.md文件;剪枝机制丢弃超过四万token的工具调用结果;压缩功能与剪枝机制冲突,导致上下文管理混乱。

OpenCode的权限系统如何被绕过?

OpenCode的权限系统可通过多种方式绕过,例如使用管道命令(echo git status | bash)、env命令、base64编码命令,以及利用不在FILES列表中的命令(如echo重定向到系统文件)。此外,权限持久化机制导致一旦允许某个命令,后续所有相同命令都会自动放行。

OpenCode默认连接云端模型会带来什么隐私风险?

OpenCode默认连接云端模型,用户本地shell和敏感代码可能被上传到远程服务器,导致隐私泄露。此外,WebFetch工具可能被AI利用来执行危险操作,如curl | bash。

CVE-2026-22812漏洞具体是什么?

CVE-2026-22812是OpenCode的一个远程代码执行漏洞,默认开启HTTP服务,CORS头完全放行,攻击者可通过POST接口执行任意shell命令,通过GET接口读取任意文件,从而获取用户系统的用户级权限。

使用本地模型是否能避免OpenCode的安全问题?

使用本地模型可以避免云端隐私问题,但本地模型较小,输出可信度难以判断,且仍存在其他安全风险。文章认为本地模型只是另一种慢性毒药,不能从根本上解决问题。

OpenCode有哪些替代品推荐?

文章推荐使用Pi(或OhMyPi)、Codex、Maki、Kilo等替代品,认为它们更稳定、设计更用心,内存占用更小。

如何安全使用OpenCode?

如果必须使用OpenCode,建议使用Docker或其他沙箱隔离,避免直接暴露在本地环境中。但文章更推荐直接改用Pi或Codex等替代品。

🏷️

标签

➡️

继续阅读