Skip to content

BlockNexus v0.4.0

Choose a tag to compare

@live-ling live-ling released this 07 Oct 04:27
· 102 commits to main since this release

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