# FIBEMATE 安全事件响应计划

**版本**: v1.0
**日期**: 2026-08-02
**状态**: 生效
**分类**: 内部/公开

---

## 1. 执行摘要

本文档定义了 FIBEMATE 项目的安全事件响应流程，确保在发生安全事件时能够快速、有效地响应，最大限度降低损失并保护用户数据。

### 适用范围

- FIBEMATE 仓库（GitHub: Lennonhaha/fibemate）
- 官网（https://fibemate.net）
- 相关基础设施（服务器、CI/CD、密钥管理系统）
- 第三方依赖和供应链

---

## 2. 事件分类

### 2.1 严重等级定义

| 等级 | 名称 | 定义 | 响应时间 | 示例 |
|------|------|------|----------|------|
| **P0** | 紧急 | 生产系统完全瘫痪或关键数据泄露 | <1 小时 | 密钥泄露、主仓库被删、官网被黑 |
| **P1** | 高危 | 核心功能受损或存在可利用漏洞 | <4 小时 | 远程代码执行、TVLA 失败、依赖漏洞 |
| **P2** | 中危 | 非核心功能异常或潜在安全问题 | <24 小时 | DDoS 攻击、CI 失败、配置泄露 |
| **P3** | 低危 | 轻微问题或信息泄露 | <72 小时 | 文档错误、建议性改进 |

### 2.2 事件类型

| 类型 | 描述 | 典型场景 |
|------|------|----------|
| **数据泄露** | 敏感信息被未授权访问 | 密钥泄露、用户数据外泄 |
| **漏洞利用** | 攻击者利用代码漏洞 | RCE、注入攻击、侧信道攻击 |
| **供应链攻击** | 依赖或构建过程被篡改 | 恶意依赖、CI 被劫持、源码被注入 |
| **可用性攻击** | 服务中断或性能下降 | DDoS、服务器宕机、DNS 劫持 |
| **内部威胁** | 内部人员滥用权限 | 恶意提交、权限滥用、数据窃取 |
| **误操作** | 人为错误导致的问题 | 配置错误、密钥误删、数据误删 |

---

## 3. 响应团队

### 3.1 核心团队

| 角色 | 职责 | 当前负责人 | 联系方式 |
|------|------|-----------|----------|
| **事件指挥官** | 协调整体响应、决策 | Tianhe Liu | 27202998@qq.com |
| **技术响应** | 技术调查、修复 | Tianhe Liu | 27202998@qq.com |
| **通信协调** | 对外沟通、公告发布 | Tianhe Liu | 27202998@qq.com |
| **法务顾问** | 合规评估、法律风险 | - | 待补充 |

### 3.2 外部支持

| 类型 | 服务商 | 联系方式 | 使用场景 |
|------|--------|----------|----------|
| GitHub Support | GitHub | support@github.com | 仓库被黑、恶意提交 |
| 阿里云 ECS | 阿里云 | 工单系统 | 服务器故障、网络攻击 |
| DigiCert | DigiCert | support@digicert.com | 证书问题、TSR 存证 |
| 安全审计 | 待定 | - | 漏洞评估、渗透测试 |

---

## 4. 响应流程

### 4.1 准备阶段（Preparation）

**日常准备**:
- [x] 监控 CI/CD 流水线状态
- [x] 定期备份关键数据（每日 03:00 cron）
- [x] 维护 TSR 证据链（100 份存证）
- [x] 定期漏洞扫描（npm audit）
- [ ] 建立安全日志集中存储（待实施）
- [ ] 定期演练（计划 Q4 2026）

**检查清单**:
- [x] 应急联系人清单已更新
- [x] 备份恢复流程已文档化
- [x] GitHub 2FA 已启用
- [x] 访问权限最小化
- [ ] 密钥轮换流程已测试（待实施）

### 4.2 检测与分析（Detection & Analysis）

**监控指标**:
- CI/CD 失败率 > 10%
- 服务器响应时间 > 5s
- HTTP 5xx 错误率 > 1%
- 异常登录尝试 > 10/min
- 依赖漏洞告警（npm audit）

**检测工具**:
- GitHub Actions（CI/CD 监控）
- Nightly 测试（回归检测）
- TVLA 测试（时序泄漏检测）
- curl 健康检查（服务器可用性）
- npm audit（依赖漏洞扫描）

**分析步骤**:
1. **确认事件**: 验证告警是否真实
2. **分类定级**: 根据影响范围确定严重等级
3. **收集证据**: 保存日志、截图、网络流量
4. **溯源分析**: 确定攻击来源或根本原因
5. **记录时间线**: 记录每个关键时间点

### 4.3 遏制与根除（Containment, Eradication & Recovery）

#### P0 紧急事件

**立即行动**（<1 小时）:
1. **断开受影响系统**: 关闭服务器、禁用账户
2. **通知核心团队**: 发送紧急通知
3. **保护证据**: 保存日志、快照、内存转储
4. **启动应急备份**: 切换到备用系统（如有）

**短期遏制**（<4 小时）:
1. **封锁攻击源**: IP 黑名单、防火墙规则
2. **撤销泄露凭证**: 轮换密钥、撤销证书
3. **修复漏洞**: 应用补丁、更新依赖
4. **隔离受影响组件**: 禁用可疑功能

**根除威胁**（<24 小时）:
1. **清理恶意代码**: 从干净备份恢复
2. **更新所有凭证**: 密钥、证书、访问令牌
3. **扫描残留威胁**: 查杀后门、木马
4. **验证修复**: 确认威胁已清除

#### P1 高危事件

**遏制措施**:
- 撤销受影响的访问权限
- 应用临时补丁
- 禁用受影响功能
- 通知相关用户

**恢复步骤**:
- 从备份恢复受影响数据
- 更新相关依赖版本
- 重新部署受影响服务
- 验证功能完整性

#### P2/P3 中低危事件

**处理方式**:
- 记录事件详情
- 创建修复 issue
- 按优先级排期处理
- 定期跟进直至关闭

### 4.4 恢复阶段（Recovery）

**系统恢复检查清单**:
- [ ] 所有服务已重新上线
- [ ] CI/CD 流水线正常运行
- [ ] 功能测试全部通过
- [ ] 性能恢复正常水平
- [ ] 监控告警已清除
- [ ] 用户可正常访问

**验证步骤**:
1. 运行完整测试套件（480 个测试）
2. 检查服务器健康状态
3. 验证密钥和证书有效性
4. 确认数据完整性（TSR 验证）
5. 监控系统运行 24 小时

**数据恢复优先级**:
1. **P0**: 密钥库、用户数据、TSR 证据链
2. **P1**: 源代码仓库、配置文件、文档
3. **P2**: 测试数据、临时文件、日志

### 4.5 事后活动（Post-Incident Activity）

**复盘会议**（事件后 48 小时内）:
- 回顾事件时间线
- 分析根本原因
- 评估响应效果
- 识别改进机会

**复盘报告**（事件后 1 周内）:
```markdown
# 事件复盘报告模板

## 基本信息
- 事件编号: INC-YYYY-MM-DD-###
- 发生时间: YYYY-MM-DD HH:MM
- 发现时间: YYYY-MM-DD HH:MM
- 响应时间: YYYY-MM-DD HH:MM
- 解决时间: YYYY-MM-DD HH:MM
- 严重等级: P0/P1/P2/P3

## 影响范围
- 受影响系统:
- 受影响用户:
- 数据损失:
- 服务中断时长:

## 时间线
| 时间 | 事件 |
|------|------|
| HH:MM | 事件发生 |
| HH:MM | 事件发现 |
| HH:MM | 响应启动 |
| HH:MM | 遏制完成 |
| HH:MM | 根除完成 |
| HH:MM | 恢复完成 |

## 根本原因分析
- 技术原因:
- 流程原因:
- 人为因素:

## 响应评估
- 响应及时性: ✅/⚠️/❌
- 沟通有效性: ✅/⚠️/❌
- 恢复完整性: ✅/⚠️/❌

## 改进措施
| 措施 | 负责人 | 截止日期 | 状态 |
|------|--------|----------|------|
| ... | ... | ... | ... |

## 经验教训
- 做得好的地方:
- 需要改进的地方:
- 新发现的最佳实践:
```

**改进措施跟踪**:
- 创建改进 issue
- 分配负责人和截止日期
- 定期检查进度
- 完成后关闭并文档化

---

## 5. 通信计划

### 5.1 内部通信

**通知渠道**:
- 邮件: 27202998@qq.com
- GitHub: @Lennonhaha
- 即时通讯: 待建立

**通知模板**:
```
主题: [FIBEMATE 安全事件] P{等级} - {事件类型}

摘要:
- 发生时间: YYYY-MM-DD HH:MM
- 影响范围: {系统/用户/数据}
- 当前状态: {检测中/遏制中/恢复中}

请立即查看并响应。
```

### 5.2 外部通信

**公告发布渠道**:
- GitHub Security Advisory
- 官网公告页面
- 社交媒体（如适用）

**公告模板**:
```markdown
# 安全公告: FIBEMATE-{年份}-{编号}

**发布日期**: YYYY-MM-DD
**严重等级**: P0/P1/P2/P3
**影响版本**: vX.X.X - vX.X.X

## 摘要
简要描述漏洞或事件。

## 影响
- 受影响用户:
- 受影响功能:
- 潜在风险:

## 缓解措施
- 升级到版本 vX.X.X
- 应用配置更改
- 临时变通方案

## 技术细节
详细描述漏洞机制。

## 致谢
感谢发现者（如适用）。

## 参考
- CVE 编号（如已分配）
- 相关链接
```

### 5.3 用户通知

**通知时机**:
- P0/P1 事件: 立即通知
- P2 事件: 修复后通知
- P3 事件: 不通知（内部记录）

**通知内容**:
- 事件概述
- 影响范围
- 建议操作
- 时间线
- 联系方式

---

## 6. 特定场景响应

### 6.1 密钥泄露

**检测**:
- GitHub secret 扫描告警
- 日志中出现密钥明文
- 异常 API 调用

**响应步骤**:
1. **立即撤销泄露密钥**（<30 分钟）
   - GitHub token: GitHub Settings → Developer settings → Personal access tokens → Delete
   - SSH 密钥: `ssh-keygen -R` + 重新生成
   - API 密钥: 在对应平台撤销
   
2. **生成新密钥**
   - 使用强随机数生成器
   - 存储到安全位置（密钥管理服务）
   - 更新所有使用该密钥的配置
   
3. **轮换所有相关凭证**
   - 数据库密码
   - API 密钥
   - TLS 证书（如适用）
   
4. **审计历史访问**
   - 检查密钥使用日志
   - 确认是否有未授权访问
   - 记录异常活动

5. **更新文档和流程**
   - 更新密钥管理文档
   - 加强密钥存储安全
   - 培训团队成员

### 6.2 供应链攻击

**检测**:
- npm audit 告警
- Snyk/Dependabot 警告
- CI 构建异常
- 代码审查发现恶意代码

**响应步骤**:
1. **立即隔离**
   - 锁定依赖版本
   - 停止相关 CI/CD 流水线
   - 通知下游用户
   
2. **确认影响范围**
   - 检查依赖树: `npm list <package>`
   - 扫描所有环境
   - 确认恶意代码注入位置
   
3. **清除威胁**
   - 更新到安全版本
   - 或移除恶意依赖
   - 清理构建缓存
   
4. **验证清理**
   - 重新构建
   - 运行安全扫描
   - 检查构建产物
   
5. **通知相关方**
   - 发布安全公告
   - 通知用户升级
   - 向 npm/GitHub 报告

### 6.3 数据泄露

**检测**:
- 异常数据库访问
- 日志中出现敏感数据
- 第三方通知

**响应步骤**:
1. **立即阻止泄露**
   - 关闭受影响服务
   - 撤销访问权限
   - 封锁泄露渠道
   
2. **评估泄露范围**
   - 确认泄露数据类型
   - 估算受影响用户数
   - 确认泄露时间窗口
   
3. **通知受影响方**
   - 法定义时限内通知用户
   - 提供补救建议
   - 设立支持渠道
   
4. **合规报告**（如适用）
   - 向监管机构报告
   - 向执法部门报案
   - 记录所有行动

### 6.4 拒绝服务攻击

**检测**:
- 服务器负载异常高
- 响应时间剧增
- 可用性监控告警

**响应步骤**:
1. **启用防护措施**
   - 启用 DDoS 防护（阿里云）
   - 配置速率限制
   - 启用 WAF
   
2. **分流流量**
   - 启用 CDN 缓存
   - 静态资源分流
   - 非关键服务降级
   
3. **联系 ISP/云服务商**
   - 请求上游过滤
   - 获取攻击分析报告
   
4. **恢复服务**
   - 逐步放开限制
   - 监控系统状态
   - 通知用户恢复

### 6.5 代码仓库被篡改

**检测**:
- 未授权的 commit
- 强制推送（force push）
- 分支保护规则被修改

**响应步骤**:
1. **立即锁定仓库**
   - 启用分支保护
   - 暂停所有写入权限
   - 冻结当前状态
   
2. **评估篡改范围**
   - 检查所有分支
   - 检查 tag 历史
   - 确认被修改的文件
   
3. **恢复干净版本**
   - 从备份恢复
   - 或从可信 commit 恢复
   - 验证恢复完整性
   
4. **加强防护**
   - 启用所有分支保护规则
   - 要求 PR 审查
   - 启用 commit 签名
   
5. **调查攻击源**
   - 检查访问日志
   - 确认攻击者身份
   - 撤销所有可疑访问权限

---

## 7. 工具与资源

### 7.1 应急工具箱

| 工具 | 用途 | 位置 |
|------|------|------|
| `scripts/verify-tsr.sh` | 验证 TSR 证据链 | 仓库 |
| `scripts/daily-audit.js` | 安全审计检查 | 仓库 |
| `scripts/backup.sh` | 数据备份脚本 | 服务器 |
| `tools/cbom-cyclonedx.json` | 密码资产清单 | 仓库 |
| `docs/security-limitations.md` | 已知安全局限 | 仓库 |

### 7.2 备份恢复

**备份清单**:
- 源代码: GitHub（自动）
- 服务器数据: 每日 03:00 cron（`/opt/fibemate-repo/www`）
- TSR 证据: DigiCert + FreeTSA（100 份）
- 配置文件: 仓库内版本控制
- 密钥: 不备份（使用 HSM 或密钥管理服务）

**恢复优先级**:
1. 源代码仓库（从 GitHub 克隆）
2. 服务器网站文件（从备份恢复）
3. TSR 证据链（验证完整性）
4. CI/CD 配置（重新运行）

### 7.3 联系人清单

**内部联系人**:
- Tianhe Liu (维护者): 27202998@qq.com, GitHub: @Lennonhaha

**外部联系人**:
- GitHub Support: support@github.com
- 阿里云技术支持: 工单系统
- DigiCert Support: support@digicert.com
- 安全社区: security@fibemate.net（待建立）

---

## 8. 培训与演练

### 8.1 培训计划

**目标受众**: 所有项目贡献者

**培训内容**:
- 安全意识培训
- 事件响应流程培训
- 工具使用培训
- 沟通协作培训

**培训频率**: 每季度一次

### 8.2 演练计划

**演练类型**:
- 桌面演练（Tabletop Exercise）
- 功能演练（Functional Exercise）
- 全面演练（Full-scale Exercise）

**演练场景**:
- 密钥泄露
- 供应链攻击
- DDoS 攻击
- 数据泄露

**演练频率**: 每半年一次（计划 Q4 2026）

---

## 9. 持续改进

### 9.1 指标跟踪

| 指标 | 目标 | 当前 | 趋势 |
|------|------|------|------|
| 平均检测时间 (MTTD) | <4h | - | - |
| 平均响应时间 (MTTR) | <24h | - | - |
| 事件数量（月度） | <5 | - | - |
| P0/P1 事件数量 | 0 | 0 | ✅ |
| 演练完成率 | 100% | 0% | ⏳ |

### 9.2 定期审查

**审查频率**: 每季度

**审查内容**:
- 事件响应计划有效性
- 团队角色和职责
- 工具和资源充分性
- 培训和演练计划
- 改进措施执行情况

**审查输出**:
- 更新事件响应计划
- 更新联系人清单
- 调整响应流程
- 增加或改进工具

---

## 10. 合规与法规

### 10.1 数据保护法规

**适用法规**:
- 中国《网络安全法》
- 中国《数据安全法》
- 中国《个人信息保护法》
- GDPR（如服务欧盟用户）

**合规要求**:
- 数据泄露通知时限（72 小时内）
- 用户知情权
- 数据最小化原则
- 数据保护影响评估

### 10.2 行业标准

**适用标准**:
- NIST SP 800-61 (Computer Security Incident Handling Guide)
- ISO/IEC 27035 (Information Security Incident Management)
- SOC 2 Type II (Service Organization Controls)

---

## 11. 附录

### A. 事件记录模板

```markdown
# 事件记录

**事件编号**: INC-2026-08-02-001
**创建时间**: 2026-08-02 19:30
**创建人**: Tianhe Liu

## 基本信息
- 事件类型: [数据泄露/漏洞利用/供应链攻击/...]
- 严重等级: [P0/P1/P2/P3]
- 状态: [新开/调查中/已遏制/已解决/已关闭]

## 时间线
| 时间 | 事件 | 行动 |
|------|------|------|
| HH:MM | 事件发生 | - |
| HH:MM | 事件发现 | 描述如何发现 |
| HH:MM | 响应启动 | 描述采取的行动 |

## 影响评估
- 受影响系统:
- 受影响用户:
- 数据损失:
- 服务中断:

## 行动记录
| 时间 | 行动 | 负责人 | 结果 |
|------|------|--------|------|
| HH:MM | 行动描述 | 姓名 | 结果描述 |

## 后续跟进
- [ ] 复盘会议
- [ ] 复盘报告
- [ ] 改进措施
```

### B. 通信模板

**内部通知邮件**:
```
收件人: team@fibemate.net
主题: [安全事件] P{等级} - {事件类型}

团队，

我们检测到以下安全事件：

事件编号: INC-YYYY-MM-DD-###
严重等级: P{等级}
发生时间: YYYY-MM-DD HH:MM
当前状态: {状态}

影响范围:
{描述影响范围}

当前行动:
{描述正在采取的行动}

下一步计划:
{描述下一步行动}

请立即查看并提供支持。

维护者
Tianhe Liu
```

**用户通知邮件**:
```
收件人: affected-users@example.com
主题: FIBEMATE 安全事件通知

尊敬的用户，

我们发现在 {日期} 发生了安全事件，可能影响了您的账户。

事件概述:
{简要描述事件}

影响范围:
{描述哪些用户/数据受影响}

我们已采取的行动:
{描述已采取的响应措施}

建议您采取的行动:
{描述用户应采取的保护措施}

如果您有任何问题，请联系 security@fibemate.net。

我们为造成的不便深表歉意，并将继续加强安全措施。

FIBEMATE 团队
```

### C. 参考文档

- `README.md` - 项目概览
- `SECURITY.md` - 安全策略
- `docs/security-limitations.md` - 已知安全局限
- `docs/PQC_MIGRATION_PLAN.md` - 迁移计划
- `tools/cbom-cyclonedx.json` - CBOM 清单

---

**维护者**: Tianhe Liu (Lennonhaha)
**最后更新**: 2026-08-02
**下次审查**: 2026-11-02
**文档版本**: v1.0
