资讯动态

stride-analysis-patterns - implementation-playbook

发布时间:2026/10/17 14:50:58 来源:尧图企业网站定制
STRIDE 分析模式实施手册本文件包含技能引用的详细模式、检查清单和代码示例。STRIDE 分析模式使用 STRIDE 方法论进行系统性的威胁识别。何时使用本技能开始新的威胁建模会话分析现有系统架构审查安全设计决策创建威胁文档培训团队进行威胁识别合规与审计准备核心概念1. STRIDE 类别S - Spoofing欺骗 → 认证威胁 T - Tampering篡改 → 完整性威胁 R - Repudiation抵赖 → 不可否认性威胁 I - Information → 机密性威胁 Disclosure信息泄露 D - Denial of → 可用性威胁 Service拒绝服务 E - Elevation of → 授权威胁 Privilege权限提升2. 威胁分析矩阵类别问题控制族欺骗攻击者能否冒充他人认证篡改攻击者能否修改传输中/存储中的数据完整性抵赖攻击者能否否认其操作日志/审计信息泄露攻击者能否访问未经授权的数据加密拒绝服务攻击者能否破坏可用性速率限制权限提升攻击者能否获得更高权限授权模板模板 1STRIDE 威胁模型文档# 威胁模型[系统名称] ## 1. 系统概述 ### 1.1 描述 [系统的简要描述及其用途] ### 1.2 数据流图[用户] -- [Web 应用] -- [API 网关] -- [后端服务]|v[数据库]### 1.3 信任边界 - **外部边界**互联网到 DMZ - **内部边界**DMZ 到内部网络 - **数据边界**应用到数据库 ## 2. 资产 | 资产 | 敏感性 | 描述 | |-------|-------------|-------------| | 用户凭据 | 高 | 认证令牌、密码 | | 个人数据 | 高 | 个人身份信息、财务信息 | | 会话数据 | 中 | 活跃用户会话 | | 应用日志 | 中 | 系统活动记录 | | 配置 | 高 | 系统设置、机密信息 | ## 3. STRIDE 分析 ### 3.1 欺骗威胁 | ID | 威胁 | 目标 | 影响 | 可能性 | |----|--------|--------|--------|------------| | S1 | 会话劫持 | 用户会话 | 高 | 中 | | S2 | 令牌伪造 | JWT 令牌 | 高 | 低 | | S3 | 撞库攻击 | 登录端点 | 高 | 高 | **缓解措施** - [ ] 实施多因素认证MFA - [ ] 使用安全的会话管理 - [ ] 实施账户锁定策略 ### 3.2 篡改威胁 | ID | 威胁 | 目标 | 影响 | 可能性 | |----|--------|--------|--------|------------| | T1 | SQL 注入 | 数据库查询 | 严重 | 中 | | T2 | 参数篡改 | API 请求 | 高 | 高 | | T3 | 文件上传滥用 | 文件存储 | 高 | 中 | **缓解措施** - [ ] 对所有端点进行输入校验 - [ ] 使用参数化查询 - [ ] 文件类型校验 ### 3.3 抵赖威胁 | ID | 威胁 | 目标 | 影响 | 可能性 | |----|--------|--------|--------|------------| | R1 | 交易否认 | 财务操作 | 高 | 中 | | R2 | 访问日志篡改 | 审计日志 | 中 | 低 | | R3 | 操作归属 | 用户操作 | 中 | 中 | **缓解措施** - [ ] 全面的审计日志记录 - [ ] 日志完整性保护 - [ ] 对关键操作使用数字签名 ### 3.4 信息泄露威胁 | ID | 威胁 | 目标 | 影响 | 可能性 | |----|--------|--------|--------|------------| | I1 | 数据泄露 | 用户个人身份信息 | 严重 | 中 | | I2 | 错误消息泄露 | 系统信息 | 低 | 高 | | I3 | 不安全传输 | 网络流量 | 高 | 中 | **缓解措施** - [ ] 静态和传输中的加密 - [ ] 清理错误消息 - [ ] 实施 TLS 1.3 ### 3.5 拒绝服务威胁 | ID | 威胁 | 目标 | 影响 | 可能性 | |----|--------|--------|--------|------------| | D1 | 资源耗尽 | API 服务器 | 高 | 高 | | D2 | 数据库过载 | 数据库 | 严重 | 中 | | D3 | 带宽饱和 | 网络 | 高 | 中 | **缓解措施** - [ ] 速率限制 - [ ] 自动扩缩容 - [ ] DDoS 防护 ### 3.6 权限提升威胁 | ID | 威胁 | 目标 | 影响 | 可能性 | |----|--------|--------|--------|------------| | E1 | IDOR 漏洞 | 用户资源 | 高 | 高 | | E2 | 角色篡改 | 管理员访问 | 严重 | 低 | | E3 | JWT 声明篡改 | 授权 | 高 | 中 | **缓解措施** - [ ] 正确的授权检查 - [ ] 最小权限原则 - [ ] 服务端角色验证 ## 4. 风险评估 ### 4.1 风险矩阵影响 低 中 高 严重低 1 2 3 4可 中 2 4 6 8能 高 3 6 9 12性 严重 4 8 12 16### 4.2 优先级排序的风险 | 排名 | 威胁 | 风险评分 | 优先级 | |------|--------|------------|----------| | 1 | SQL 注入T1 | 12 | 严重 | | 2 | IDORE1 | 9 | 高 | | 3 | 撞库攻击S3 | 9 | 高 | | 4 | 数据泄露I1 | 8 | 高 | ## 5. 建议 ### 立即行动 1. 实施输入校验框架 2. 为认证端点添加速率限制 3. 启用全面的审计日志记录 ### 短期30 天 1. 部署带 OWASP 规则集的 WAF 2. 对敏感操作实施多因素认证MFA 3. 加密所有静态存储的个人身份信息 ### 长期90 天 1. 安全意识培训 2. 渗透测试 3. 漏洞赏金计划模板 2STRIDE 分析代码fromdataclassesimportdataclass,fieldfromenumimportEnumfromtypingimportList,Dict,OptionalimportjsonclassStrideCategory(Enum):SPOOFINGSTAMPERINGTREPUDIATIONRINFORMATION_DISCLOSUREIDENIAL_OF_SERVICEDELEVATION_OF_PRIVILEGEEclassImpact(Enum):LOW1MEDIUM2HIGH3CRITICAL4classLikelihood(Enum):LOW1MEDIUM2HIGH3CRITICAL4dataclassclassThreat:id:strcategory:StrideCategory title:strdescription:strtarget:strimpact:Impact likelihood:Likelihood mitigations:List[str]field(default_factorylist)status:stropenpropertydefrisk_score(self)-int:returnself.impact.value*self.likelihood.valuepropertydefrisk_level(self)-str:scoreself.risk_scoreifscore12:returnCriticalelifscore6:returnHighelifscore3:returnMediumreturnLowdataclassclassAsset:name:strsensitivity:strdescription:strdata_classification:strdataclassclassTrustBoundary:name:strdescription:strfrom_zone:strto_zone:strdataclassclassThreatModel:name:strversion:strdescription:strassets:List[Asset]field(default_factorylist)boundaries:List[TrustBoundary]field(default_factorylist)threats:List[Threat]field(default_factorylist)defadd_threat(self,threat:Threat)-None:self.threats.append(threat)defget_threats_by_category(self,category:StrideCategory)-List[Threat]:return[tfortinself.threatsift.categorycategory]defget_critical_threats(self)-List[Threat]:return[tfortinself.threatsift.risk_levelin(Critical,High)]defgenerate_report(self)-Dict:生成威胁模型报告。return{summary:{name:self.name,version:self.version,total_threats:len(self.threats),critical_threats:len([tfortinself.threatsift.risk_levelCritical]),high_threats:len([tfortinself.threatsift.risk_levelHigh]),},by_category:{cat.name:len(self.get_threats_by_category(cat))forcatinStrideCategory},top_risks:[{id:t.id,title:t.title,risk_score:t.risk_score,risk_level:t.risk_level}fortinsorted(self.threats,keylambdax:x.risk_score,reverseTrue)[:10]]}classStrideAnalyzer:自动化的 STRIDE 分析辅助工具。STRIDE_QUESTIONS{StrideCategory.SPOOFING:[Can an attacker impersonate a legitimate user?,Are authentication tokens properly validated?,Can session identifiers be predicted or stolen?,Is multi-factor authentication available?,],StrideCategory.TAMPERING:[Can data be modified in transit?,Can data be modified at rest?,Are input validation controls sufficient?,Can an attacker manipulate application logic?,],StrideCategory.REPUDIATION:[Are all security-relevant actions logged?,Can logs be tampered with?,Is there sufficient attribution for actions?,Are timestamps reliable and synchronized?,],StrideCategory.INFORMATION_DISCLOSURE:[Is sensitive data encrypted at rest?,Is sensitive data encrypted in transit?,Can error messages reveal sensitive information?,Are access controls properly enforced?,],StrideCategory.DENIAL_OF_SERVICE:[Are rate limits implemented?,Can resources be exhausted by malicious input?,Is there protection against amplification attacks?,Are there single points of failure?,],StrideCategory.ELEVATION_OF_PRIVILEGE:[Are authorization checks performed consistently?,Can users access other users resources?,Can privilege escalation occur through parameter manipulation?,Is the principle of least privilege followed?,],}defgenerate_questionnaire(self,component:str)-List[Dict]:为组件生成 STRIDE 问卷。questionnaire[]forcategory,questionsinself.STRIDE_QUESTIONS.items():forqinquestions:questionnaire.append({component:component,category:category.name,question:q,answer:None,notes:})returnquestionnairedefsuggest_mitigations(self,category:StrideCategory)-List[str]:为某个 STRIDE 类别建议常见缓解措施。mitigations{StrideCategory.SPOOFING:[Implement multi-factor authentication,Use secure session management,Implement account lockout policies,Use cryptographically secure tokens,Validate authentication at every request,],StrideCategory.TAMPERING:[Implement input validation,Use parameterized queries,Apply integrity checks (HMAC, signatures),Implement Content Security Policy,Use immutable infrastructure,],StrideCategory.REPUDIATION:[Enable comprehensive audit logging,Protect log integrity,Implement digital signatures,Use centralized, tamper-evident logging,Maintain accurate timestamps,],StrideCategory.INFORMATION_DISCLOSURE:[Encrypt data at rest and in transit,Implement proper access controls,Sanitize error messages,Use secure defaults,Implement data classification,],StrideCategory.DENIAL_OF_SERVICE:[Implement rate limiting,Use auto-scaling,Deploy DDoS protection,Implement circuit breakers,Set resource quotas,],StrideCategory.ELEVATION_OF_PRIVILEGE:[Implement proper authorization,Follow principle of least privilege,Validate permissions server-side,Use role-based access control,Implement security boundaries,],}returnmitigations.get(category,[])模板 3数据流图分析fromdataclassesimportdataclassfromtypingimportList,Set,TuplefromenumimportEnumclassElementType(Enum):EXTERNAL_ENTITYexternalPROCESSprocessDATA_STOREdatastoreDATA_FLOWdataflowdataclassclassDFDElement:id:strname:strtype:ElementType trust_level:int# 0 不可信数值越大越可信description:strdataclassclassDataFlow:id:strname:strsource:strdestination:strdata_type:strprotocol:strencrypted:boolFalseclassDFDAnalyzer:分析数据流图以识别 STRIDE 威胁。def__init__(self):self.elements:Dict[str,DFDElement]{}self.flows:List[DataFlow][]defadd_element(self,element:DFDElement)-None:self.elements[element.id]elementdefadd_flow(self,flow:DataFlow)-None:self.flows.append(flow)deffind_trust_boundary_crossings(self)-List[Tuple[DataFlow,int]]:找出跨越信任边界的数据流。crossings[]forflowinself.flows:sourceself.elements.get(flow.source)destself.elements.get(flow.destination)ifsourceanddestandsource.trust_level!dest.trust_level:trust_diffabs(source.trust_level-dest.trust_level)crossings.append((flow,trust_diff))returnsorted(crossings,keylambdax:x[1],reverseTrue)defidentify_threats_per_element(self)-Dict[str,List[StrideCategory]]:将适用的 STRIDE 类别映射到元素类型。threat_mapping{ElementType.EXTERNAL_ENTITY:[StrideCategory.SPOOFING,StrideCategory.REPUDIATION,],ElementType.PROCESS:[StrideCategory.SPOOFING,StrideCategory.TAMPERING,StrideCategory.REPUDIATION,StrideCategory.INFORMATION_DISCLOSURE,StrideCategory.DENIAL_OF_SERVICE,StrideCategory.ELEVATION_OF_PRIVILEGE,],ElementType.DATA_STORE:[StrideCategory.TAMPERING,StrideCategory.REPUDIATION,StrideCategory.INFORMATION_DISCLOSURE,StrideCategory.DENIAL_OF_SERVICE,],ElementType.DATA_FLOW:[StrideCategory.TAMPERING,StrideCategory.INFORMATION_DISCLOSURE,StrideCategory.DENIAL_OF_SERVICE,],}result{}forelem_id,eleminself.elements.items():result[elem_id]threat_mapping.get(elem.type,[])returnresultdefanalyze_unencrypted_flows(self)-List[DataFlow]:找出跨越信任边界的未加密数据流。risky_flows[]forflowinself.flows:ifnotflow.encrypted:sourceself.elements.get(flow.source)destself.elements.get(flow.destination)ifsourceanddestandsource.trust_level!dest.trust_level:risky_flows.append(flow)returnrisky_flowsdefgenerate_threat_enumeration(self)-List[Dict]:生成全面的威胁枚举。threats[]element_threatsself.identify_threats_per_element()forelem_id,categoriesinelement_threats.items():elemself.elements[elem_id]forcategoryincategories:threats.append({element_id:elem_id,element_name:elem.name,element_type:elem.type.value,stride_category:category.name,description:f{category.name}threat against{elem.name},trust_level:elem.trust_level})returnthreats模板 4按交互应用 STRIDEfromtypingimportList,Dict,OptionalfromdataclassesimportdataclassdataclassclassInteraction:表示两个组件之间的交互。id:strsource:strtarget:straction:strdata:strprotocol:strclassStridePerInteraction:对系统中的每个交互应用 STRIDE。INTERACTION_THREATS{# 源类型 - 目标类型 - 适用的威胁(external,process):{S:External entity spoofing identity to process,T:Tampering with data sent to process,R:External entity denying sending data,I:Data exposure during transmission,D:Flooding process with requests,E:Exploiting process to gain privileges,},(process,datastore):{T:Process tampering with stored data,R:Process denying data modifications,I:Unauthorized data access by process,D:Process exhausting storage resources,},(process,process):{S:Process spoofing another process,T:Tampering with inter-process data,I:Data leakage between processes,D:One process overwhelming another,E:Process gaining elevated access,},}defanalyze_interaction(self,interaction:Interaction,source_type:str,target_type:str)-List[Dict]:分析单个交互中的 STRIDE 威胁。threats[]key(source_type,target_type)applicable_threatsself.INTERACTION_THREATS.get(key,{})forstride_code,descriptioninapplicable_threats.items():threats.append({interaction_id:interaction.id,source:interaction.source,target:interaction.target,stride_category:stride_code,threat_description:description,context:f{interaction.action}-{interaction.data},})returnthreatsdefgenerate_threat_matrix(self,interactions:List[Interaction],element_types:Dict[str,str])-List[Dict]:为所有交互生成完整的威胁矩阵。all_threats[]forinteractionininteractions:source_typeelement_types.get(interaction.source,unknown)target_typeelement_types.get(interaction.target,unknown)threatsself.analyze_interaction(interaction,source_type,target_type)all_threats.extend(threats)returnall_threats最佳实践应该做的让利益相关者参与- 安全、开发和运维的视角系统化推进- 覆盖所有 STRIDE 类别务实排序- 聚焦高影响威胁定期更新- 威胁模型是活文档使用可视化辅助- 数据流图有助于沟通不该做的不要跳过类别- 每个类别都会揭示不同的威胁不要假设安全- 质疑每个组件不要孤立工作- 协作建模效果更好不要忽视低概率威胁- 高影响的威胁同样重要不要止步于识别- 要跟进缓解措施资源Microsoft STRIDE 文档OWASP 威胁建模威胁建模为安全而设计

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑