From a6c3c87ea926bc87771f0da58ea01cd7e761be86 Mon Sep 17 00:00:00 2001 From: Council Date: Wed, 15 Apr 2026 12:21:29 +0800 Subject: [PATCH] council(draft): SecurityEngineer - create plan.md with security risk assessment Co-Authored-By: Claude Opus 4.6 --- plan.md | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 plan.md diff --git a/plan.md b/plan.md new file mode 100644 index 000000000..e9b6176a8 --- /dev/null +++ b/plan.md @@ -0,0 +1,118 @@ +# Council Plan — SecurityEngineer Round 1 + +## 角色职责 +SecurityEngineer — 负责安全风险评估,尤其关注 debug 代码注入、日志文件写入权限、config 泄露等风险点。 + +## 当前状态 + +### Git 状态(已确认) +- Worktree 分支:`council/SecurityEngineer`,HEAD = `4747d92` +- **Git status 已确认干净**:所有 modified 文件(Common.php, Plugins.php, common.php, AdminPowerService.php, PluginsService.php, shopxo.php, core.php)均已通过 `git checkout HEAD --` 恢复至 HEAD 状态 +- 仅 `.claude/` 目录为 untracked(框架自身目录) +- `admin.php` / `public/admin.php` 已恢复 +- `adminwatekc.php`, `debug_power.php`, `test_admin.php`, `public/adminwatekc.php`, `public/test_admin.php` 已不存在(已清理) +- `app/plugins/vr_ticket/` 不存在于 worktree 中(untracked,未被追踪) + +### 当前文件安全状态 + +| 文件 | 风险点 | 当前状态 | +|------|--------|----------| +| `app/common.php` | `is_develop: true` / debug 日志 | ✅ 已恢复,`is_develop: false` | +| `app/admin/controller/Plugins.php` | 权限检查逻辑被修改 | ✅ 已恢复 | +| `config/shopxo.php` | `is_develop: false` | ✅ 已恢复 | +| `public/core.php` | 未知修改 | ✅ 已恢复 | +| `app/service/AdminPowerService.php` | 未知修改 | ✅ 已恢复 | +| `app/service/PluginsService.php` | 未知修改 | ✅ 已恢复 | +| `adminwatekc.php` 等调试脚本 | 潜在后台入口暴露 | ✅ 已删除 | +| `app/plugins/vr_ticket/` | untracked 插件目录 | ⚠️ 未存在于 worktree(需从 Docker volume 重新获取) | + +--- + +## SecurityEngineer 评估 + +### Plan A — Git 清理(推荐) +``` +git checkout HEAD -- [files] +``` + +**优势:** +- 原子性恢复,无残留风险 +- `is_develop: false` 恢复生产配置 +- 权限检查逻辑恢复原始状态 +- 调试文件(`adminwatekc.php` 等)已确认不存在 + +**安全确认(基于当前 git status):** +1. ✅ `is_develop: false` — 不泄露 stack trace / 配置信息 +2. ✅ 无 `file_put_contents('/tmp/...')` debug 日志残留 +3. ✅ 权限检查逻辑已恢复原始代码 +4. ✅ 调试脚本已清理 +5. ✅ `admin.php` / `public/admin.php` 已恢复原始入口 + +**潜在残留风险:** +- `app/plugins/vr_ticket/` 插件目录不在 worktree 中(untracked 且不存在),需要从 Docker 重新获取 +- `/tmp/` 目录可能残留旧的 debug 日志文件(`isPower_debug.log`, `plugins_debug.log`, `aipower_debug.log`),但不暴露于 Web 路径 + +**结论:Plan A 已基本完成,当前状态安全。** + +### Plan B — 重新 clone +``` +git clone → 重新应用 → docker start +``` + +**安全劣势:** +- 重新 clone 会丢失当前已确认的安全状态 +- 重新应用 Goods.php 那1行修改时可能引入新的人为错误 +- 多一步操作 = 多一个出错机会 +- vr_ticket 插件目录仍需从 Docker volume 获取 + +**结论:Plan B 在安全层面无额外收益,反而增加操作风险。** + +### vr_ticket 插件风险评估 +- 该插件已在 MySQL DB 中启用(`is_enable=1`),但插件代码不在 worktree +- 插件代码如需重新部署,需要从 Docker volume 提取 +- **风险**:如直接删除 Docker volume 中的插件目录但 DB 仍启用,可能导致 ShopXO 运行错误 + +--- + +## 待完成任务 + +- [x] 确认 debug 代码已清理(✅ 已确认 git status 干净) +- [ ] **高优先级**:从 Docker volume 提取 vr_ticket 插件代码并纳入 version control 或明确记录其来源 +- [ ] **建议**:清理 `/tmp/` 下的 debug 日志(`isPower_debug.log`, `plugins_debug.log`, `aipower_debug.log`) +- [ ] **建议**:Docker 重启后验证 ShopXO 正常运行(vr_ticket 插件 DB 启用但代码缺失状态) + +--- + +## 依赖关系 + +| 任务 | 依赖 | +|------|------| +| vr_ticket 插件代码提取 | 需要 DevOps 从 Docker volume 获取 | +| Docker 重启验证 | DevOps 执行 | +| Goods.php 修改确认 | BackendArchitect 确认 | + +--- + +## 阶段 + +- **Phase 1: Draft** — 完成 ✅(本 round 完成风险评估) +- **Phase 2: Review** — 待其他 member review +- **Phase 3: Finalize** — 待执行 vr_ticket 提取 + Docker 重启验证 + +--- + +## 建议行动 + +1. **立即确认当前状态安全** — Plan A 已完成,无需额外清理 +2. **提取 vr_ticket 插件代码** — 从 Docker volume 提取到 worktree 或其他安全位置 +3. **清理残留日志** — `rm -f /tmp/isPower_debug.log /tmp/plugins_debug.log /tmp/aipower_debug.log` +4. **Docker 重启** — `docker stop shopxo-web shopxo-php && docker start shopxo-web shopxo-php` +5. **验证 ShopXO 运行** — 检查 vr_ticket 插件在无代码状态下的行为 + +--- + +## Claim 状态 + +- `[Done: SecurityEngineer]` — 安全风险评估完成 +- `[Claimed: DevOps]` — Docker 重启操作(待分配) +- `[Claimed: DevOps]` — vr_ticket 插件提取(待分配)