数据库
Supabase 安全审计完成后生成 Markdown…
在已完成 Supabase 安全审计并已把 findings 收集到 `.sb-pentest-context.json` 后,用于生成面向管理/技术人员的 Markdown 安全审计报告、安全评分和可执行修复计划。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
Supabase 安全审计完成后生成 M特定
解决思路
- 边处理报告各章节边写入 `.sb-pentest-audit.log`:每个章节处理时立即记录带时间戳的动作,不要等到最后才写。
- 边处理边更新 `.sb-pentest-context.json` 中的报告元数据;将渐进式写入视为强制要求,若技能崩溃或被中断,已保存部分进度,未逐步更新视为严重错误。
- 读取 `.sb-pentest-context.json` 中的 `target_url`、`supabase.project_url`、`supabase.project_ref`、`findings`、`audit_completed` 等字段作为报告输入。
- 默认生成 `supabase-audit-report.md`;允许用户指定报告名,例如 `security-audit-2025-01.md`。
- 生成报告头部:`# Supabase Security Audit Report`,并填写 Target、Project、Date、Auditor 等元数据。
- 生成 Executive Summary:概述、关键发现统计表、安全评分与等级、最关键问题、推荐行动(立即/本周/本月)。
- 按评分规则计算 Security Score:基础 100;每个 P0 -25、P1 -10、P2 -5;RLS 覆盖率 100% +10;Auth hardening +10;按 90-100 A、80-89 B、70-79 C、60-69 D、0-59 F 给出等级。
- 生成 Critical Findings (P0) 章节:每条包含 ID、Severity、Component、CVSS、Description、Location、Impact、Proof of Concept、Remediation(立即和长期)、Documentation。
- 生成 High Findings (P1) 和 Medium Findings (P2) 章节,使用与 P0 相同的发现模板。
- 在 P0/P1/P2 中写清楚典型问题:Service Role Key 暴露、Database Backups 公开、Admin Edge Function 无权限校验、邮箱确认禁用、弱密码策略、IDOR、CORS 过宽、缺少 rate limiting;并为每类给出修复。
- 对 P0 发现提供 Proof of Concept,例如使用 `curl 'https://abc123def.supabase.co/rest/v1/users' -H 'apikey: [service_role_key]' -H 'Authorization: Bearer [service_role_key]'` 展示全量读取。
- 对 Service Role Key 暴露:立即在 Supabase Dashboard 的 Settings → API → Regenerate service_role key 轮换密钥,移除客户端代码中的 key 并重新部署;长期把特权操作移到 Edge Functions,服务端使用 `Deno.env.get('SUPABASE_SERVICE_ROLE_KEY')`,并在执行前验证调用者是管理员。
- 对备份 bucket 暴露给出 SQL:`UPDATE storage.buckets SET public = false WHERE name = 'backups';`,并删除或移动文件,启动事件响应。
- 对暴露的 `secrets.env`,建议轮换 Stripe API keys、数据库密码、JWT secret 以及其他密钥。
- 对 P1/P2 修复:启用邮箱确认、修复 Edge Functions 中的 IDOR、加强密码策略、限制 CORS origins、为 functions 增加 rate limiting、为所有表启用 RLS 等。
- 生成 Detailed Analysis:按 API Security(Table、RLS、Access Level、Status)、Storage Security(Bucket、Public、Sensitive Files、Status)、Authentication(Setting、Current、Recommended、Status)等表格拆分组件。
- 生成 Remediation Plan:按 Phase 1 Critical(Immediate)、Phase 2 High Priority(This Week)、Phase 3 Medium Priority(This Month)列出 ID、Action、Owner、Deadline。
- 生成 Appendix:A. Methodology 写明被动侦察客户端代码、用 anon 和 service key 测试 API 端点、Storage bucket 枚举与访问测试、认证流程分析、Realtime channel 订阅测试;B. Tools Used 写明 `supabase-pentest-skills v1.0.0`、`curl`、Browser DevTools;C. Audit Scope 写明 Target URL、Supabase Project、测试组件 API/Storage/Auth/Realtime/Edge Functions、Exclusions;D. Audit Log 指向 `.sb-pentest-audit.log`。
- 支持章节定制:可只生成 Executive Summary、排除 Appendix 等;支持 JSON 格式或 HTML 摘要。
- 如果 `.sb-pentest-context.json` 或 `.sb-pentest-audit.log` 缺失/为空,不要生成空报告;告知用户先运行审计技能,并推荐 `supabase-pentest`。
- 报告生成后写入 `.sb-pentest-audit.log`:`[TIMESTAMP] [supabase-report] [START] Generating security report`、`[TIMESTAMP] [supabase-report] [SUCCESS] Report generated: supabase-audit-report.md`、`[TIMESTAMP] [supabase-report] [CONTEXT_UPDATED] Report generation logged`。
- 报告生成后更新 `.sb-pentest-context.json`,增加 `report` 字段,包含 `generated_at`、`filename`、`findings_count`(`p0`/`p1`/`p2` 数量)。
- 使用 Markdown 表格、代码块、链接组织报告,保持可读和可执行。
- 结合相关技能:可用 `supabase-report-compare` 对比旧报告,先运行 `supabase-pentest`,用 `supabase-help` 查看所有技能。
适用边界 · 注意事项
- 未完成安全审计,或 `.sb-pentest-context.json` 缺失/为空时不要使用;否则会生成空报告,应先运行 `supabase-pentest` 等审计技能。
- 不适用于非 Supabase 项目或没有使用这套 supabase-pentest skills 上下文文件格式的场景。
- 只需要执行渗透测试/收集 findings 而不需要生成正式报告时,不适用;应使用审计类技能而不是报告生成技能。