# DKTSS 评分体系

DKTSS（DarkKnight Threat Scoring System）是比 CVSS 更贴合实战的漏洞优先级评分标准。

---

## 核心公式

```
Score = Base - Friction + Weapon + Ver
```

---

## Base Score（基础分）

按漏洞类型和实际影响细分，不是简单的"RCE = 10 分"。

| 漏洞类型 | 条件 | Base |
|----------|------|------|
| RCE / 反序列化 | 可执行系统命令 | 10 |
| RCE / 反序列化 | 仅代码执行（无命令） | 9 |
| SQL 注入 | 可脱库 / 可写文件 | 8 |
| SQL 注入 | 仅可读有限数据 | 6 |
| SSRF | 可访问内网 / 云元数据 | 7 |
| SSRF | 仅 HTTP 协议无回显 | 4 |
| 认证绕过 | 可访问管理后台 | 8 |
| 认证绕过 | 可访问普通用户功能 | 5 |
| 路径穿越 | 可读任意文件 | 6 |
| 路径穿越 | 可写任意文件 | 8 |
| XSS (Stored) | 可窃取 Cookie / Token | 6 |
| XSS (Reflected) | 需要 URL 点击 | 4 |
| XXE | 可读文件 / SSRF | 7 |
| XXE | 仅报错回显 | 4 |
| 文件上传 | 可上传 Webshell | 9 |
| 文件上传 | 仅可上传恶意文件（需结合其他漏洞） | 5 |
| 敏感信息泄露 | 密码 / API Key / Token | 6 |
| 敏感信息泄露 | 内部 IP / 配置信息 | 3 |

---

## Friction（实战阻力）

把"利用难度"拆成三个独立维度，从 Base 中扣除。

### 访问路径阻力

| 条件 | Friction |
|------|----------|
| 互联网可直接访问 | 0 |
| 需要内网访问 / VPN | -2 |
| 需要物理接触 | -4 |

### 权限门槛阻力

| 条件 | Friction |
|------|----------|
| 无需认证 | 0 |
| 需要低权限账号（普通用户） | -1 |
| 需要高权限账号（管理员） | -3 |
| 需要特定角色（财务/HR等） | -2 |

### 交互复杂度阻力

| 条件 | Friction |
|------|----------|
| 零交互（单次请求即可触发） | 0 |
| 弱交互（需要点击链接 / 访问页面） | -1 |
| 强交互（需要多步操作 / 社会工程） | -3 |

---

## Weapon（武器化程度）

评估漏洞的现成利用工具可用性。

| 条件 | Weapon |
|------|--------|
| 有成熟 EXP（Metasploit / Nuclei 已集成） | +1 |
| 仅有 PoC 代码 | 0 |
| 仅理论分析 / 需要竞态条件 | -2 |
| 需要特定环境 / 配置 | -1 |

---

## Ver（版本因子）

评估漏洞是否在当前版本已修复。

| 条件 | Ver |
|------|-----|
| 当前版本存在漏洞 | 0 |
| 已有补丁但未应用 | +1 |
| 仅在旧版本存在（需确认目标版本） | -1 |

---

## 评分示例

### 示例 1: 后台 SQL 注入

```
漏洞：后台管理系统的 SQL 注入（可脱库）

Base = 8（SQL 注入，可脱库）
Friction = -3（需要管理员登录：权限门槛 -3）
Weapon = +1（SQLMap 可直接利用）
Ver = 0（当前版本）
─────────────
DKTSS = 8 - 3 + 1 + 0 = 6（Medium）

CVSS 评分：8.8（High）
```

**分析**: CVSS 忽略了"需要管理员权限"这个关键因素，给出的 High 评分可能导致安全团队误判优先级。DKTSS 更准确地反映了实战利用难度。

### 示例 2: 前台 Velocity SSTI

```
漏洞：前台模板渲染接口的 Velocity SSTI

Base = 10（RCE，可执行系统命令）
Friction = 0（无需认证，零交互）
Weapon = +1（公开 EXP）
Ver = 0（当前版本）
─────────────
DKTSS = 10 - 0 + 1 + 0 = 11（Critical，上限 10）

最终评分：10（Critical）
```

### 示例 3: 内网 SSRF

```
漏洞：内部 API 的 SSRF（可访问云元数据）

Base = 7（SSRF，可访问云元数据）
Friction = -2（需要内网访问）
Weapon = 0（需要手动利用）
Ver = 0（当前版本）
─────────────
DKTSS = 7 - 2 + 0 + 0 = 5（Medium）
```

### 示例 4: 存储 XSS

```
漏洞：用户资料页存储 XSS

Base = 6（Stored XSS，可窃取 Cookie）
Friction = -1（需要低权限账号：用户登录）
Weapon = 0（需要构造 Payload）
Ver = 0（当前版本）
─────────────
DKTSS = 6 - 1 + 0 + 0 = 5（Medium）
```

---

## 严重程度等级

| DKTSS 评分 | 严重程度 | 响应时效 |
|------------|----------|----------|
| 9-10 | Critical | 立即修复（24h 内） |
| 7-8 | High | 优先修复（7 天内） |
| 5-6 | Medium | 计划修复（30 天内） |
| 3-4 | Low | 低优先级（90 天内） |
| 0-2 | Info | 可接受风险 / 观察即可 |

---

## DKTSS vs CVSS 对比

| 维度 | CVSS | DKTSS |
|------|------|-------|
| 权限考虑 | Attack Complexity / Privileges Required | Friction 精细拆分（访问路径/权限门槛/交互复杂度） |
| 利用难度 | 粗粒度 | 细粒度（Weapon 分级） |
| 版本考虑 | 无 | Ver 因子 |
| 实战贴合 | 偏理论 | 直接反映攻击成本 |
| 适用场景 | 通用漏洞评分 | 安全审计优先级排序 |

---

## 使用指南

1. **先确定 Base**: 根据漏洞类型和实际影响查表
2. **计算 Friction**: 累加访问路径 + 权限门槛 + 交互复杂度的阻力值
3. **评估 Weapon**: 检查是否有现成的利用工具
4. **确认 Ver**: 检查版本是否已修复
5. **最终评分**: Score = Base - Friction + Weapon + Ver，上限 10

**注意**: DKTSS 评分应基于实际验证结果，而非推测。如果某些条件无法确认，应在报告中标注"需要进一步确认"。