rizko-d/va-remediation-tracker

GitHub: rizko-d/va-remediation-tracker

一套基于 Excel/CSV 的漏洞评估修复跟踪模板,提供从发现到验证修复的完整生命周期管理,内置 SLA 强制执行、MITRE ATT&CK 映射和实时 Dashboard 指标。

Stars: 0 | Forks: 0

# VA Remediation 跟踪表 **漏洞评估修复跟踪器** — Excel/CSV 模板,用于跟踪从发现到验证修复的 VA 发现。专为需要具备 SLA 强制执行、MITRE ATT&CK 映射和 Dashboard 指标的且随时可供审计的跟踪功能的 Red/Blue 团队、渗透测试人员和检测工程师而构建。 ## 📁 模板 | 文件 | 描述 | 最适用于 | |------|-------------|----------| | `templates/VA_Remediation_Tracker.xlsx` | 功能齐全的 Excel,包含下拉菜单、条件格式、公式、Dashboard、SLA 配置和说明 | Excel / LibreOffice / Office 365 | | `templates/VA_Remediation_Tracker.csv` | 干净的 CSV 导入文件,适用于 Notion, Airtable, Google Sheets, Jira, ServiceNow | Notion / Airtable / Sheets / SIEM ingestion | ## ✨ 功能 ### 发现记录表(36 列) - **核心跟踪**:发现 ID、标题、严重程度(下拉菜单)、CVSS 4.0、资产/资源、资产类型、环境 - **来源与归属**:发现来源、扫描器/工具、状态(工作流下拉菜单)、所有者、分配日期 - **SLA 强制执行**:SLA 截止日期(根据严重程度自动计算)、实际修复日期、验证日期、开启天数(公式)、是否达到 SLA?(公式) - **证据与上下文**:描述、PoC/证据链接、MITRE ATT&CK、CWE/CVE、合规性映射 - **修复细节**:根本原因、修复描述、修复类型(下拉菜单)、PR/Ticket 链接、回滚计划、测试步骤、验证证据 - **风险接受**:是否申请例外、原因、审批人、批准日期、到期日期、补偿控制 ### Dashboard(实时公式) - **汇总指标**:按状态、严重程度、SLA 合规性统计数量 - **严重程度 × 状态矩阵**:瓶颈可视化 - **老化区间**:0-7天、8-14天、15-30天、31-60天、61-90天、90天以上 - **所有者工作负载**:开启的发现、平均开启天数、SLA 违规(支持数据透视) - **每月 SLA 趋势**:已开启 vs 已关闭 vs 已达到 SLA % ### SLA 配置 - 默认 SLA:Critical 7天、High 14天、Medium 30天、Low 90天、Info 180天 - 可编辑 — 根据具体任务自定义 - 用于 `SLA Due Date` 自动计算的公式参考 ### 条件格式 - **严重程度**:🔴 Critical、🟠 High、🟡 Medium、🟢 Low、🔵 Info - **状态**:颜色编码的工作流阶段 - **是否达到 SLA?**:✅ 绿色是、❌ 红色否、⚠️ 黄色待定 ### 数据验证(下拉菜单) 所有类别列均强制执行有效值 — 杜绝拼写错误,确保报告一致性。 ## 🚀 快速开始 ### Excel / LibreOffice ``` # 1. 下载 cp templates/VA_Remediation_Tracker.xlsx VA-Tracker--.xlsx # 2. 打开 → 启用编辑 → 启用内容(不需要宏) # 3. 如果客户端有自定义 SLA,请更新 SLA Config 工作表 # 4. 开始在 Findings 工作表中添加 findings ``` ### Notion / Airtable / Google Sheets ``` # 导入 CSV # Notion: 新建 Database → 导入 → CSV → 映射列 # Airtable: 添加 Base → 导入数据 → CSV # Sheets: 文件 → 导入 → 上传 CSV ``` ### CSV → SIEM / SOAR / Jira / GitHub ``` import pandas as pd df = pd.read_csv('templates/VA_Remediation_Tracker.csv') # 转换 → 推送到 Jira API、GitHub Issues、ServiceNow、Splunk SOAR 等 ``` ## 📋 列参考(发现工作表) | 列 | 类型 | 必填 | 备注 | |--------|------|----------|-------| | Finding ID | 文本 | ✅ | `VA-YYYY-NNN` | | Title | 文本 | ✅ | 单行摘要 | | Severity | 下拉菜单 | ✅ | 驱动 SLA 截止日期 | | CVSS 4.0 Score | 数字 | | 0.0–10.0 | | Asset / Resource | 文本 | ✅ | ARN、URL、主机名、Pod、ObjectId | | Asset Type | 下拉菜单 | | Cloud/K8s/Web/AD/Network/Container/SaaS | | Environment | 下拉菜单 | | Prod/Staging/Dev/Corp | | Finding Source | 下拉菜单 | | Scanner/Manual/Bug Bounty/Red Team/Audit | | Scanner/Tool | 文本 | | 工具 + 规则 ID | | Status | 下拉菜单 | ✅ | 工作流:Open→Triaged→In Progress→Ready for Verification→Verified→Closed | | Owner | 邮箱/文本 | ✅ | 修复所有者 | | Assigned Date | 日期 | ✅ | 触发 SLA 截止日期 | | SLA Due Date | 日期(公式) | | 自动:`Assigned Date + VLOOKUP(Severity, SLA Config)` | | Actual Fix Date | 日期 | | 部署到目标环境的时间 | | Verified Date | 日期 | | 安全确认修复的时间 | | Days Open | 公式 | | 自动:`IF(Verified>0, Verified-Assigned, TODAY()-Assigned)` | | SLA Met? | 公式 | | 自动:`IF(Fix Date>0, IF(Fix<=SLA,"Yes","No"),"Pending")` | | Description | 长文本 | ✅ | 技术细节、影响、攻击路径 | | PoC / Evidence | URL/文本 | | 截图、日志、扫描器链接 | | MITRE ATT&CK | 文本 | | 以分号分隔的 TTP | | CWE / CVE | 文本 | | 如适用 | | Compliance Mapping | 文本 | | PCI-DSS、ISO 27001、SOC 2 等 | | Root Cause | 文本 | | 发生原因 | | Fix Description | 长文本 | | 更改内容 | | Fix Type | 下拉菜单 | | Config/Code/Architecture/Compensating/WAF/Policy | | PR / Ticket Link | URL | | Jira/GitHub/GitLab | | Rollback Plan | 文本 | | 回归应急方案 | | Testing Steps | 长文本 | | 验证流程 | | Verification Evidence | URL/文本 | | 重新扫描证明 | | Exception Requested? | 下拉菜单 | | 是/否 | | Exception Reason | 文本 | | 如果是:业务理由 | | Approver | 文本 | | 如果是:谁批准的 | | Approval Date | 日期 | | 如果是 | | Expiry Date | 日期 | | 如果是:最长 90-180 天 | | Compensating Controls | 文本 | | 如果是:WAF、监控、隔离 | ## 📊 Dashboard 指标说明 | 指标 | 公式 | 目的 | |--------|---------|---------| | Total Findings | `COUNTA(Findings!A2:A1000)` | 数量基准 | | By Status | `COUNTIF(Status, "X")` | 工作流健康度 | | By Severity | `COUNTIF(Severity, "X")` | 风险态势 | | SLA Met/Breached/Pending | `COUNTIF(SLA Met?, "X")` | 合规性跟踪 | | Avg Days Open (Closed) | `AVERAGEIFS(Days Open, Status, "Closed")` | 修复速度 | | Avg Days Open (Open) | `AVERAGEIFS(Days Open, Status, "<>Closed"...)` | 当前积压老化 | | Overdue | `COUNTIFS(Status<>"Closed", SLA Due"Closed", Days Open, range)` | 陈旧发现筛查 | ## 🔧 自定义 ### 添加自定义列 在 Findings 工作表中插入列 → 如有需要,更新 Dashboard 公式。 ### 更改 SLA 天数 编辑 **SLA Config** 工作表(第 3–7 行) → Dashboard 将自动更新。 ### 添加状态值 1. 编辑 `Findings!J:J`(Status 列)的数据验证 2. 为新状态颜色添加条件格式规则 3. 更新 Dashboard 的 COUNTIF 公式 ### 连接到 CMDB/资产清单 添加 `Asset ID` 列 → VLOOKUP 到资产注册表 → 自动丰富资产类型、环境、所有者信息。 ## 📦 集成示例 ### Notion ``` # 1. 导入 CSV 到 Notion Database # 2. 添加 Relations:Assets、Projects、Teams # 3. 创建 Views: # - Kanban:按 Status 分组 # - Calendar:按 SLA Due Date # - Table:按 Owner 分组 # - List:筛选 Exception Requested = Yes ``` ### Airtable ``` # 1. 导入 CSV → Base # 2. Views: # - Grid:所有 findings # - Kanban:Status(拖放工作流) # - Calendar:SLA Due Date # - Form:“Submit New Finding”(预填充 Severity 下拉菜单) # 3. Automations: # - 当 Status = “Ready for Verification” 时 → Slack #sec-ops # - 当 SLA Due Date = TODAY() + 1 时 → 发送邮件给 Owner ``` ### Python 同步 (Jira/GitHub/ServiceNow) ``` from openpyxl import load_workbook import requests wb = load_workbook('VA-Tracker-Client-20250115.xlsx') ws = wb['Findings'] for row in ws.iter_rows(min_row=2, values_only=True): finding_id, title, severity, *_ = row if finding_id and row[9] == 'In Progress': # Status column # Push update to Jira/GitHub pass ``` ## 📝 最佳实践 1. **在交付报告后 24 小时内进行分配** 2. **在主动修复期间每天更新状态** 3. **在标记为 Verified/Closed 之前要求提供验证证据** 4. **风险接受 = 审批人 + 到期日期 + 补偿控制**(无一例外) 5. **每周与利益相关者一起审查 Dashboard** 6. **每月导出 CSV** 用于趋势分析 / 董事会汇报 7. **归档已关闭的评估任务** — 重命名文件,存放在证据柜中 ## 📄 许可证 MIT License — 查看 [LICENSE](LICENSE) **专为 VA/渗透测试/检测工程工作流而构建。** 有问题?Open 一个 issue 或联系我们。
标签:Excel模板, GPT, IT审计, Linux 内核安全, PB级数据处理, 安全运维, 漏洞管理, 逆向工具, 项目管理