security-threat-model 技能实战:基于仓库证据的 AppSec 级威胁建模全流程指南
security-threat-model 技能实战基于仓库证据的 AppSec 级威胁建模全流程指南【免费下载链接】skillsSkills Catalog for Codex项目地址: https://gitcode.com/GitHub_Trending/skills4/skills本指南围绕 Codex 技能目录Skills Catalog中的security-threat-model技能展开系统讲解如何基于仓库真实代码证据产出可供 AppSec 工程师直接使用的威胁模型从收集输入、提取系统模型、划定信任边界与资产、枚举滥用路径abuse paths到风险定级、用户澄清、缓解建议与最终报告格式。读完本文你将掌握一套可复制的仓库扎根型repo-grounded威胁建模工作流并理解其配套 Prompt 模板与输出契约的每个细节。该技能位于 skills/.curated/security-threat-model/SKILL.md其核心主张是交付具体到某个仓库或项目路径、而非泛化检查清单的、可落地的 AppSec 级威胁模型。所有架构结论必须以仓库中的证据为锚点假设必须显式保留并优先关注真实攻击者目标与具体影响。技能定位与触发条件security-threat-model是一个供 Codex 等 Agent 使用的技能Skill其元数据声明在 SKILL.md 的 frontmatter 中name:security-threat-modeldescription: 基于仓库的威胁建模——枚举信任边界、资产、攻击者能力、滥用路径与缓解措施并输出一份简洁的 Markdown 威胁模型。触发条件非常明确仅当用户显式要求对某个代码库或路径进行威胁建模、枚举威胁/滥用路径或执行 AppSec 威胁建模时触发不得为一般的架构总结、代码评审或非安全设计工作而触发。这条纪律确保了技能不会被误用为通用代码分析工具。技能还提供了 Agent 界面配置 agents/openai.yaml其中声明了展示名称Security Threat Model简短描述Repo-grounded threat modeling and abuse-path analysis基于仓库的威胁建模与滥用路径分析默认提示词Create a repository-grounded threat model for this codebase with prioritized abuse paths and mitigations.为该代码库创建基于仓库的威胁模型包含按优先级排序的滥用路径与缓解措施这意味着在 Codex 中Agent 可以按名称发现并调用该技能一条默认提示词即可启动整个威胁建模流程。快速开始收集或推断输入技能的第一步是准备输入主要包括四类信息仓库根路径与所有范围内的路径in-scope paths预期用途、部署模型、互联网暴露面、认证/授权预期如已知任何已有的仓库摘要或架构规格文档使用references/prompt-template.md中提供的提示词生成仓库摘要并逐字遵循其中的输出契约。输入质量直接决定威胁模型的质量——尤其是预期用途与暴露面这类服务上下文service context它们影响攻击者模型和风险定级。若上下文缺失技能要求将其显式标记为假设而不是静默猜测。配套的 references/prompt-template.md 提供了两段提示词来支撑这一环节仓库摘要提示词Repository summary prompt要求以帮助后续安全工程师快速理解系统、足以构建初步威胁模型并调查潜在安全假设为目标产出安全导向的仓库摘要覆盖项目概览主要语言、框架、构建系统、核心目的、高层架构、主要组件及其交互方式安全态势与入口点用户入口点、信任边界、现有安全层认证、授权、校验、沙箱、隔离、权限边界以及系统要保持安全就必须成立的安全关键组件与假设。摘要还需按项目类型适配分析重点Web 应用请求如何进入、用户数据如何被解析、路由、认证与存储命令行工具支持的输入参数、文件、环境变量、stdin及其处理方式网络守护进程暴露的端口、支持的协议、消息格式与请求处理路径操作系统或底层组件可能通向本地提权LPE或远程代码执行RCE的常见漏洞类别如内存破坏、逻辑缺陷。工具层面提示词建议如果 Ripgreprg可用就用它探索代码库使用grep/rg时始终携带-I标志以避免搜索二进制文件。八步工作流从系统模型到最终报告SKILL.md 定义了八个步骤构成完整闭环1) 界定范围并提取系统模型Scope and extract the system model从仓库摘要中识别主要组件、数据存储与外部集成判断系统的运行形态服务器 / CLI / 库 / worker及其入口点将运行时行为与 CI/构建/开发工具链、测试与示例严格分离把范围内的位置映射到对应组件并显式排除范围外内容没有证据就不声称存在某个组件、流程或控制措施。2) 推导信任边界、资产与入口点Derive boundaries, assets, and entry points将信任边界枚举为组件之间具体的边edge并注明协议、认证、加密、校验与速率限制列出驱动风险的资产数据、凭据、模型、配置、计算资源、审计日志识别入口点端点、上传面、解析器/解码器、任务触发、管理工具、日志/错误汇聚点。3) 校准资产与攻击者能力Calibrate assets and attacker capabilities列出驱动风险的资产凭据、PII、完整性关键状态、可用性关键组件、构建产物基于暴露面与预期用途描述现实可行的攻击者能力显式注明攻击者不具备的能力non-capabilities避免人为抬高严重性。4) 将威胁枚举为滥用路径Enumerate threats as abuse paths优先采用能映射到资产与边界的攻击者目标数据外泄、提权、完整性破坏、拒绝服务对每个威胁分类并关联到受影响的资产威胁数量保持小而精追求高质量而非数量堆砌。5) 用显式的可能性与影响推理来定优先级Prioritize with explicit likelihood and impact reasoning采用定性的可能性与影响低/中/高并附简短论证用可能性 × 影响计算总体优先级critical/high/medium/low并根据已有控制措施进行调整明确指出哪些假设对排序影响最大。6) 与用户校验服务上下文与假设Validate service context and assumptions汇总对威胁排序或范围有实质影响的关键假设请用户确认或纠正提出13 个针对性问题以补齐缺失上下文服务所有者与环境、规模/用户数、部署模型、认证/授权、互联网暴露面、数据敏感度、多租户暂停并等待用户反馈再产出最终报告若用户拒绝或无法回答则说明哪些假设仍然保留以及它们如何影响优先级。7) 推荐缓解措施与聚焦路径Recommend mitigations and focus paths区分已有缓解措施附证据与推荐缓解措施将缓解措施绑定到具体位置组件、边界或入口点与控制类型授权检查、输入校验、模式强制、沙箱、速率限制、密钥隔离、审计日志偏好具体的实现提示而非泛泛建议——例如在网关处对上传载荷强制执行 schema优于校验输入建议要基于已确认的用户上下文若假设仍未解决将建议标记为条件性conditional。8) 定稿前运行质量检查Run a quality check before finalizing确认所有发现的入口点都已覆盖确认每个信任边界都在威胁中有所体现确认运行时与 CI/开发环境的分离确认用户澄清或明确的不回应已反映在报告中确认假设与开放问题都已显式列出确认报告格式与 references/prompt-template.md 定义的必需输出格式高度一致将最终 Markdown写入名为repo-or-dir-name-threat-model.md的文件使用仓库根目录的 basename若被要求建模某个子路径则用该范围内目录的 basename。风险定级参考illustrative非穷举SKILL.md 给出了定级的方向性指引明确标注为示例性、非穷举High高预认证 RCE、认证绕过、跨租户访问、敏感数据外泄、密钥或令牌窃取、模型或配置完整性受损、沙箱逃逸Medium中对关键组件的针对性 DoS、部分数据暴露、可度量影响的速率限制绕过、影响检测能力的日志/指标投毒Low低低敏感度信息泄露、易缓解的嘈杂 DoS、需要极不可能前提条件的问题。这套参考的价值在于统一不同团队、不同报告之间的定级口径但最终定级必须结合具体仓库的资产与暴露面做校准对应输出契约中的 Criticality calibration 小节。输出契约Prompt 模板与必需报告结构references/prompt-template.md 是技能的核心配套定义了系统提示词、用户任务提示词与精确的最终报告格式是整个流程可复现、输出一致的保证。系统提示词System prompt证据与纪律系统提示词把模型设定为面向其他 AppSec 工程师的资深应用安全工程师核心规则包括证据与锚定不得凭空发明组件、数据存储、端点、流程或控制每条架构主张必须至少有一个证据锚点Evidence anchor引用仓库路径尽量附带符号名、配置键或简短引用片段信息缺失时显式陈述假设并列出验证假设所需的开放问题安全卫生绝不输出秘密。若遇到令牌/密钥/密码一律脱敏只描述其存在位置建模方法用数据流与信任边界建模枚举威胁并产出攻击目标与滥用路径用显式的可能性/影响推理定优先级定性低/中/高可接受范围纪律严格分离生产/运行时行为 vs CI/构建/开发工具链 vs 测试/示例严格分离攻击者可控输入 vs 运维者可控输入 vs 开发者可控输入若某漏洞类别所需的攻击者控制在本仓库真实使用中大概率不存在应明确说明并降低严重性沟通质量面向 AppSec 工程师写作——简洁但具体使用精确术语包含缓解措施与残余风险避免大段复述 README/规格文档应总结并指向证据图表要求产出单个紧凑的 Mermaid 流程图展示主要组件与信任边界并强制使用保守语法子集仅用flowchart TD或flowchart LR且只使用--箭头使用简单的节点 ID仅字母/数字/下划线与带引号的标签如A[Label]避免A(Label)形状语法不使用 Mermaid 的title行或style指令边标签只用纯单词/空格通过--|label|表达避免{}、[]、()或引号必要时干脆去掉标签节点标签保持简短可读不包含文件路径、URL 或 socket 路径这些放到图外的正文中用 Markdown fenced 块包裹图用户任务提示词结构化的上下文槽位用户提示词模板以占位符形式定义了输入槽位# Inputs Context (fill as available; otherwise infer and mark assumptions): - intended_usage: {intended_usage} - deployment_model: {deployment_model} - data_sensitivity: {data_sensitivity} - internet_exposure: {internet_exposure} - authn_authz_expectations: {authn_authz_expectations} - out_of_scope: {out_of_scope} Provided summaries (may be incomplete): - repository_summary: {repository_summary} In-scope code locations (if known): - in_scope_paths: {in_scope_paths}随后任务主体要求构建一个以仓库为中心的威胁模型帮助 AppSec 工程师理解最重要的安全风险以及人工评审应聚焦何处并规定必须遵循的 10 步过程仓库发现证据收集识别仓库形态语言/框架、运行方式、入口点、构建产物按证据类别搜索安全相关面与控制包括网络监听/路由/端点、RPC 处理器、消息消费者认证、会话/令牌处理、授权检查、RBAC/ACL 逻辑解析/序列化/反序列化JSON/YAML/XML/protobuf、模板渲染、eval/动态代码文件上传/读取路径、归档解压、图片/文档解析数据库/队列/缓存客户端与查询构造密钥/配置加载、环境变量、密钥管理可 SSRF 的 HTTP 客户端、webhook、URL 抓取器沙箱/隔离、权限边界、子进程执行日志/审计与错误处理路径CI/构建/发布流水线、依赖管理、产物发布。系统模型汇总主要组件枚举数据流与信任边界每条边界注明源→目的、跨越的数据类型、通道/协议、安全保证与校验提供紧凑的 Mermaid 图。资产与安全目标列出资产数据、凭据、完整性关键状态、可用性关键组件、构建产物并说明每个资产为何重要机密性/完整性/可用性、合规、用户伤害。攻击者模型能力基于预期用途与暴露面的现实远程攻击者假设与非能力除非显式纳入范围否则攻击者无法做到的事。威胁枚举将威胁写成关联到入口点、信任边界、特权组件的攻击者故事优先多步滥用路径而非单行泛化威胁。风险优先级每个威胁给出可能性低/中/高12 句论证、影响低/中/高12 句论证、总体优先级critical/high/medium/low基于可能性 × 影响并考虑已有控制调整显式说明哪些假设对风险影响最大。与用户校验假设与服务上下文最终报告前必须汇总关键假设问 13 个针对性问题暂停等待反馈用户无法回答则以显式假设继续并把条件性结论标记出来。缓解与建议对每个高/严重威胁给出已有缓解附证据锚点、缺口/弱点、推荐缓解代码/配置/流程、检测/监控思路日志、指标、告警。人工安全评审聚焦路径输出230 个仓库相对路径文件或目录每个路径配一句与威胁模型关联的理由。质量检查提供简短清单确认覆盖了发现的所有入口点、每个信任边界至少在威胁中出现一次、运行时与 CI/开发分离、用户澄清或明确不回应、假设与开放问题。必需输出格式精确模板要求在产出最终 Markdown 报告之前先做一次假设校验的 check-in——用 36 条列出关键假设提出 13 个针对性上下文问题等待用户回复后再用澄清后的上下文产出最终报告。最终报告必须按以下顺序、以下小节组织## Executive summary执行摘要一段话概括顶级风险主题与最高风险区域## Scope and assumptions范围与假设范围内路径、范围外项、显式假设以及会实质改变风险排序的开放问题清单## System model系统模型### Primary components、### Data flows and trust boundaries用箭头式 bullet 序列表示系统如Internet → API Server、User Input → Application Logic每条边界记录跨边界的主要数据类型、通信通道/协议、安全保证认证、来源检查、加密、速率限制、执行的输入校验/规范化/schema 强制#### Diagram单个紧凑 Mermaid 图flowchart TD/LR仅--避免title/style节点标签简短无路径/URL边标签仅纯单词## Assets and security objectives资产与安全目标表格列Asset | Why it matters | Security objective (C/I/A)## Attacker model攻击者模型### Capabilities与### Non-capabilities## Entry points and attack surfaces入口点与攻击面表格列Surface | How reached | Trust boundary | Notes | Evidence (repo path / symbol)## Top abuse paths顶级滥用路径510 条简短滥用路径每条为编号步骤序列攻击者目标 → 步骤 → 影响## Threat model table威胁模型表Markdown 表格列Threat ID | Threat source | Prerequisites | Threat action | Impact | Impacted assets | Existing controls (evidence) | Gaps | Recommended mitigations | Detection ideas | Likelihood | Impact severity | Priority规则Threat ID 稳定且格式化为TM-001、TM-002…Priority 只能是 critical/high/medium/lowPrerequisites 控制在 12 句推荐缓解保持具体## Criticality calibration严重性校准定义对本仓库与上下文而言什么算 critical/high/medium/low每级给出 23 个贴合该仓库资产与暴露面的示例## Focus paths for security review安全评审聚焦路径表格列Path | Why it matters | Related Threat IDs## Notes on use使用说明填充已知上下文但允许模型推断并标记假设每项主要主张附 12 个仓库路径锚点不要倾倒所有匹配结果。这套输出契约的价值在于任何一次威胁建模运行无论由哪个团队或哪次会话触发都会产出结构一致、可对比、可追踪的报告而证据锚点与假设显式化两条规则则保证了报告的事实基础。配套清单安全控制与资产分类references/security-controls-and-assets.md 提供了一份轻量级清单用于跨团队保持输出一致性并强调优先具体、系统相关的条目而非泛化文本。资产分类只挑选适用的用户数据PII、内容、上传物认证产物密码、令牌、会话、Cookie授权状态角色、策略、ACL秘密与密钥API 密钥、签名密钥、加密密钥配置与功能开关feature flags模型与权重若为 ML 系统源代码与构建产物审计日志与遥测可用性关键资源队列、缓存、速率限制、计算预算租户隔离边界与元数据安全控制分类身份与访问认证、授权、会话处理、mTLS、密钥轮换输入防护schema 校验、解析加固、上传扫描、沙箱网络防护TLS、网络策略、WAF、速率限制、DoS 控制数据保护静态/传输中加密、令牌化、脱敏隔离进程沙箱、容器边界、租户隔离、seccomp可观测性审计日志、告警、异常检测、防篡改供应链依赖锁定、SBOM、来源证明provenance、签名变更控制CI 检查、部署审批、配置护栏。缓解措施的措辞模式可复用的表述模板Enforce schema atboundaryforpayloadbeforecomponent.在边界处对载荷强制执行 schema再进入组件。Require authZ check foractiononresourceinservice.在服务中对资源的动作要求授权检查。Isolateparser/componentin a sandbox withresource limits.将解析器/组件隔离在带资源限制的沙箱中。Rate limitendpointbykeyand apply burst caps.按键对端点限速并应用突发上限。Encryptdataat rest usingkey managementand rotatekeys.使用密钥管理对数据静态加密并轮换密钥。这些模式与 SKILL.md 第 7 步偏好具体实现提示的原则一脉相承帮助把泛化建议改写成可直接落地到具体组件/边界的行动项。实践要点与注意事项结合上述全部内容在 Codex 中使用security-threat-model技能时值得记住以下几点证据优先拒绝编造任何组件、端点、控制措施都必须能在仓库中找到对应路径作为锚点找不到就写成假设并附开放问题。这是该技能区别于传统安全清单的核心。服务上下文决定一切同一个仓库部署为内网服务与公网服务、有无认证、是否多租户其攻击者模型与定级完全不同。因此第 6 步的暂停并等待用户反馈不是可选项而是流程的强制环节。运行时与开发工具链分离CI 流水线中的漏洞与生产运行时中的漏洞暴露面与影响完全不同报告必须分开呈现。数量服从质量威胁以小但精为原则滥用路径优先采用多步序列而不是罗列几十条单行威胁。输出文件命名最终报告写入repo-or-dir-name-threat-model.md便于按仓库持久保存与检索。Mermaid 语法收敛为了确保图表在任何渲染环境下都能干净渲染只使用模板允许的保守子集——这正是可渲染优先工程纪律的体现。延伸阅读技能主文档skills/.curated/security-threat-model/SKILL.md输出契约与完整 Prompt 模板skills/.curated/security-threat-model/references/prompt-template.md可选的控制/资产清单skills/.curated/security-threat-model/references/security-controls-and-assets.mdAgent 界面配置skills/.curated/security-threat-model/agents/openai.yaml在 Codex 中安装该技能后例如通过$skill-installer security-threat-model即可用一句话触发完整流程Create a repository-grounded threat model for this codebase with prioritized abuse paths and mitigations.技能会自行读取仓库、提取系统模型、在关键节点向你确认服务上下文并最终产出一份符合统一输出契约、证据可追溯的威胁模型 Markdown 报告。【免费下载链接】skillsSkills Catalog for Codex项目地址: https://gitcode.com/GitHub_Trending/skills4/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考