Skip to content

Security: BlockPilotDev/BlockPilotMC

Security

SECURITY.md

Security Policy

支援範圍

目前接受 1.0.x 版本的安全回報。較舊版本請先升級,再確認問題是否仍存在。

私下回報

請使用 GitHub 儲存庫的 Security → Report a vulnerability 建立私人 Security Advisory。

回報內容建議包含:

  • 受影響版本與作業系統
  • 問題位置、必要設定與重現步驟
  • 可觀察到的影響
  • 已嘗試的緩解方式
  • 不含真實密碼、API Key、JWT、世界存檔或個人資料的最小測試資料

請勿在公開 Issue 中提供可直接利用的細節。

部署安全邊界

BlockPilotMC 具備程序管理與檔案寫入能力。正式部署至少應做到:

  1. 使用長且唯一的管理員密碼。
  2. 不直接暴露於未受保護的公網。
  3. 使用 HTTPS、可信反向代理、VPN 或存取控制服務。
  4. 以專用低權限系統帳號執行面板與 Minecraft 程序。
  5. 限制 runtimeServer 與備份目錄權限。
  6. 定期更新 Node.js、Java 與 npm 相依套件。
  7. 保護 .env、systemd Credentials、容器 Secrets 與 GitHub Secrets。
  8. 定期驗證備份可還原,並保留異地副本。

已實作的防護

  • bcrypt 密碼雜湊與可撤銷登入工作階段
  • JWT 金鑰自動建立與平台安全保存
  • Origin/CORS 限制與 WebSocket 驗證
  • 登入失敗限制與稽核紀錄
  • 路徑穿越、符號連結逃逸、ZIP 路徑與 SSRF 防護
  • 文字檔大小限制、遠端下載限制及雜湊驗證
  • 基本瀏覽器安全標頭與 API 禁止快取

JWT 金鑰保存

BlockPilotMC 不會把 JWT 金鑰寫入 .env。第一次啟動會建立 64 Bytes 隨機金鑰,之後重複使用同一把金鑰。

Windows

優先使用目前 Windows 帳號的 DPAPI 加密保存。加密檔位於 runtime/security,控制台、網頁與一般設定匯出不顯示金鑰內容。

Linux

依序使用:

  1. systemd 注入的 $CREDENTIALS_DIRECTORY/jwt-secret
  2. Docker/Podman 掛載的 /run/secrets/blockpilot_jwt_secret
  3. systemd-creds 主機綁定加密 Credential
  4. runtime/security 內權限 0600 的本機私密檔案

將主機綁定的 Credential 複製到另一台主機後,若無法解密,BlockPilotMC 會建立新金鑰。既有登入權杖會失效,但帳號、伺服器與世界不受影響。

舊版 .env 若含 JWT_SECRET,首次啟動會先遷移至安全儲存,再移除明文項目。

There aren't any published security advisories