Files
Nexus/docs/reports/step-0-infrastructure/ecc-security-report.md
T
Your Name 3ecd3d75d4 docs: reports + research + team roster + tech-stack evaluation
Add implementation progress reports, review reports (CTO/quality/deploy),
session log, signoff table, team roster, collaboration charter,
tech-stack evaluation and inventory, research reports.
Remove obsolete multisync_server.py.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 22:12:29 +08:00

2.8 KiB
Raw Blame History

ECC组 全链路安全审查报告

日期: 2026-05-21 部门: ECC组 负责人: CTO 审查范围: R7 Redis安全 + D9 Schema安全 + A4 认证安全 + W6 SSH安全 + EC1-EC5 编码规范


审查结果

编号 审查项 严重程度 发现 状态
R7 Redis连接安全 🟡 REDIS_URL含密码但无TLS;生产环境应启用rediss:// 建议改进
R7 Redis连接池 BlockingConnectionPool + health_check + timeout + retry 配置合理 通过
R7 Redis启动校验 ADR-009 启动强校验,不可用直接退出 通过
D9 Schema变更 新表均有外键约束+级联删除;索引合理 通过
D9 敏感字段 password仍用加密存储;jwt_refresh_token为随机token 通过
D9 迁移安全 category字段保留兼容;新增字段nullable 通过
A4 JWT认证 HS256 + SECRET_KEY签名;exp过期校验;is_active检查 通过
A4 JWT公开路由 🟡 /api/agent/ 使用API Key而非JWT,需确认Agent请求带X-API-Key 需验证
A4 CORS配置 🔴 allow_origins=["*"] + allow_credentials=True 同时存在 需修复
A4 JWT算法锁定 algorithms=["HS256"] 硬编码,不允许算法混淆攻击 通过
W6 SSH连接注入 asyncssh参数化连接,无shell注入风险 通过
W6 会话隔离 每个WebSocket连接独立SSH进程,UUID session_id 通过
W6 命令日志 按行记录命令,便于审计 通过
W6 WebSocket认证 JWT查询参数认证(ADR-011),无效token关闭连接 通过
EC1 Redis密码 🟡 开发环境无密码可接受,生产需设置requirepass 部署时配置
EC2 JWT审计 login/logout/TOTP操作均有AuditLog记录 通过
EC3 WS/SSH安全 连接超时+心跳检测+僵尸清理 通过
EC4 前端XSS 所有动态内容通过esc()函数转义后再写入DOM 通过
EC4 前端CSRF JWT Bearer token不受CSRF攻击 通过
EC5 编码规范 🟡 datetime.utcnow() 29处需替换为 datetime.now(timezone.utc) 建议改进

需修复项

🔴 P0: CORS配置(A4相关)

问题: main.pyallow_origins=["*"] + allow_credentials=True 同时存在,浏览器会拒绝此组合。

修复: 限制 origins 为实际域名。

🟡 P1: datetime.utcnow() 弃用(EC5

问题: Python 3.12 弃用 datetime.utcnow(),项目29处使用。

建议: 后续迭代替换为 datetime.now(timezone.utc)


审查结论

有条件通过 — CORS配置需立即修复,其余项目通过审查。