大家新年好。
这个假期,针对研发安全这件事,我做了个小工具:skill-threat-modeling,一个Code-First Deep Risk Analysis Skill Set。
发布地址:
https://github.com/fr33d3m0n/skill-threat-modeling
用法:
详见README.md,简而言之,拷贝到AI研发工具的skills目录即可(目前测试claude code和qwen cli都运行良好,qwen cli有一点小bug但不影响功能, 其他cli支持skills的理论上都支持)。然后就可以在AI研发工具的agent中直接通过自然语言指令触发调用,如“帮我对本项目进行完整的威胁建模”。
一、Code-First Deep Risk Analysis Skill Set [以下简称为skill-threat-modeling]是什么?
Code-First Deep Risk Analysis 是一个LLM驱动的全自动化的应用安全设计评审、威胁建模和风险评估工具集,用于:
- 安全设计评估 (Security Design Assessment)
- 威胁建模评估 (Threat Modeling Assessment)
- 基础设施安全评估 (Infrastructure Security Assessment)
特别针对以下场景扩展:
- 云原生应用 (Cloud-Native Applications)
- LLM/AI 应用 (LLM/AI Applications)
- Agent、MCP tools、Skill、Prompt的特别扩展
这个Skill Set 适用于:
- 开发团队 - 在 CI/CD 中集成安全评估
- 安全团队 - 代码审计和渗透测试准备
- 安全架构师 - 设计阶段的安全评审
- AI/LLM 开发者 - Agent 和 Skill 的专项安全评估
二、Code-First Deep Risk Analysis Skill Set不是什么?
- skill-threat-modeling不是漏洞扫描器,尽管它可以通过工作接口调用各类传统的漏洞扫描器实现更为强大的扩展功能。
- skill-threat-modeling不是IAST/SAST等代码检查和审计工具,同样它设计为极易通过工具调用、API或MCP协议与这些工具进行集成。
- skill-threat-modeling不是渗透测试工具,但是它能够生成灰盒渗透测试计划,包括指导自动化环境部署、攻击链设计、POC和测试验证步骤生成。当然这使得它今后极有可能向后端衍生,成为一个更强大的渗透测试驱动引擎。
三、Code-First Deep Risk Analysis Skill Set能做什么?
通过完整的八阶段工作流,作为一个Skill Set,Code-First Deep Risk Analysis Skill Set能够帮我们自动完成以下任务:
| Phase | 目标 | 说明
| 1 | 项目深度理解 | 全面理解被评估目标的整体功能、结构、代码树
| 2 | 调用流与DFD分析 | 自动解析业务功能调用链和数据流,构建DFD
| 3 | 信任边界评估 | 基于模块结构推导信任边界
| 4 | 安全设计评审 | 识别和评估认证、加密、审计、RBAC等安全功能设计
| 5 | STRIDE威胁分析 | 从代码树自动提取架构,进行STRIDE分析
| 6 | 风险验证 | 验证攻击路径可行性,设计POC ⚠️ !
| 7 | 缓解措施规划 | 生成安全控制和缓解建议
| 8 | 报告生成 | 综合评估报告 + 合规性符合度
除此之外,尽管这些扩展没有固化在Code-First Deep Risk Analysis Skill Set里面,但通过它我们极易扩展,直接向开发工具(例如Claude Code或Qwen CLI)提出往研发上下文延伸的要求,例如:
- "我现在要开发一个MCP Server,目标是xxxx,帮我分析和设计基本的安全设计要求和控制措施。"(辅助自动化安全功能设计)
- "基于当前的风险评估结果,按优先级生成完整的修复任务清单并逐项修复。"(是的,CDRAS具备完整的代码安全模式、知识和测试知识库,它能帮助你指导进行风险修复)
- "对以上变更设计安全功能单元测试。"
- "设计渗透测试计划和攻击验证报告,部署渗透测试环境。"
四、核心设计理念
不同于传统的威胁建模和安全设计评审工具,Code-First Deep Risk Analysis Skill Set从源代码分析出发,而非传统的设计文档或架构图,不需要人工书写和输入需求文档、设计图、绘制DFD等繁琐的工作,它会自动化的通过LLM调度和分析,从源代码、Infra-as-Code配置文件、(可能的文档和设计文件)中提取架构,然后进行全流程自动的威胁建模和风险评估。
Skills 本质是 "专业知识的外挂",让 研发Agent 变专(通过赋能),而非 变笨(通过限制)。
Code-First Deep Risk Analysis采用极简化设计,包括:
- 4个主工作流文档,.md 格式,定义和由LLM驱动、调度和分析的全过程;
- 知识库体系,由一系列yaml和一个sqlite数据库组成的知识系统,提供给LLM每项工作所需的知识体系指导、上下文和统一的查询接口;
- 用于支持skill运行和知识检索的python脚本。
在skill-threat-modeling的设计过程中遵循:
| Context 是公共资源 | Context window 被所有内容共享,每个 token 有机会成本 | 知识库通过脚本查询,不预加载
| Claude 已经很聪明 | 只添加 Claude 不知道的知识 | 不解释 STRIDE 基础概念
| 渐进式披露 | 按需加载,从少到多 | SKILL.md → WORKFLOW.md → references
| 脚本是黑盒 | 脚本执行不消耗 context,只有输出消耗 | 复杂计算(知识库查询)用脚本
| 自由度匹配任务脆弱性 | 脆弱任务需严格约束,灵活任务给予自由 | 威胁ID生成用脚本,描述增强用Claude
五、解决的核心问题
❌ 传统威胁建模的问题
| 问题 | 传统方法 | Code-First 方案
| 依赖设计文档 | 需要架构图、DFD 作为输入 | 直接从代码分析提取架构
| 知识碎片化 | 威胁知识分散在不同来源 | 双知识库统一查询 (STRIDE→CWE→CAPEC→ATT&CK)
| 缺乏验证深度 | 停留在威胁识别阶段 | Phase 6 验证攻击路径 + POC 设计
| 消减措施笼统 | 通用建议缺乏针对性 | 知识库驱动的技术栈特定消减
| AI 应用覆盖不足 | 缺少 LLM/Agent 威胁模型 | OWASP LLM Top 10 + Agentic Top 10
✅ 通过skill-threat-modeling解决的传统威胁建模和安全设计分析的8 类核心问题
1. 项目理解自动化
Problem: 人工分析代码结构耗时且遗漏多
Solution: scripts/list_files.py 自动检测项目类型和关键组件
2. DFD/调用流构建
Problem: 手绘 DFD 不准确、难以维护
Solution: LLM 语义分析 + Mermaid 自动生成
3. 信任边界识别
Problem: 边界识别依赖经验,容易遗漏
Solution: 基于架构模式的自动边界推导
4. 安全设计评审
Problem: 安全控制覆盖评估缺乏系统性
Solution: 11 安全原则 + 16 安全域矩阵评估
5. STRIDE 威胁识别
Problem: 威胁识别不完整、缺乏上下文
Solution: STRIDE per Interaction + 知识库完整链映射
6. 攻击路径验证
Problem: 威胁停留在理论层面,无法验证可利用性
Solution: CAPEC + ATT&CK 攻击链 + POC 设计
7. 消减措施规划
Problem: 消减建议笼统,缺乏技术栈针对性
Solution: CWE mitigations + 技术栈特定代码示例
8. 报告生成标准化
Problem: 报告格式不统一,难以追踪,也不便于机器理解和调度
Solution: 标准化 4 份必需报告 + 6 份阶段文档 ,LLM易于理解的格式语言,可以直接转化到研发上下文进行任务调度
六、典型使用场景
🎯 场景 1: REST API 后端安全评估
| 属性 | 描述
| 项目类型 | Node.js/Express, Python/FastAPI, Go 等
| 触发场景 | 新 API 上线前、代码审计、渗透测试准备
| 典型发现 | 输入验证缺失、授权检查遗漏、敏感信息泄露
示例威胁:
T-E-P2-001: DELETE /users/:id 缺少授权检查 → Critical
T-T-DF1-001: POST /users 无输入验证 → High
T-I-DS1-001: 生产环境暴露堆栈跟踪 → Medium
🎯 场景 2: 微服务架构安全评估
| 属性 | 描述
| 项目类型 | 电商平台、SaaS 系统、企业应用
| 技术栈 | Kong/Envoy + K8s + 多服务
| 重点分析 | 服务间通信、信任边界、数据流安全
典型架构组件:
├── API Gateway (Kong/Envoy)
├── Auth Service (OAuth2/JWT)
├── 业务服务 (Catalog, Order, Payment)
├── 数据层 (PostgreSQL, Redis, RabbitMQ)
└── 外部集成 (Stripe, Email Provider)
关键分析点:
- 跨信任边界的数据流
- mTLS 配置验证
- Service Mesh 安全策略
🎯 场景 3: AI/LLM 应用安全评估
| 属性 | 描述
| 项目类型 | RAG 应用、LLM 驱动的文档分析、AI Agent
| 扩展覆盖 | OWASP LLM Top 10 (LLM01-LLM10)
| 特殊组件 | Embedding、Vector DB、Prompt 管道
AI/LLM 专项威胁:
LLM01: Prompt Injection (直接/间接注入)
LLM02: Insecure Output Handling
LLM06: Sensitive Information Disclosure
LLM09: Overreliance on LLM Outputs
🎯 场景 4: Agent/Skill Prompt 安全评估
| 属性 | 描述
| 项目类型 | Claude Code Skills、AI Agent 系统
| 扩展覆盖 | OWASP Agentic Top 10 (ASI01-ASI10)
| 核心原则 | Least Agency (最小代理权限)
| 评估领域 | 覆盖内容
| OWASP Agentic Top 10 | 自主 AI Agent 的漏洞类别
| Least Agency 原则 | 最小权限和能力范围评估
| Tool Call 安全 | MCP 服务器集成、命令注入、路径遍历
| Prompt 注入防护 | 直接/间接注入、越狱抵抗分析
| 数据边界控制 | 敏感数据暴露、上下文泄露预防
| 自主性风险评估 | 决策边界、人工监督、操作可逆性
🎯 场景 5: 多云 SaaS 平台评估
| 属性 | 描述
| 项目类型 | AWS + Azure/GCP 多云部署
| 重点分析 | 云服务特定威胁、合规映射
| 合规框架 | CSA CCM, ISO 27017, CIS, NIST
云服务威胁分类:
├── Compute (EC2, Lambda, ECS)
├── Storage (S3, RDS, DynamoDB)
├── Identity (IAM, Cognito, STS)
├── Networking (VPC, ALB, WAF)
└── Container (EKS, ECR, Fargate)
七、输出产物
最终报告 (4 份)
| 报告 | 用途
| {PROJECT}-RISK-ASSESSMENT-REPORT.md | 风险评估主报告 (综合所有阶段)
| {PROJECT}-RISK-INVENTORY.md | 风险清单 (威胁表格)
| {PROJECT}-MITIGATION-MEASURES.md | 缓解措施 (技术建议)
| {PROJECT}-PENETRATION-TEST-PLAN.md | 渗透测试方案 (验证指南)
阶段过程文档 (6 份)
P1-PROJECT-UNDERSTANDING.md → P2-DFD-ANALYSIS.md → P3-TRUST-BOUNDARY.md → P4-SECURITY-DESIGN-REVIEW.md → P5-STRIDE-THREATS.md → P6-RISK-VALIDATION.md
由于本skill的设计理念是AI驱动,AI互动,极简设计,最大扩展可能性,因此报告充分考虑机器可读性,并且可以直接转化为下一步研发、需求、代码修复、渗透测试的输入,所以并不追求进行报告的繁复格式支持。当然在LLM的支持下输出更复杂的报告都是很容易的,用户可以自己进行指令扩展。
八、安全自评估
有意思的是,skill-threat-modeling本身就具备对agent和skill set的安全评估能力,所以我也通过skill-threat-modeling对自身进行了基本的安全评估,当然由于skill的工作要求限制,存在一些潜在风险,有兴趣的可以自己看看。
目前生态圈里skills潜在的风险已经开始涌现,或许后面会出一个极简版的skill set security bootstrapping。
声明:本文来自赛博谷神,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。