Files
2meet-data-optimizer/SECURITY.md
T
wpdev d36bb954d1 chore: initial snapshot of 2meet-data-optimizer v0.1.0
Baseline before backporting wp-data-optimizer v3.0.1-v3.4.6.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY
2026-07-31 05:06:36 +08:00

77 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Security Policy
## Supported versions
| Version | Supported |
|---|:-:|
| 0.1.x | ✅ |
> 來源外掛 `wp-data-optimizer v2.x` 仍接受安全修補,但新功能不再回 port。
---
## Reporting a vulnerability
請勿在 public GitHub issue 揭露安全問題。透過以下管道私下回報:
- Email: security@2meet.io
- PGP key: TBD(首次回報時索取)
我們承諾:
- 24h 內初步回應
- 7 天內提供修補時程
- 90 天內出 patch releaseCVSS ≥ 7 立即出版)
---
## 安全設計重點
### Crypto
- AES-256-GCM AEADv2 格式 `enc:v2:`
- v1 (AES-256-CBC `enc:v1:`) 向後相容讀取
- Auth tag 16B + tamper detection
- Key 衍生自 `AUTH_KEY` + `SECURE_AUTH_SALT`,每站獨一
### SQL injection
- 100% `$wpdb->prepare()`,含動態 IN 子句用 `array_fill('%d')` 動態佔位符
- 欄位名走 `sanitize_key()`
- DROP TABLE 前白名單 + prefix 雙重驗證
### Authorization
- Capability 檢查:`manage_options`admin tab/ `edit_posts`(部分 REST
- Nonce 驗證所有 AJAX + 表單
### Output / Input
- 輸出:`esc_html()` / `esc_attr()` / `esc_url()`
- 輸入:`sanitize_text_field()` / `absint()` / `wp_unslash()`
- Unserialize`WPDO_Safe_Unserialize::run()``['allowed_classes' => false]`
### File upload
- 不接受 file upload。
### Rate limiting
- REST endpoints 採 transient-based limiter(見 `class-tmdo-rest-api.php`
---
## 已知 Risk
- (本版本暫無已知安全 riskPhase 1 ship 時補)
---
## 來源外掛安全沿革
- v2.6.4 H-4:加密 Slack/Discord/Telegram 密鑰
- v2.6.5 A-4Spoke 明文 JWT 持久化完全移除
- v2.13.3 audit 7/7 finding 全清零(M-AUTH-1 / M-LOGIC-1 / L-AUTH-1 / L-CFG-1 / L-DESER-1 / L-SSRF-1 / L-CRYPTO-1
- v2.15.0 AES-256-CBC → AES-256-GCM AEAD 升級
詳見 `~/.claude/plans/wp-data-optimizer-2meet-data-optimizer-zesty-liskov.md` § 1.1。