目前接受 1.0.x 版本的安全回報。較舊版本請先升級,再確認問題是否仍存在。
請使用 GitHub 儲存庫的 Security → Report a vulnerability 建立私人 Security Advisory。
回報內容建議包含:
- 受影響版本與作業系統
- 問題位置、必要設定與重現步驟
- 可觀察到的影響
- 已嘗試的緩解方式
- 不含真實密碼、API Key、JWT、世界存檔或個人資料的最小測試資料
請勿在公開 Issue 中提供可直接利用的細節。
BlockPilotMC 具備程序管理與檔案寫入能力。正式部署至少應做到:
- 使用長且唯一的管理員密碼。
- 不直接暴露於未受保護的公網。
- 使用 HTTPS、可信反向代理、VPN 或存取控制服務。
- 以專用低權限系統帳號執行面板與 Minecraft 程序。
- 限制
runtime、Server與備份目錄權限。 - 定期更新 Node.js、Java 與 npm 相依套件。
- 保護
.env、systemd Credentials、容器 Secrets 與 GitHub Secrets。 - 定期驗證備份可還原,並保留異地副本。
- bcrypt 密碼雜湊與可撤銷登入工作階段
- JWT 金鑰自動建立與平台安全保存
- Origin/CORS 限制與 WebSocket 驗證
- 登入失敗限制與稽核紀錄
- 路徑穿越、符號連結逃逸、ZIP 路徑與 SSRF 防護
- 文字檔大小限制、遠端下載限制及雜湊驗證
- 基本瀏覽器安全標頭與 API 禁止快取
BlockPilotMC 不會把 JWT 金鑰寫入 .env。第一次啟動會建立 64 Bytes 隨機金鑰,之後重複使用同一把金鑰。
優先使用目前 Windows 帳號的 DPAPI 加密保存。加密檔位於 runtime/security,控制台、網頁與一般設定匯出不顯示金鑰內容。
依序使用:
- systemd 注入的
$CREDENTIALS_DIRECTORY/jwt-secret - Docker/Podman 掛載的
/run/secrets/blockpilot_jwt_secret systemd-creds主機綁定加密 Credentialruntime/security內權限0600的本機私密檔案
將主機綁定的 Credential 複製到另一台主機後,若無法解密,BlockPilotMC 會建立新金鑰。既有登入權杖會失效,但帳號、伺服器與世界不受影響。
舊版 .env 若含 JWT_SECRET,首次啟動會先遷移至安全儲存,再移除明文項目。