DeepCode 仓库级威胁建模提示模板:让 LLM 产出可用的 AppSec 威胁模型 📅 发布时间:2026/9/14 7:06:31 👁 浏览次数: DeepCode 仓库级威胁建模提示模板让 LLM 产出可用的 AppSec 威胁模型【免费下载链接】DeepCodeDeepCode: Open Agentic Coding (Agent Harness Loop Engineering Multi-Agent Orchestration)项目地址: https://gitcode.com/GitHub_Trending/deepc/DeepCode导读本篇文章讲解 DeepCode 内置安全技能security-threat-model的核心参考文档——威胁建模提示模板。该模板为 LLM 提供了一套以仓库证据为锚点、以数据流与信任边界为骨架、以输出契约为交付标准的纪律化威胁建模流程用于把一次随意的帮我看看有没有漏洞升级为可供应用安全AppSec工程师直接评审的 Markdown 威胁模型报告。读完本文你将掌握三段式提示模板System prompt / 仓库摘要 prompt / 用户任务 prompt各自的作用、十步建模流程的执行要点、最终报告的精确章节契约以及 DeepCode 源码中可用于证据锚点的安全实现三值权限引擎、跨平台命令沙箱。该模板开箱即用可直接复制到任何 Agentic 编码工作流中对当前仓库或任意指定子路径执行仓库级威胁建模。一、为什么需要仓库级威胁建模模板通用漏洞清单式的安全评审往往产出千篇一律的结果无论被评审的是 Web 应用、CLI 工具还是网络守护进程报告内容都差不多。而真实世界的安全风险高度依赖仓库本身的结构——入口点在哪里、信任边界怎么划分、哪些组件持有最高权限、哪些代码路径最可能成为漏洞瓶颈。DeepCode 的security-threat-model技能见 SKILL.md正是为此设计它要求只针对本仓库及其真实用法生成威胁模型用证据锚点Evidence anchor即仓库路径 符号名/配置键/短引用片段支撑每一个架构论断宁缺毋滥不臆造组件、数据存储、端点、数据流或控制措施。该技能的触发条件是用户明确要求对某个代码库或路径做威胁建模、枚举威胁/滥用路径、执行 AppSec 威胁建模时对于普通的架构总结、代码评审或非安全设计任务技能明确要求不触发见 SKILL.md 的 description 字段。作为内置技能它随 DeepCode 系统技能一起加载并不可删除这一点有测试用例佐证tests/test_skills_product.py中的test_bundled_core_skills_load_with_resources_and_fixed_provenance断言了security-threat-model等八个内置技能以SkillScope.SYSTEM作用域、固定来源SkillSourceRoot.SYSTEM加载且每个技能都带有可注入的指令require_instructions()。技能的工作流Quick start明确指出使用references/prompt-template.md中的提示词生成仓库摘要并尽可能逐字遵循其中的输出契约。因此这份提示模板是整个技能的灵魂文件。二、三段式提示模板总览prompt-template.md 将一次威胁建模会话拆解为三个可复用的提示组件提示组件用途何时使用System prompt定义模型的角色、证据纪律、安全卫生与范围纪律每次会话开始时作为稳定系统提示注入Repository summary prompt生成面向安全的仓库摘要供后续安全工程师快速建立系统认知建模前第一步产出repository_summary输入User prompt template携带上下文变量、十步流程与精确输出契约的任务提示正式建模任务产出一份完整 Markdown 威胁模型这种分层设计的好处是System prompt 保持稳定不变摘要 prompt 只做侦察真正的任务 prompt 通过占位符{intended_usage}、{deployment_model}等把不确定的上下文显式标记为假设保证推断与事实分开、可审计。三、System prompt证据纪律与范围纪律System prompt 把模型固定为面向其他 AppSec 工程师产出的高级应用安全工程师并施加四条核心纪律主目标生成针对本仓库及其真实用法的威胁模型优先具体、有证据支撑的发现而非通用漏洞清单。证据与落地规则不得臆造组件、数据存储、端点、数据流或控制每一条架构论断必须至少由一个引用仓库路径含符号名、配置键或短引用片段的证据锚点支撑信息缺失时显式声明假设并列出待验证的开放问题。安全卫生绝不输出机密遇到 token/密钥/密码一律脱敏只描述其存在位置。范围纪律严格区分运行时行为与 CI/构建/开发工具链、测试/示例严格区分攻击者可控输入、运维者可控输入与开发者可控输入若某漏洞类在仓库真实用法下不存在攻击者控制条件须明确说明并降低严重度。Mermaid 图约束可渲染性优先System prompt 还规定了报告附图的唯一 Mermaid 写法目的是保证图在任何渲染器中都能干净通过。要点如下只使用flowchart TD或flowchart LR且仅用--箭头节点 ID 只用字母/数字/下划线标签用引号包裹A[Label]避免A(Label)形状语法不用title行、不用style指令边标签只用纯单词/空格--|label|避免{}、[]、()或引号必要时干脆去掉标签节点标签保持简短可读不包含文件路径、URL 或 socket 路径这些细节放入图外的正文图必须包裹在 Markdown 围栏块中这套约束直接对应了 LLM 生成 Mermaid 时的常见失败模式复杂形状语法、style 指令、超长节点标签导致渲染崩坏是输出契约思想在图谱层面的体现。四、Repository summary prompt安全向的仓库侦察在正式建模前模板要求先用摘要 prompt 让模型产出一份面向安全的仓库摘要目标定位为帮助后续安全工程师快速理解系统足以构建初始威胁模型并调查潜在安全假设。摘要须回答两组问题项目概览主要编程语言、框架与构建系统项目核心目的与高层架构主要组件/服务/模块及其交互方式。安全态势与入口点可能的用户入口点与信任边界已有安全层认证、授权、校验、沙箱、隔离、权限边界安全关键组件以及为保持系统安全必须成立的假设。摘要的结构要使安全工程师能快速回答用户输入从哪里来不可信数据如何被解析、校验和处理哪些安全假设不能被破坏安全漏洞最可能的瓶颈点在哪里模板还要求按项目类型适配分析Web 应用请求入口、用户数据的解析/路由/认证/存储路径命令行工具受支持的输入参数、文件、环境变量、stdin及处理方式网络守护进程暴露端口、支持的协议、消息格式与请求处理路径操作系统/底层组件可能导致 LPE 或 RCE 的常见漏洞类内存损坏、逻辑缺陷。工具说明也一并给出若 Ripgreprg可用则用它探索代码库使用 grep 或 rg 时始终加-I标志以避免搜索二进制文件。在 DeepCode 仓库中实践摘要 prompt以当前仓库为例摘要 prompt 会引导模型识别出这是一个以 Python核心运行时、CLI、app_server、工作流与 TypeScript桌面端desktop/src为主、附带 Rustdesktop/src-tauri的 Tauri sidecar的混合代码库存在多种入口面——协议服务端app_server/server.py、CLI 工具族cli、MCP 服务器cli/mcp_server.py、core/mcp、自动化调度core/application/automation_scheduler.py等。安全关键组件则包括下文将要展开的权限引擎与沙箱库——它们正是后续威胁建模中必须成立的安全假设的载体。五、User prompt template输入占位符与十步流程任务提示以一组可填写的上下文占位符开头明确能填则填不能填则推断并标记为假设intended_usage预期用途、deployment_model部署模型、data_sensitivity数据敏感度、internet_exposure互联网暴露面、authn_authz_expectations认证授权预期、out_of_scope排除项repository_summary前一步产出的摘要允许不完整in_scope_paths范围内的代码位置可选。随后是必须遵循的十步流程仓库发现证据收集识别仓库形态语言/框架、运行方式、入口点、构建产物按证据类别搜索安全相关表面与控制——网络监听器/路由/端点、RPC 处理器、消息消费者认证、会话/token 处理、授权检查、RBAC/ACL 逻辑解析/序列化/反序列化JSON/YAML/XML/protobuf、模板渲染、eval/动态代码文件上传/读取路径、压缩包解压、图片/文档解析数据库/队列/缓存客户端与查询构造机密/配置加载、环境变量、密钥管理可 SSRF 的 HTTP 客户端、webhook、URL 抓取器沙箱/隔离、权限边界、子进程执行日志/审计与错误处理路径CI/构建/发布流水线、依赖管理、制品发布。系统建模总结主要组件运行时 相关构建/CI 组件枚举数据流与信任边界每条边界须给出源到目标、跨越的数据类型凭据、PII、文件、token、提示词等、通道/协议HTTP/gRPC/IPC/文件/DB、安全保障与校验认证、mTLS、来源检查、schema 校验、限流给出紧凑 Mermaid 图。资产与安全目标列出资产数据、凭据、完整性关键状态、可用性关键组件、构建制品说明每项为何重要机密性/完整性/可用性、合规、用户伤害。攻击者模型基于预期用途与暴露面给出现实的能力假设同时列出攻击者无法合理做到的事除非明确在范围内避免虚高严重度。威胁枚举具体、系统相关将威胁写成绑定入口点、信任边界与特权组件的攻击者故事优先多步骤滥用路径abuse paths而非单行泛化威胁。风险优先级每个威胁给出可能性low/medium/high1~2 句论证、影响low/medium/high1~2 句论证、总优先级critical/high/medium/low基于可能性 × 影响再按既有控制调整显式说明哪些假设对风险影响最大。与用户校验假设与服务上下文出最终报告前必做总结对范围或风险排序有实质影响的假设提出 1~3 个针对性问题以澄清缺失的服务元上下文服务负责人/环境、规模/用户数、部署模型、认证授权、互联网暴露、数据敏感度、多租户暂停等待用户反馈后再出报告若用户无法回答则显式假设继续并标注条件性结论。缓解措施与建议对每个高/严重威胁给出既有缓解带证据锚点、缺口/弱点、建议缓解代码/配置/流程、检测/监控思路日志、指标、告警。人工评审聚焦路径输出 2~30 个值得深入评审的仓库相对路径每个配一句与该威胁模型相关的原因。质量检查用清单确认已覆盖所有发现的入口点、每条信任边界至少在一条威胁中出现、运行时与 CI/开发分离、用户澄清或显式未答复、假设与开放问题齐备。值得注意的是第 7 步——出最终报告前必须暂停并与用户校验假设。这与其说是模型行为约束不如说是一种流程制度它把上下文不全时硬编结论的风险转化为显式假设 定向提问的可审计交互与 SKILL.md 中若用户拒绝或无法回答说明哪些假设仍然成立及它们如何影响优先级的规定前后呼应。六、输出契约最终报告的精确章节模板对最终 Markdown 报告给出了顺序固定的精确结构任何一章都不允许缺省或调序。正式报告前必须先做假设校验 check-in用 3~6 条列出关键假设、提 1~3 个上下文问题、等待用户答复后再产出报告。报告章节如下Executive summary执行摘要一段话概括最高风险主题与最高风险区域。Scope and assumptions范围与假设范围内路径、排除项与显式假设会实质改变风险排序的开放问题短列表。System model系统模型Primary components主要组件Data flows and trust boundaries数据流与信任边界用箭头式子弹列表如Internet → API Server表示系统每条边界记录跨越的数据类型、通信通道/协议、安全保障认证、来源检查、加密、限流与所执行的输入校验/规范化/schema 强制Diagram图单一紧凑 Mermaid 图flowchart TD/flowchart LR可用 subgraph 区分信任区遵守前述约束。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顶级滥用路径5~10 条短滥用路径每条为编号步骤序列攻击者目标 → 步骤 → 影响。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。规则包括威胁 ID 必须稳定且格式化为TM-001、TM-002…Priority 只能是 critical/high/medium/low前提保持 1~2 句缓解建议要具体。Criticality calibration严重度校准定义本仓库与上下文下的 critical/high/medium/low 各指什么每级配 2~3 个贴合本仓库资产与暴露面的示例。Focus paths for security review安全评审聚焦路径表格列为Path | Why it matters | Related Threat IDs。Notes on use使用说明填写已知上下文但允许模型推断并标注假设每个主要论断含 1~2 个仓库路径锚点不堆砌所有匹配。这套输出契约的价值在于可评审性威胁 ID 稳定可追踪、每条威胁带控制证据与缓解建议、聚焦路径可一键跳转人工评审最终产物不是一篇散文而是一份可以被其他工程师逐项核对的工程文档。辅助清单安全控制与资产类别模板仓库中还附有一份轻量清单 security-controls-and-assets.md用于跨团队保持输出一致强调宁可具体、系统相关也不要通用文本。它给出了十类资产用户数据、认证工件、授权状态、机密与密钥、配置与特性开关、模型与权重、源码与构建制品、审计日志与遥测、可用性关键资源、租户隔离边界与元数据和八类安全控制身份与访问、输入保护、网络防护、数据保护、隔离、可观测性、供应链、变更控制以及四组可直接套用的缓解措辞模式例如在边界对载荷在进入组件前强制 schema。在服务中对资源的动作要求 authZ 检查。将解析器/组件隔离进带资源限制的沙箱。七、模板在 DeepCode 中的真实证据面权限引擎与沙箱模板反复强调证据锚点。在 DeepCode 仓库内做威胁建模时最值得锚定的安全关键组件之一是三值权限引擎 core/harness/permissions.py。它实现了allow / ask / deny纯函数决策机制而非策略可被模型作为既有控制证据引用集中式敏感路径保护SENSITIVE_PATH_PATTERNS常量第 66~89 行内置了*/.ssh、*/.aws/credentials、*/.config/gcloud/*、*/.kube/config、*/.netrc、*/.npmrc、*/.git-credentials、*/.deepcode/credentials*、*/deepcode_config.json、*.pem、*.key、*id_rsa*、*id_ed25519*、*/.env*等凭据/机密位置这些模式在除显式 Full Access 预设外的所有 profile 中优先于规则生效规则无法覆盖二维通配符规则、last-match-winsPermissionRule第 123~138 行同时匹配工具名与参数模式命令行或路径如{execute_bash: {git push *: ask, *: allow}}按作者直觉工作后写的规则覆盖先写的三模式default改动型工具 ask/plan改动型 deny只读探索/full_auto仅规则、无隐式 ask供无人值守工作流对应枚举PermissionMode第 55~58 行评估优先级首个决定性结果胜出敏感路径保护启用时→ 规范 Read only 上界 → 显式规则匹配last-wins→ 模式默认值模块文档字符串第 26~31 行明确列出。另一个高价值证据锚点是跨平台命令沙箱 core/harness/sandbox.pymacOS 用sandbox-execseatbelt生成闭包默认(deny default)的.sbpl策略并以绝对路径/usr/bin/sandbox-exec调用防 PATH 注入Linux 用 bubblewrapbwrap做挂载命名空间隔离、只读绑定根、写围栏到工作区、fresh/tmp、--unshare-net默认断网Windows 用 Job Object 提供进程树隔离与生命周期管理。SandboxPolicy第 52~72 行以writable_roots可写根与allow_network默认 False两个字段定义命令能写哪里、能否联网。后端不可用时sandbox_backend()返回none并退化为裸命令由调用方转审批优先——这正是威胁模型中降级路径的典型证据。这些实现与安全底座文档 docs/P1_SECURITY_BASE.md 描述的机制一致机制,非决策这些模块只做确定性的判定与包裹并有对应测试支撑如tests/test_harness_sandbox.py、tests/test_exec_sandbox_wiring.py验证沙箱接线tests/test_skills_product.py验证技能随系统加载。在威胁模型的 Existing controls (evidence) 列中这类实现是比存在某种校验泛泛而谈强得多的锚点——这也正是模板反复强调 Evidence anchor 的用意。八、使用建议与注意事项三段式顺序执行先注入 System prompt 锁定角色与纪律再跑 Repository summary prompt 产出摘要最后用 User prompt template 发起正式任务不要跳过摘要直接建模否则证据收集会缺乏结构。占位符宁可标记为假设也不要空着模板允许推断并标记假设第 7 步的暂停校验机制会兜底——务必等待用户答复后再出最终报告除非用户明确表示无法回答。输出契约逐字遵循SKILL.md 要求报告格式与references/prompt-template.md定义的输出格式高度一致包括稳定的威胁 IDTM-001…与固定的章节顺序。报告落盘按 SKILL.md 的约定最终报告写入名为repo-or-dir-name-threat-model.md的文件仓库根目录用 basename若建模的是子路径则用该目录名。严重度校准要贴合本仓库模板第 9 节要求为当前仓库定制 critical/high/medium/low 的判定标准。可参考 SKILL.md 中的示例性指引High 级如预认证 RCE、认证绕过、跨租户访问、敏感数据外泄、密钥/token 被盗、模型或配置完整性受损、沙箱逃逸Medium 级如关键组件定向 DoS、部分数据暴露、可量化影响的限流绕过、影响检测的日志/指标投毒Low 级如低敏感信息泄漏、易缓解的噪声 DoS、需罕见前置条件的问题。证据锚点宁少勿滥每个主要论断 1~2 个仓库路径锚点即可不要堆砌全部匹配见模板 Notes on use。将这套模板与 DeepCode 的权限引擎、沙箱库等真实安全实现结合使用威胁模型便不再是泛泛的清单而是有证据、有假设、有优先级、可复核的工程资产——这正是 prompt-template.md 设计的最终目的。【免费下载链接】DeepCodeDeepCode: Open Agentic Coding (Agent Harness Loop Engineering Multi-Agent Orchestration)项目地址: https://gitcode.com/GitHub_Trending/deepc/DeepCode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考