vCSO-ai/ir-readiness-score

GitHub: vCSO-ai/ir-readiness-score

基于 NIST 800-61 标准,通过 28 项跨阶段检查清单与 MTTC 估算,量化评估并提升组织的事件响应准备度。

Stars: 0 | Forks: 0

# ir-readiness-score [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) 通过差距分析和 MTTC 估算,评估跨 NIST SP 800-61 阶段的事件响应准备情况。 评估您组织的事件响应(IR)准备情况,涵盖所有 6 个 NIST 事件响应阶段的 28 项检查清单,获取字母评级,确定优先补救措施,并根据行业基准估算您的平均遏制时间 (MTTC)。 ## 安装 **Python** (3.9+): ``` pip install ir-readiness-score ``` **JavaScript** (Node.js 16+): ``` npm install ir-readiness-score ``` ## 快速开始 ### Python ``` from ir_readiness_score import ( get_assessment_checklist, score_readiness, generate_priorities, estimate_response_time, ) # 1. 获取按 NIST 阶段分组的 28 项检查清单 checklist = get_assessment_checklist() for phase in checklist: print(f"{phase['label']}: {len(phase['items'])} items") # 2. 对响应进行评分(每项评分 0-3) responses = { "prep-01": 3, # IR Policy — tested "prep-02": 2, # IR Team — implemented "detect-01": 1, # Monitoring — partial # ... remaining items default to 0 (not implemented) } result = score_readiness(responses) print(f"Overall: {result['overall_score']}% (Grade {result['grade']})") print(f"Preparation: {result['phase_scores']['preparation']}%") # 3. 获取优先的修复措施 priorities = generate_priorities(responses) for p in priorities[:5]: print(f"[{p['impact'].upper()}] {p['title']} — gap: {p['gap']}, ~{p['effort_days']}d") print(f" {p['recommendation']}") # 4. 估算平均遏制时间 mttc = estimate_response_time(result["overall_score"]) print(f"Estimated MTTC: {mttc['mttc_hours']}h ({mttc['readiness_band']})") print(mttc["benchmark_comparison"]) ``` ### JavaScript ``` const { getAssessmentChecklist, scoreReadiness, generatePriorities, estimateResponseTime, } = require("ir-readiness-score"); // 1. Get the 28-item checklist grouped by NIST phase const checklist = getAssessmentChecklist(); checklist.forEach((phase) => console.log(`${phase.label}: ${phase.items.length} items`) ); // 2. Score responses (each item rated 0-3) const responses = { "prep-01": 3, // IR Policy — tested "prep-02": 2, // IR Team — implemented "detect-01": 1, // Monitoring — partial // ... remaining items default to 0 (not implemented) }; const result = scoreReadiness(responses); console.log(`Overall: ${result.overallScore}% (Grade ${result.grade})`); console.log(`Preparation: ${result.phaseScores.preparation}%`); // 3. Get prioritized remediation actions const priorities = generatePriorities(responses); priorities.slice(0, 5).forEach((p) => { console.log(`[${p.impact.toUpperCase()}] ${p.title} — gap: ${p.gap}, ~${p.effortDays}d`); console.log(` ${p.recommendation}`); }); // 4. Estimate mean time to contain const mttc = estimateResponseTime(result.overallScore); console.log(`Estimated MTTC: ${mttc.mttcHours}h (${mttc.readinessBand})`); console.log(mttc.benchmarkComparison); ``` ## API 参考 ### `getAssessmentChecklist()` / `get_assessment_checklist()` 返回按 NIST 阶段分组的 28 项检查清单。 **返回:** 阶段对象数组,每个对象包含: - `phase` (字符串) -- 阶段标识符 - `label` (字符串) -- 易读的阶段名称 - `items` (数组) -- 包含 `id`、`title`、`description` 和 `scoring`(0-3 评分标准)的检查清单项 ### `scoreReadiness(responses)` / `score_readiness(responses)` 根据检查清单的响应结果对事件响应准备情况进行评分。 **参数:** - `responses` (对象/字典) -- 检查清单项 ID 到分数(0-3)的映射。未作答的项默认为 0。 **返回:** - `overallScore` / `overall_score` (数字) -- 百分比 0-100 - `phaseScores` / `phase_scores` (对象/字典) -- 各阶段的百分比 - `grade` (字符串) -- 字母评级 A/B/C/D/F **抛出/引发:** 如果项 ID 未知或分数不在 0-3 范围内,则抛出/引发错误。 ### `readinessGrade(score)` / `readiness_grade(score)` 将准备情况百分比(0-100)映射为字母评级。 | 分数范围 | 评级 | |-------------|-------| | 90-100 | A | | 80-89 | B | | 70-79 | C | | 60-69 | D | | 0-59 | F | ### `generatePriorities(responses)` / `generate_priorities(responses)` 识别差距并返回优先补救措施。各项按影响力(高优先)排序,其次是差距大小(最大优先),最后是工作量(最易实现优先)。 **返回:** 优先级对象数组,包含: - `id`、`title`、`phase`、`phaseLabel` / `phase_label` - `currentScore` / `current_score` -- 当前成熟度(0-3) - `gap` -- 达到最高分所需的分数 - `effortDays` / `effort_days` -- 预计补救所需的日历天数 - `impact` -- 高 / 中 / 低 - `recommendation` -- 改进的下一步行动 ### `estimateResponseTime(readinessScore)` / `estimate_response_time(readiness_score)` 使用行业基准,根据准备情况级别估算平均遏制时间 (MTTC)。 **返回:** - `mttcHours` / `mttc_hours` -- 预计遏制小时数 - `mttcDays` / `mttc_days` -- 预计遏制天数 - `readinessBand` / `readiness_band` -- 等级标签 - `benchmarkComparison` / `benchmark_comparison` -- 与行业平均水平的比较 ## 评分系统 28 项检查清单中的每一项均按 0-3 的成熟度进行评分: | 分数 | 标签 | 含义 | |-------|-------------|----------------------------------------------| | 0 | None | 未实施 | | 1 | Partial | 已开始但未完成 | | 2 | Implemented | 已落实但未定期测试 | | 3 | Tested | 已落实并通过演练验证 | ## 检查清单概览 | 阶段 | 项目 | 覆盖范围 | |----------------------|-------|-----------------------------------------------------------------------------| | 准备 | 5 | IR 政策、团队、沟通计划、工具包、培训 | | 检测与分析 | 5 | 监控/日志、威胁情报、分类、分析、IOC 管理 | | 遏制 | 5 | 策略、网络隔离、证据、短期/长期、决策权限 | | 根除 | 5 | 根本原因、恶意软件清除、漏洞修复、凭据、验证 | | 恢复 | 4 | 恢复计划、备份验证、恢复期间监控、BC/DR 集成 | | 经验教训 | 4 | 事后审查、指标、流程改进、知识库 | ## MTTC 基准 根据 IBM X-Force、Ponemon 和 SANS IR 调查的综合数据,按准备情况等级估算的平均遏制时间 (MTTC): | 准备情况等级 | 分数范围 | 预计 MTTC | 行业比较 | |----------------|-------------|----------------|--------------------------------| | 优秀 | 90-100% | 24 小时 (1天) | 比平均水平快 99% | | 良好 | 80-89% | 48 小时 (2天) | 比平均水平快 97% | | 中等 | 70-79% | 96 小时 (4天) | 比平均水平快 95% | | 较弱 | 60-69% | 168 小时 (7天) | 比平均水平快 90% | | 严重 | 0-59% | 336 小时 (14天)| 比平均水平快 81% | 行业平均 MTTC:约 1,752 小时 / 73 天(IBM 数据泄露成本报告,2024 年)。 ## 延伸阅读 - 如需获取包含 NIST 阶段映射的完整事件响应计划模板,请参阅 vCSO.ai 上的[事件响应计划模板](https://vcso.ai/learn/incident-response-plan-template/)。 - 通过结构化演练测试您的 IR 计划 —— 阅读[网络安全桌面演练指南](https://vcso.ai/learn/cybersecurity-tabletop-exercises/)。 - 如需寻找合适的托管安全合作伙伴以提供 IR 支持,请参阅[网络安全服务提供商指南](https://vcso.ai/learn/cybersecurity-services-provider/)。 ## 许可证 [MIT](LICENSE) -- 版权所有 (c) 2026 vCSO.ai
标签:CMS安全, JavaScript, MITM代理, NIST 800-61, Python, 安全合规, 库, 应急响应, 数据可视化, 无后门, 网络代理, 逆向工具