AurelienKumarathas/complete-threat-model-for-healthcare-application
GitHub: AurelienKumarathas/complete-threat-model-for-healthcare-application
一份基于多框架的医疗保健平台完整威胁模型,识别并量化25个威胁并提供控制映射。
Stars: 0 | Forks: 0
# Complete-threat-model-for-healthcare-application
医疗保健平台威胁模型,使用STRIDE、MITRE ATT&CK、网络杀伤链、攻击树、DREAD风险评分和NIST CSF控制映射。识别出6类共25个威胁。
# 完整威胁模型





## 📋 目录
- [概述](#overview)
- [建模内容](#what-was-modelled)
- [方法论](#methodology)
- [架构](#architecture)
- [威胁覆盖范围](#threat-coverage)
- [关键发现](#key-findings)
- [攻击模拟](#attack-simulation)
- [技能展示](#skills-demonstrated)
- [仓库结构](#repository-structure)
- [许可证](#license)
## 概述
**Solaris Care Connect 360** 是一个虚构的云原生医疗保健平台,基于AWS构建,提供预约挂号、患者记录(PHI)、临床笔记和第三方实验室集成功能。此项目交付了一个完整的安全威胁模型,如同安全工程师在真实产品设计阶段所产出的成果。
这不是理论练习——每个威胁、攻击路径和控制建议都反映了真实医疗数据泄露中观察到的模式(如2024年Change Healthcare、2015年Anthem、2017年NHS WannaCry)。
**目标受众:**
- 安全工程和DevSecOps招聘经理,用于审查作品集
- 构建医疗保健或受监管数据应用的开发者
- 任何学习结构化威胁建模方法论的人
## 建模内容
| 组件 | 描述 |
|------|------|
| **平台** | 基于AWS的云原生医疗保健SaaS |
| **数据敏感度** | 患者PHI数据 — 符合NHS DSPT + UK GDPR范围 |
| **用户** | 患者、医生、管理员、实验室集成 |
| **基础设施** | ECS容器、RDS PostgreSQL、API网关、S3、VPC |
| **集成** | 实验室结果数据流、NHS登录(OAuth)、电子邮件/SMS通知 |
## 方法论
按顺序应用了五种行业标准框架:
```
Data Flow Diagram → STRIDE Analysis → MITRE ATT&CK Mapping → DREAD Scoring → Control Mapping (NIST CSF)
```
| 框架 | 用途 |
|------|------|
| **DFD(数据流图)** | 映射所有系统组件、数据流和信任边界 |
| **STRIDE** | 按类型分类威胁:欺骗、篡改、否认、信息泄露、拒绝服务、提升权限 |
| **MITRE ATT&CK** | 将每个威胁映射到真实的攻击者战术和技术 |
| **DREAD** | 通过损害、可复现性、可利用性、影响用户、可发现性对每个威胁进行评分 |
| **网络杀伤链** | 建模完整攻击从侦察到数据外泄的进程 |
| **攻击树** | 可视化所有可能的攻击路径以达成攻击目标 |
| **NIST CSF** | 将控制措施映射到识别、保护、检测、响应、恢复功能 |
## 架构
系统在四个信任边界区域进行建模:
```
flowchart TD
subgraph Internet ["🌐 Untrusted Internet"]
User["Patient / Doctor
(Browser / Mobile)"] Lab["Lab System
(Third-party vendor)"] Attacker["⚠️ Threat Actor"] end subgraph DMZ ["🔶 DMZ"] APIGW["API Gateway
WAF + Rate Limiting"] Auth["Auth Service
JWT + MFA"] end subgraph AppLayer ["🔷 Application Layer"] API["REST API — Node.js
ECS Fargate"] RecordSvc["Patient Record Service"] NotifySvc["Notification Service"] end subgraph DataLayer ["🔴 Data Layer"] RDS["RDS PostgreSQL
Encrypted at rest"] S3["S3 Bucket — PHI"] Audit["Audit Log — CloudWatch"] end User -->|HTTPS| APIGW Lab -->|mTLS| APIGW Attacker -.->|Attack vector| APIGW APIGW --> Auth Auth --> API API --> RecordSvc API --> NotifySvc RecordSvc --> RDS RecordSvc --> S3 API --> Audit style Internet fill:#fffde7,color:#333,stroke:#f0c000 style DMZ fill:#fff3e0,color:#333,stroke:#ff9800 style AppLayer fill:#e8f5e9,color:#333,stroke:#4caf50 style DataLayer fill:#ffebee,color:#333,stroke:#f44336 ``` ## 威胁覆盖范围 **共识别出25个威胁**,分布在6个STRIDE类别中: | STRIDE类别 | 发现的威胁数量 | 最高DREAD评分 | 状态 | |------------|----------------|---------------|------| | **S** — 欺骗 | 4 | 8.2 | 🟡 部分控制 | | **T** — 篡改 | 5 | 9.1 | 🔴 已识别缺口 | | **R** — 否认 | 3 | 7.4 | 🟡 部分控制 | | **I** — 信息泄露 | 6 | 9.4 | 🔴 关键缺口 | | **D** — 拒绝服务 | 4 | 7.8 | 🟢 控制已部署 | | **E** — 提升权限 | 3 | 8.6 | 🔴 已识别缺口 | ### 前5大关键威胁 | 编号 | 威胁 | DREAD评分 | MITRE技术 | 控制缺口 | |------|------|-----------|-----------|----------| | 1 | 患者记录API的SQL注入 | **9.4** | T1190 | 未部署WAF | | 2 | 因访问控制失效导致的PHI外泄 | **9.1** | T1530 | IDOR未完全修复 | | 3 | 患者门户的凭证填充攻击 | **8.8** | T1110.004 | 未强制患者启用MFA | | 4 | 内部人员权限滥用 — 批量导出 | **8.6** | T1078 | 无用户行为分析 | | 5 | 通过钓鱼导致勒索软件及横向移动 | **8.4** | T1486 | 备份不可变 | ## 关键发现 ### 🔴 关键缺口(上市前阻塞项) 1. **未部署WAF** — 患者记录端点的SQL注入可在单次请求中倾倒整个数据库 2. **未对患者账户强制MFA** — 凭证填充是零技术门槛、最低努力的攻击 3. **未配置S3对象锁定** — 勒索软件攻击可破坏备份,使恢复变得不可能 4. **无用户行为分析** — 内部人员数据盗窃完全无法检测 ### 🟡 重大缺口(30天内修复) 5. IDOR漏洞允许医生查询超出其分配患者的病历 6. 审计日志存在但不可写 — 攻击者可删除访问证据 7. 客户端RBAC检查可被绕过,直接修改API请求 ## 攻击模拟 对APT(高级持续威胁)进行了完整建模 — 一个按天展示的时间线,描述了一个以获取经济利益为目的的攻击者如何从Solaris窃取10万份患者记录,从初始侦察到暗网出售: ``` Day 1 → Reconnaissance: OSINT on LinkedIn, job postings, GitHub Day 3 → Target: IT admin email identified Day 5 → Delivery: Spearphishing email with malicious PDF macro Day 5 → Exploitation: Reverse shell established Day 6 → Credential harvest: VPN credentials found in email Day 7 → Lateral movement: Database server reached Day 8 → Exfiltration: 100,000 records exported via HTTPS Day 9 → Cover: Logs deleted, backdoor removed Day 30 → Discovery: Breach found during audit (21-day gap) ``` **无控制措施时:** 10万条记录外泄,21天的检测空白期,需履行GDPR违规通知。 **部署所有推荐控制措施后:** 攻击链在第5天被阻断(邮件沙箱在投递前引爆PDF宏)。 完整的模拟及检测点分析位于 [`reports/attack-simulation.md`](reports/attack-simulation.md)。 ## 技能展示 ### 安全工程 - **威胁建模(STRIDE):** 系统化识别并分类25个威胁,应用于真实的云架构 - **风险评分(DREAD):** 量化风险评分以确定优先修复顺序 — 最高评分威胁(SQLi,9.4)被识别为上市前阻塞项 - **攻击树分析:** 多路径攻击目标分解,使用AND/OR节点逻辑识别最低努力攻击路径(凭证填充,无需任何技术技能) - **MITRE ATT&CK映射:** 每个威胁均映射到具体的ATT&CK技术,便于制定检测规则和红队场景规划 ### DevSecOps与安全架构 - **安全设计:** 在架构阶段推荐控制措施而非事后补救,体现左移安全思维 - **NIST CSF控制映射:** 将全部25个威胁映射到NIST CSF功能(识别、保护、检测、响应、恢复),并跟踪实施状态 - **合规意识:** 应用NHS DSPT强制标准和UK GDPR第32条义务 — 漏洞通报时限、数据最小化和访问控制要求均反映在控制建议中 - **不可变基础设施安全:** AWS特定建议,包括S3对象锁定、CloudTrail日志完整性、VPC流日志分析 ### 文档与沟通 - **面向高管的风险登记册:** 按DREAD评分组织的风险登记册,同时适用于技术团队和非技术利益相关者 - **网络杀伤链分析:** 为每个威胁记录完整的杀伤链,支持检测工程和事件响应规划 - **APT模拟:** 真实的按天攻击时间线,展示对真实攻击行为和驻留时间的理解 ## 仓库 ``` Complete-threat-model-for-healthcare-application/ │ ├── README.md # Project overview and documentation │ ├── diagrams/ │ ├── architecture.md # System architecture and trust boundaries │ ├── attack-trees.md # Attack trees for all attacker goals │ ├── dfd-level0.md # Level 0 Data Flow Diagram (context) │ └── dfd-level1.md # Level 1 Data Flow Diagram (detail) │ ├── reports/ │ ├── solaris-layer.json # Structured threat data (machine-readable) │ └── threat-model-report.md # Full consolidated threat model report │ └── templates/ ├── kill-chain-analysis.md # Cyber Kill Chain per attack scenario ├── mitre-mapping.md # MITRE ATT&CK technique mapping ├── risk-register.md # DREAD-scored risk register (25 threats) ├── security-control-mapping.md # NIST CSF control mapping and gap analysis └── stride-threats.md # STRIDE threat catalogue ``` ## 许可证 MIT许可证 — 详见 [LICENSE](LICENSE)。
(Browser / Mobile)"] Lab["Lab System
(Third-party vendor)"] Attacker["⚠️ Threat Actor"] end subgraph DMZ ["🔶 DMZ"] APIGW["API Gateway
WAF + Rate Limiting"] Auth["Auth Service
JWT + MFA"] end subgraph AppLayer ["🔷 Application Layer"] API["REST API — Node.js
ECS Fargate"] RecordSvc["Patient Record Service"] NotifySvc["Notification Service"] end subgraph DataLayer ["🔴 Data Layer"] RDS["RDS PostgreSQL
Encrypted at rest"] S3["S3 Bucket — PHI"] Audit["Audit Log — CloudWatch"] end User -->|HTTPS| APIGW Lab -->|mTLS| APIGW Attacker -.->|Attack vector| APIGW APIGW --> Auth Auth --> API API --> RecordSvc API --> NotifySvc RecordSvc --> RDS RecordSvc --> S3 API --> Audit style Internet fill:#fffde7,color:#333,stroke:#f0c000 style DMZ fill:#fff3e0,color:#333,stroke:#ff9800 style AppLayer fill:#e8f5e9,color:#333,stroke:#4caf50 style DataLayer fill:#ffebee,color:#333,stroke:#f44336 ``` ## 威胁覆盖范围 **共识别出25个威胁**,分布在6个STRIDE类别中: | STRIDE类别 | 发现的威胁数量 | 最高DREAD评分 | 状态 | |------------|----------------|---------------|------| | **S** — 欺骗 | 4 | 8.2 | 🟡 部分控制 | | **T** — 篡改 | 5 | 9.1 | 🔴 已识别缺口 | | **R** — 否认 | 3 | 7.4 | 🟡 部分控制 | | **I** — 信息泄露 | 6 | 9.4 | 🔴 关键缺口 | | **D** — 拒绝服务 | 4 | 7.8 | 🟢 控制已部署 | | **E** — 提升权限 | 3 | 8.6 | 🔴 已识别缺口 | ### 前5大关键威胁 | 编号 | 威胁 | DREAD评分 | MITRE技术 | 控制缺口 | |------|------|-----------|-----------|----------| | 1 | 患者记录API的SQL注入 | **9.4** | T1190 | 未部署WAF | | 2 | 因访问控制失效导致的PHI外泄 | **9.1** | T1530 | IDOR未完全修复 | | 3 | 患者门户的凭证填充攻击 | **8.8** | T1110.004 | 未强制患者启用MFA | | 4 | 内部人员权限滥用 — 批量导出 | **8.6** | T1078 | 无用户行为分析 | | 5 | 通过钓鱼导致勒索软件及横向移动 | **8.4** | T1486 | 备份不可变 | ## 关键发现 ### 🔴 关键缺口(上市前阻塞项) 1. **未部署WAF** — 患者记录端点的SQL注入可在单次请求中倾倒整个数据库 2. **未对患者账户强制MFA** — 凭证填充是零技术门槛、最低努力的攻击 3. **未配置S3对象锁定** — 勒索软件攻击可破坏备份,使恢复变得不可能 4. **无用户行为分析** — 内部人员数据盗窃完全无法检测 ### 🟡 重大缺口(30天内修复) 5. IDOR漏洞允许医生查询超出其分配患者的病历 6. 审计日志存在但不可写 — 攻击者可删除访问证据 7. 客户端RBAC检查可被绕过,直接修改API请求 ## 攻击模拟 对APT(高级持续威胁)进行了完整建模 — 一个按天展示的时间线,描述了一个以获取经济利益为目的的攻击者如何从Solaris窃取10万份患者记录,从初始侦察到暗网出售: ``` Day 1 → Reconnaissance: OSINT on LinkedIn, job postings, GitHub Day 3 → Target: IT admin email identified Day 5 → Delivery: Spearphishing email with malicious PDF macro Day 5 → Exploitation: Reverse shell established Day 6 → Credential harvest: VPN credentials found in email Day 7 → Lateral movement: Database server reached Day 8 → Exfiltration: 100,000 records exported via HTTPS Day 9 → Cover: Logs deleted, backdoor removed Day 30 → Discovery: Breach found during audit (21-day gap) ``` **无控制措施时:** 10万条记录外泄,21天的检测空白期,需履行GDPR违规通知。 **部署所有推荐控制措施后:** 攻击链在第5天被阻断(邮件沙箱在投递前引爆PDF宏)。 完整的模拟及检测点分析位于 [`reports/attack-simulation.md`](reports/attack-simulation.md)。 ## 技能展示 ### 安全工程 - **威胁建模(STRIDE):** 系统化识别并分类25个威胁,应用于真实的云架构 - **风险评分(DREAD):** 量化风险评分以确定优先修复顺序 — 最高评分威胁(SQLi,9.4)被识别为上市前阻塞项 - **攻击树分析:** 多路径攻击目标分解,使用AND/OR节点逻辑识别最低努力攻击路径(凭证填充,无需任何技术技能) - **MITRE ATT&CK映射:** 每个威胁均映射到具体的ATT&CK技术,便于制定检测规则和红队场景规划 ### DevSecOps与安全架构 - **安全设计:** 在架构阶段推荐控制措施而非事后补救,体现左移安全思维 - **NIST CSF控制映射:** 将全部25个威胁映射到NIST CSF功能(识别、保护、检测、响应、恢复),并跟踪实施状态 - **合规意识:** 应用NHS DSPT强制标准和UK GDPR第32条义务 — 漏洞通报时限、数据最小化和访问控制要求均反映在控制建议中 - **不可变基础设施安全:** AWS特定建议,包括S3对象锁定、CloudTrail日志完整性、VPC流日志分析 ### 文档与沟通 - **面向高管的风险登记册:** 按DREAD评分组织的风险登记册,同时适用于技术团队和非技术利益相关者 - **网络杀伤链分析:** 为每个威胁记录完整的杀伤链,支持检测工程和事件响应规划 - **APT模拟:** 真实的按天攻击时间线,展示对真实攻击行为和驻留时间的理解 ## 仓库 ``` Complete-threat-model-for-healthcare-application/ │ ├── README.md # Project overview and documentation │ ├── diagrams/ │ ├── architecture.md # System architecture and trust boundaries │ ├── attack-trees.md # Attack trees for all attacker goals │ ├── dfd-level0.md # Level 0 Data Flow Diagram (context) │ └── dfd-level1.md # Level 1 Data Flow Diagram (detail) │ ├── reports/ │ ├── solaris-layer.json # Structured threat data (machine-readable) │ └── threat-model-report.md # Full consolidated threat model report │ └── templates/ ├── kill-chain-analysis.md # Cyber Kill Chain per attack scenario ├── mitre-mapping.md # MITRE ATT&CK technique mapping ├── risk-register.md # DREAD-scored risk register (25 threats) ├── security-control-mapping.md # NIST CSF control mapping and gap analysis └── stride-threats.md # STRIDE threat catalogue ``` ## 许可证 MIT许可证 — 详见 [LICENSE](LICENSE)。
标签:AWS, Cloudflare, Cyber Kill Chain, DevSecOps, DPI, DREAD 风险评分, MITRE ATT&CK, NHS DSPT, NIST CSF, PHI, Solaris Care Connect 360, STRIDE, 上游代理, 临床笔记, 云平台安全, 医疗健康, 合规, 威胁建模, 安全工程, 安全徽章, 安全设计, 攻击树, 攻击路径, 第三方集成, 预约系统, 风险控制