# 控制安全建模分析法

## 核心公式

缺失类漏洞 = 敏感操作 - 应有控制 或 敏感操作 + 控制失效绕过

敏感操作存在，但应有的安全控制缺失 = 漏洞

机制缺陷导致控制绕过 = 漏洞

## 安全控制建模&控制存在/有效性验证

### 敏感操作分类

| 类别         | 识别特征                             | 典型示例              | 风险等级 |
| ------------ | ------------------------------------ | --------------------- | -------- |
| **数据修改** | POST/PUT/DELETE                      | 创建/修改/删除        | 高       |
| **数据访问** | GET + ID参数                         | /user/{id} /用户/{id} | 中       |
| **批量操作** | export/download/batch 导出/下载/批量 | 导出/批量删除         | 高       |
| **权限变更** | role/permission/grant 角色/权限/授予 | 角色/权限分配         | 严重     |
| **资金操作** | transfer/pay/refund 转账/付款/退款   | 转账/支付/退款        | 严重     |
| **认证操作** | login/password/token 登录/密码/令牌  | 登录/密码重置         | 严重     |

### 安全控制矩阵

| 敏感操作类型 | 必须控制                         | 可选控制 |
| ------------ | -------------------------------- | -------- |
| **数据修改** | 认证、授权、资源所有权、输入验证 | 审计日志 |
| **数据访问** | 认证、资源所有权/范围限制        | 数据脱敏 |
| **批量操作** | 认证、授权、数量限制             | 频率限制 |
| **权限变更** | 认证、高级授权、权限边界检查     | 审批流程 |
| **资金操作** | 认证、授权、幂等性、并发控制     | 风控检查 |
| **认证操作** | 幂等性、频率限制                 | 并发控制 |

### 缺失控制 → 漏洞映射

| 缺失控制       | 漏洞类型       | CWE     |
| -------------- | -------------- | ------- |
| 认证缺失       | 认证绕过       | CWE-306 |
| 授权缺失       | 功能级授权缺失 | CWE-862 |
| 资源所有权缺失 | IDOR           | CWE-639 |
| 授权逻辑错误   | 授权错误       | CWE-863 |
| 幂等性缺失     | 重放攻击       | CWE-294 |
| 并发控制缺失   | 竞态条件       | CWE-362 |
| 频率限制缺失   | 暴力破解、洪水攻击 |  ...  |

### 控制机制缺陷 → 机制绕过

- **验证码状态未失效**: 验证码校验成功后，排查未将其从缓存中删除或未标记为作废的状态控制遗漏（导致同一个验证码被多次复用）。
- **输入未绑定**: 审查敏感操作二次认证中（如资金转账、修改密码等），目标手机号/邮箱完全信任前端传入参数，未与当前登录用户会话身份进行绑定的逻辑缺陷（导致二次鉴权失效）。
- **认证步骤绕过**：审查多步操作（如找回密码流程：1.验证手机 -> 2.输入验证码 -> 3.重置密码）中，关键步骤仅依赖前端传入参数（如 `step=3`）决定执行流程，而未在后端强校验用户已完成前置步骤的逻辑跳跃漏洞。
- **校验返回错误**: 检查鉴权失败或Token无效的分支中，代码仅记录日志，输出错误信息或重新赋值创建token/session，而**未写 `return`、`raise` 彻底阻断执行流**，导致后续敏感代码继续执行的短路缺陷。


## 注意事项

! 对于认证、授权类问题，注意横向对比同模块的其他方法实现
! 注意分析控制机制是否存在逻辑缺陷，可导致机制被绕过
