vCSO-ai/ir-readiness-score
GitHub: vCSO-ai/ir-readiness-score
基于 NIST 800-61 标准,通过 28 项跨阶段检查清单与 MTTC 估算,量化评估并提升组织的事件响应准备度。
Stars: 0 | Forks: 0
# ir-readiness-score
[](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, 安全合规, 库, 应急响应, 数据可视化, 无后门, 网络代理, 逆向工具