安全,是真的做了
完整報告(繁中)請見原始碼中的 SECURITY_REPORT.md。以下為摘要。
- 🛡️ SSRF只允許 http(s)、封鎖內網/metadata IP,轉址與實際連線都再檢查一次(防 DNS rebinding)。
- 🗜️ Zip-slip / 路徑解壓縮拒絕 `..`、絕對路徑、符號連結與 zip bomb;檔名一律安全化。
- 🎞️ ffmpeg參數陣列、不經 shell;拒絕 URL/協定當輸入;濾鏡值白名單驗證。
- 🧾 輸出HTML 報告全面跳脫+CSP;CSV/XLSX 公式注入防護;匯出圖片預設移除 EXIF/GPS。
- 🔑 授權Ed25519 公鑰驗證,私鑰永不隨產品散布;誠實標示用戶端檢查仍可被修改。
- 📊 稽核pip-audit / npm audit:0 個已知漏洞;bandit、semgrep 全數處理;gitleaks 無外洩;388 個測試全數通過。
稽核結果
| pip-audit | 套件 .venv 136 個依賴、subtitle-studio 36 個、3 份鎖定檔:0 個已知漏洞 |
|---|---|
| npm audit | mockup-studio、invoice-pro、linkinbio-builder、_qa:0 個漏洞 |
| bandit | 初始 3 高 / 4 中 / 48 低 → 全數修正或逐行註明理由,最終 0 |
| semgrep | python / javascript / typescript / security-audit / secrets:13 → 5(皆為賣家私鑰檔,不在任何公開檔案或發行檔中) |
| gitleaks | 原始碼無外洩;發行壓縮檔掃描 0 筆 |
| pytest | 388 個測試全數通過(含安全測試) |
修正的問題(節錄)
- 舊版 Gradio 儀表板綁定 0.0.0.0 → 新面板預設 127.0.0.1,拒絕對外綁定
- 網頁產品把 HMAC 密鑰嵌在 JS(任何人都能產生授權碼)→ 改為 Ed25519 公鑰驗證
- Subtitle Studio:儲存型 XSS、CSRF / DNS rebinding、無 CSP、上傳未驗證 → 已全部修正
- Link-in-Bio:匯入的專案 JSON 可從 <style> 注入 CSS/HTML → 顏色與圖片來源白名單
- sys_tools:PowerShell 通知命令注入 → 參數化並正確跳脫
- Shell 時光機:未加鹽 SHA 雜湊祕密、殘留環境變數檔 → HMAC 金鑰、0600 權限
- Zip-slip、絕對路徑成員、zip bomb;批次改名格式字串注入
- 網頁工具 SSRF(含轉址與 DNS rebinding);ffmpeg 參數與協定注入
- CSV/XLSX 公式注入;HTML 報告跳脫與 CSP;匯出圖片預設移除 EXIF
- AI 模型下載固定 revision 並只用 safetensors;移除非商用 InsightFace 模型
誠實聲明
用戶端授權檢查(包括 Ed25519)仍可被有心人修改程式碼繞過;更強的保護需要線上啟用。