d36bb954d1
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
1.9 KiB
1.9 KiB
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 release(CVSS ≥ 7 立即出版)
安全設計重點
Crypto
- AES-256-GCM AEAD(v2 格式
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
- (本版本暫無已知安全 risk;Phase 1 ship 時補)
來源外掛安全沿革
- v2.6.4 H-4:加密 Slack/Discord/Telegram 密鑰
- v2.6.5 A-4:Spoke 明文 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。