Files
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

1.9 KiB
Raw Permalink Blame History

Security Policy

Supported versions

Version Supported
0.1.x

來源外掛 wp-data-optimizer v2.x 仍接受安全修補,但新功能不再回 port。


Reporting a vulnerability

請勿在 public GitHub issue 揭露安全問題。透過以下管道私下回報:

我們承諾:

  • 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_optionsadmin tab/ edit_posts(部分 REST
  • Nonce 驗證所有 AJAX + 表單

Output / Input

  • 輸出:esc_html() / esc_attr() / esc_url()
  • 輸入:sanitize_text_field() / absint() / wp_unslash()
  • UnserializeWPDO_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。