name: supabase-报告-比较 description: 比较两个安全审计报告,以跟踪修复进度并识别新漏洞。
报告比较
此技能比较两个安全审计报告,以跟踪随时间变化的进度。
何时使用此技能
- 修复漏洞后,验证修复效果
- 用于定期安全审查
- 跟踪安全态势随时间变化
- 识别回归(新漏洞)
先决条件
- 两个Markdown格式的审计报告
- 报告应来自同一项目
使用方式
基本比较
比较安全报告 old-report.md 和 new-report.md
使用特定路径
比较 reports/audit-v1.md 与 reports/audit-v2.md
输出格式
═══════════════════════════════════════════════════════════
安全审计比较
═══════════════════════════════════════════════════════════
先前审计:2025年1月15日
当前审计:2025年1月31日
间隔天数:16天
─────────────────────────────────────────────────────────
分数比较
─────────────────────────────────────────────────────────
先前分数:35/100 (等级:D)
当前分数:72/100 (等级:C)
改进:+37 分 ⬆️
┌────────────────────────────────────────────────────────┐
│ 分数进度 │
│ │
│ 100 ┤ │
│ 80 ┤ ████████ 72 │
│ 60 ┤ ████████ │
│ 40 ┤ ████████ 35 ████████ │
│ 20 ┤ ████████ ████████ │
│ 0 ┴─────────────────────────────────────────────── │
│ 1月15日 1月31日 │
└────────────────────────────────────────────────────────┘
─────────────────────────────────────────────────────────
发现总结
─────────────────────────────────────────────────────────
| 状态 | P0 | P1 | P2 | 总计 |
|-------------|-----|-----|-----|-------|
| 先前 | 3 | 4 | 5 | 12 |
| 当前 | 0 | 2 | 4 | 6 |
| 已修复 | 3 | 2 | 2 | 7 |
| 新发现 | 0 | 0 | 1 | 1 |
─────────────────────────────────────────────────────────
已修复漏洞 ✅
─────────────────────────────────────────────────────────
P0(关键) - 全部已修复!🎉
✅ P0-001:服务角色密钥暴露
状态:已修复
解决方案:密钥轮换,从客户端代码中移除
修复日期:2025年1月16日
✅ P0-002:数据库备份公开可访问
状态:已修复
解决方案:存储桶设为私有,文件删除
修复日期:2025年1月16日
✅ P0-003:管理员函数权限提升
状态:已修复
解决方案:添加管理员角色验证
修复日期:2025年1月17日
P1(高) - 4个中已修复2个
✅ P1-001:电子邮件确认禁用
状态:已修复
解决方案:现在需要电子邮件确认
修复日期:2025年1月20日
✅ P1-002:get-user-data函数中的IDOR
状态:已修复
解决方案:添加用户所有权验证
修复日期:2025年1月18日
P2(中) - 5个中已修复2个
✅ P2-001:弱密码策略
状态:已修复
解决方案:最小长度增加至10
修复日期:2025年1月22日
✅ P2-003:接受一次性电子邮件
状态:已修复
解决方案:添加电子邮件验证
修复日期:2025年1月25日
─────────────────────────────────────────────────────────
剩余漏洞 ⚠️
─────────────────────────────────────────────────────────
P1(高) - 2个剩余
🟠 P1-003:通过时序攻击的用户枚举
状态:未解决(16天)
优先级:本周处理
备注:先前报告中存在,尚未修复
🟠 P1-004:管理员频道公开可访问
状态:未解决(16天)
优先级:本周处理
P2(中) - 3个剩余
🟡 P2-002:通配符CORS来源
状态:未解决(16天)
🟡 P2-004:详细错误消息
状态:未解决(16天)
🟡 P2-005:函数上未强制执行速率限制
状态:未解决(16天)
─────────────────────────────────────────────────────────
新漏洞 🆕
─────────────────────────────────────────────────────────
P2(中) - 1个新问题
🆕 P2-006:新存储桶无RLS
严重性:🟡 P2
组件:存储
描述:新创建的“user-uploads”存储桶没有RLS策略。目前为空,但在生产使用前需要策略。
首次发现:2025年1月31日
─────────────────────────────────────────────────────────
进度分析
─────────────────────────────────────────────────────────
修复率:58%(12个中修复7个)
按严重性:
├── P0(关键):100% 已修复 ✅
├── P1(高):50% 已修复
└── P2(中):40% 已修复
平均修复时间:
├── P0:1.3天(优秀)
├── P1:3.5天(良好)
└── P2:5.5天(可接受)
回归:引入1个新问题
(较低严重性,可接受)
─────────────────────────────────────────────────────────
推荐
─────────────────────────────────────────────────────────
1. 继续进度
修复所有P0问题的好工作!现在专注于剩余P1问题:
- 用户枚举时序攻击
- 管理员广播频道
2. 处理新问题
在生产使用前,为“user-uploads”存储桶配置RLS。
3. 安排后续
建议在14天内进行另一次审计,以验证剩余修复。
─────────────────────────────────────────────────────────
趋势分析
─────────────────────────────────────────────────────────
如果您有3个或更多报告,可进行趋势分析:
| 日期 | 分数 | P0 | P1 | P2 | 总计 |
|------------|-------|----|----|----| ------|
| 2024-12-01 | 28 | 4 | 5 | 6 | 15 |
| 2025-01-15 | 35 | 3 | 4 | 5 | 12 |
| 2025-01-31 | 72 | 0 | 2 | 4 | 6 |
趋势:改进中 ⬆️
═══════════════════════════════════════════════════════════
比较逻辑
发现匹配
通过以下方式匹配报告中的发现:
- ID匹配 — 相同的P0-001、P1-002等。
- 组件 + 标题匹配 — 相同的问题描述
- 位置匹配 — 相同的文件/行/端点
状态确定
| 先前 | 当前 | 状态 |
|---|---|---|
| 存在 | 不存在 | 已修复 ✅ |
| 存在 | 存在 | 剩余 ⚠️ |
| 不存在 | 存在 | 新 🆕 |
| 不存在 | 不存在 | 不适用 |
分数计算
变化 = 当前分数 - 先前分数
正向变化 = 改进 ⬆️
负向变化 = 回归 ⬇️
无变化 = 稳定 ➡️
上下文输出
{
"comparison": {
"previous_date": "2025-01-15",
"current_date": "2025-01-31",
"previous_score": 35,
"current_score": 72,
"score_change": 37,
"findings": {
"previous_total": 12,
"current_total": 6,
"fixed": 7,
"remaining": 5,
"new": 1
},
"by_severity": {
"P0": { "previous": 3, "current": 0, "fixed": 3, "new": 0 },
"P1": { "previous": 4, "current": 2, "fixed": 2, "new": 0 },
"P2": { "previous": 5, "current": 4, "fixed": 2, "new": 1 }
},
"remediation_rate": 0.58,
"trend": "improving"
}
}
报告输出
比较生成 supabase-audit-comparison.md:
# 安全审计比较报告
## 总结
| 指标 | 先前 | 当前 | 变化 |
|--------|----------|---------|--------|
| 分数 | 35/100 | 72/100 | +37 ⬆️ |
| P0 问题 | 3 | 0 | -3 ✅ |
| P1 问题 | 4 | 2 | -2 ✅ |
| P2 问题 | 5 | 4 | -1 ✅ |
| 总计 | 12 | 6 | -6 ✅ |
## 已修复问题(7)
[已修复问题的详细列表...]
## 剩余问题(5)
[剩余问题的详细列表...]
## 新问题(1)
[新问题的详细列表...]
## 推荐
[基于比较的行动项目...]
多报告比较
对于3个或更多报告的趋势分析:
比较趋势 reports/audit-*.md
输出包括:
- 分数趋势图
- 随时间变化的问题数量
- 平均修复时间
- 识别重复出现的问题
最佳实践
命名约定
reports/
├── supabase-audit-2024-12-01.md
├── supabase-audit-2025-01-15.md
├── supabase-audit-2025-01-31.md
└── supabase-audit-comparison-2025-01-31.md
定期审计
| 频率 | 目的 |
|---|---|
| 修复后 | 验证修复效果 |
| 每月 | 捕捉回归 |
| 发布前 | 生产前检查 |
| 事件后 | 事件后审查 |
跟踪进度
- 将所有报告保存在版本控制中
- 链接到问题追踪器(GitHub、Jira)
- 包含在冲刺规划中
- 向利益相关者报告
相关技能
supabase-report— 生成要比较的报告supabase-pentest— 运行全面审计supabase-help— 快速参考