Repository navigation
BlockNexus v0.4.0
Minecraft 服务器管理面板:本地 Web 面板 + SSH 部署远程 Agent,token 加密通道,浏览器即开即用,面板无需公网地址。
⚠️ 升级须知:本版含协议与 Agent 行为变更,旧版 Agent 必须重装一次(面板设置页的 Agent 安装/更新按钮即可)。旧 Agent 无法靠自动更新自救——它在握手阶段就会被拒绝,因而发不出触发更新的上报。
安全(本版重点)
对面板与 Agent 做了一轮完整的安全审计(5 份报告,发现的问题全部处理),其中 6 个高危:
- Agent 解压逃逸:恶意压缩包里的符号链接/硬链接可逃出实例目录,而 Agent 以 root 运行 → root 任意读/写/截断。现在解压先进隔离目录,校验链接与体积后才启用;
tar参数注入:文件名以-开头会被当作 tar 的选项(如--checkpoint-action=exec=…)→ root 任意命令执行。已用--终止选项解析;- AI 接口地址的 SSRF:
baseUrl原先只校验协议,可被用来探内网/读云元数据,且响应体会回显到界面。现拒绝链路本地与云元数据地址; - SSH 不校验主机密钥 → 中间人可拿到 SSH 凭据并完全接管服务器。现改为 TOFU(首次记录、之后不一致即拒绝);
- 压缩炸弹 + 上传上限形同虚设:上传的 200MB 限制原先只在客户端自报 size 时检查,不带该字段即可绕过;解压无体积/条目数上限。现按真实写入字节与解压后实际体积判定;
- 面板默认免密 + 对外暴露 = 任何人可完全接管。现检测到该组合时在界面顶部显示持久告警(默认行为不变)。
其余修复:畸形请求体泄露内部堆栈、找回密码可被用来枚举管理员邮箱(响应差异构成预言机)、限流表可被唯一键洪水打爆内存、/tmp 固定文件名竞态导致的本地提权、无鉴权连接可耗尽 fd/内存、Agent token 响应未禁缓存、邮件正文未转义、以及三处「环境变量写 false 反而开启功能」的解析缺陷。
新功能
- 中英双语界面:全界面文案支持中英切换(右上角),后端错误按错误码本地化,语言选择记忆在本地;
- 统一错误码表:45 个错误码带中英文案与 HTTP 状态,前端单点渲染,脚本/curl 调用方也能拿到稳定的
code。
改进
- Agent 打包器支持内联第三方依赖:交付物仍是单文件(SSH 只传一个文件、支持
curl一行安装),目标机无需npm install; - 找回密码流程纳入 CI 端到端测试(此前长期无人执行);
- 基础安全响应头(禁止 iframe 嵌套、禁止 MIME 嗅探、跨站不带 Referer)。
修复
- Agent 安装时改用私有临时目录下载解压(原先在
/tmp用固定文件名); - 找回密码发信失败不再把 SMTP 原始报错回给未认证调用方;
- 面板会话表补上过期回收。
便携版
BlockNexus-v0.4.0-portable.zip:内置 Node 运行时、依赖与已构建前端,解压到任意目录双击 BlockNexus.exe 即用,数据在 data/ 目录内。
BlockNexus-shell-v0.4.0.zip:仅托盘外壳,需要本机已装 Node ≥ 18。
校验
BlockNexus-v0.4.0-portable.zip
A9F3DC591B67BC07DE9F30D80D6EAECA1E3E42D6BE210F7AA1C87878BE0B97E5
BlockNexus-shell-v0.4.0.zip
05F7424AED01E38BDEAA61387826AF004E763BB77434F37AEB57DC0962E45AB1