security-and-hardening
OWASP Top 10、认证模式、密钥管理、依赖审计、三层边界系统。
评分明细
适用场景
security-and-hardening 快速入门
Trail of Bits 出品的 Web/后端安全加固 Skill,把 OWASP Top 10 全部条目内化进 AI,写代码时主动避开常见漏洞。
这是什么?解决什么问题?
security-and-hardening 是 Trail of Bits 14 个 Skill 中专门针对 Web/后端安全加固的那一个。它不只覆盖 OWASP Top 10(SQL 注入、XSS、SSRF、IDOR、反序列化漏洞等),还包含认证模式(JWT/OAuth/Session)、密钥管理(从环境变量到 KMS)、依赖审计(npm audit/Snyk/Cargo audit)、三层边界(网络层/应用层/数据层)的纵深防御策略。
对小白来说,这个 Skill 把”安全开发”从一句口号变成可落地的检查清单。即使你只写一个 Node.js Express 后端,Skill 也会逐条对照”你的登录接口有没有速率限制?""你的 SQL 拼接是不是还在用字符串?""你的依赖有没有 3 年没更新?“,给出具体修复建议。
准备工作
- 支持 Agent:Claude Code(主推)、支持 Skills 协议的 Agent。
- 运行环境:Node.js / Python / Go / Java 对应工具链;可选 Snyk/Trivy/Semgrep。
- 目标项目:任意 Web 后端、API 服务、CLI 工具。
- 基础知识:理解 HTTP、Cookie、数据库基本概念即可。
3 步快速上手
第 1 步:获取 Skill
git clone https://github.com/trailofbits/skills.git
cp -r skills/security-and-hardening ~/.claude/skills/
第 2 步:在 Claude Code 中调用
cd your-webapp
claude
发起加固请求:
请用 security-and-hardening Skill 审查 src/api/,重点检查认证、密钥管理、依赖审计三层。
第 3 步:本地扫描交叉验证
# Semgrep OWASP 规则集
semgrep --config=p/owasp-top-ten src/
# npm 依赖审计
npm audit --production
把机器扫描结果喂给 AI,做第二轮语义分析。
常见踩坑
- 只在应用层加固:Skill 强调”三层边界”(网络、应用、数据),只在代码层改远远不够。
- 把密钥硬编码到代码里:Skill 会强制提示改为环境变量或 KMS,这是最常见的”被扫雷”问题。
- JWT 没用 HTTPS:Skill 会提示 secret 强度不够、过期时间不合理、refresh token 流程缺陷。
- CORS 配置过宽:
Access-Control-Allow-Origin: *配合Allow-Credentials: true是经典漏洞,Skill 会揪出来。 - 错误信息泄露栈:
res.send(err.stack)在生产环境是致命问题,Skill 强制要求”用户层只给友好提示,详情写日志”。 - 依赖从不升级:Skill 会建议”高严重性依赖 30 天内必须升级”,但实际项目往往拖到爆雷。
初级用法
- 新接口必评审:每写一个 POST/PUT/DELETE 接口,跑一次 Skill 评审。
- 依赖定期审计:每周跑一次
npm audit,结果贴给 AI 分析。 - 认证流程梳理:把”登录-会话-登出”流程图给 AI,让它按 Skill 流程图逐节点检查。
高级玩法
- 自定义 P0 清单:把 Skill 输出的”高危项”沉淀为公司基线,作为新员工 onboarding 必读。
- CI 卡门禁:把 Semgrep 规则集 + Skill 评审串到 GitHub Actions,严重级别 fail PR。
- 威胁建模:用 Skill 内置的 STRIDE 模板,让 AI 帮你做新功能威胁建模。
小技巧
- 关注”高严重性 CVE”邮件订阅,Skill 给的修复建议里会引用相关 CVE 编号。
- 用 Skill 评审认证代码时,务必提供完整的登录/登出/Token 刷新流程。
- 不要在 prompt 里说”我的应用很安全”,保持谦虚,Skill 会揪出你没看到的问题。
- 把 Skill 输出作为安全培训教材,新员工轮岗时过一遍。
- 升级依赖前先让 AI 评估 breaking change,Skill 会提示版本兼容性问题。
常见问题 FAQ
Q1: 这个 Skill 跟 security-and-hardening 有什么关系?必须装吗?
A: Skill 是给 AI Agent 用的”技能包”,能告诉 Agent 怎么按特定规范工作。不是必须装——如果你的项目规模小、要求不高,不装也能用。但装上能让 Agent 输出的质量更高、更符合最佳实践,推荐装。
Q2: 这个 Skill 适合哪些 AI Agent?Cursor?Claude Code?其他?
A: security-and-hardening 来自 TrailOfBits,主要面向支持 Skill 机制的 Agent。常见兼容 Agent 包括 Claude Code、Cursor、OpenCode、Windsurf 等。具体兼容性请查 Skill 官方文档。
Q3: 装了这个 Skill 后,会拖慢 Agent 响应吗?
A: 会的——Skill 通常会增加 prompt 长度,导致响应变慢、token 消耗增加。但质量提升明显。建议:1) 只装项目必需的 Skill;2) 用 Skill 启动/加载/卸载机制按需加载;3) 定期清理不用的 Skill。
Q4: 怎么验证 Skill 装对了?
A: 在 Agent 中输入”列出已加载的 Skill”或类似命令。如果 Skill 出现在列表里,说明装对了。然后用 Skill 跑一个相关任务,看输出是否符合 Skill 规范。
Q5: 这个 Skill 有许可证吗?能商用吗?
A: 取决于 security-and-hardening 的许可证。常见许可证包括 MIT(完全自由)、Apache-2.0(自由但有专利条款)、源可用(可看不能用)、GPL(强开源)。商用前请查仓库 LICENSE 文件。
进阶学习建议
如果想进一步用好 security-and-hardening,建议按以下路径学习:
第 1 周:熟练使用
- 完成 3 步快速上手,跑通第一个任务
- 试 2-3 个不同场景的真实任务
- 记录”哪些 prompt 有效、哪些没用”——形成自己的 prompt 笔记
第 2 周:理解机制
- 阅读 Skill 的官方文档(README、SKILL.md)
- 了解 Skill 的”触发关键词”和”输出格式”
- 学习”如何用更具体的描述触发 Skill”
第 3-4 周:组合使用
- 跟其他 Skill 组合(比如代码审查 + 性能优化)
- 跟其他 Agent 工具组合(Skill + MCP + 自定义脚本)
- 沉淀团队/个人的 Skill 库
长期:贡献社区
- 把自定义的 Skill 开源到 GitHub
- 提 PR 改进现有 Skill
- 写使用心得分享到 CSDN/掘金/知乎
推荐资源:
- 官方文档:https://github.com/addyosmani/agent-skills
- 官方仓库 README 里的 Examples
- 社区最佳实践:Anthropic 官方博客 https://www.anthropic.com/blog
- 国内社区:CSDN AI 板块、掘金 AI 板块
避免的坑:
- 不要装太多 Skill(超过 10 个会拖慢 Agent)
- 不要把 Skill 装在不兼容的 Agent 上
- 不要直接复制 Skill 默认 prompt——要根据项目调整
- 定期 review Skill 库的实用性,清理不用的
参考链接
- 官方仓库:https://github.com/trailofbits/skills
- 该 Skill 目录:https://github.com/trailofbits/skills/tree/main/skills/security-and-hardening
- OWASP Top 10:https://owasp.org/www-project-top-ten/
- Semgrep 规则:https://semgrep.dev/r
- Snyk 漏洞库:https://snyk.io/vuln
- 知名实践:https://github.com/trailofbits/publications
OWASP Top 10 的演化
OWASP Top 10 是 Web 应用安全领域最权威的风险清单,大约每 3-4 年更新一次。从最早的 SQL 注入、XSS、CSRF,到近年来的不安全设计(API 滥用)、软件供应链漏洞、SSRF 攻击,攻击面在不断演化。
Trail of Bits 的 security-and-hardening Skill 内置了 OWASP Top 10 全部条目的检查清单,并补充了认证模式(JWT 常见漏洞)、密钥管理(硬编码、环境变量、Vault)、依赖审计(npm audit、Snyk)、三层边界(网络、应用、数据)纵深防御等高级主题。
进一步阅读
- OWASP 官网(https://owasp.org/) 持续更新 Top 10 列表与详细解释。
- OWASP ASVS(Application Security Verification Standard) 提供更细粒度的安全验证标准。
- Semgrep Registry(https://semgrep.dev/r) 有大量开源安全规则,可以自定义。
- Snyk 漏洞库(https://snyk.io/vuln) 提供实时的开源依赖漏洞信息。
- 《Web Application Security》是 OWASP 出版的实战指南,涵盖攻击手法与防御方法。
- PortSwigger Web Security Academy(https://portswigger.net/web-security) 提供免费的 Web 安全学习路径。
实战建议
- 新接口必评审:每写一个 POST/PUT/DELETE 接口,跑一次 Skill 评审。
- 依赖定期审计:每周跑一次
npm audit、pip-audit,结果贴给 AI 分析。 - 认证流程梳理:把”登录-会话-登出”流程图给 AI,让它按 Skill 流程图逐节点检查。
- 自定义 P0 清单:把 Skill 输出的”高危项”沉淀为公司基线,作为新员工 onboarding 必读。
- CI 卡门禁:把 Semgrep 规则集 + Skill 评审串到 GitHub Actions,严重级别 fail PR。
- 威胁建模:用 Skill 内置的 STRIDE 模板,让 AI 帮你做新功能威胁建模。
本文基于官方文档和公开资料整理,AI辅助生成,MagicNetWorld 尚未完成独立实测。如有错误或过时信息,请通过 contact@magicnetworld.com 反馈。
security-and-hardening Skill 多维度简评
综合评分:9.1 / 10 ⭐⭐⭐⭐⭐ 类别:安全审计 / 攻防 仓库:trailofbits/skills 维护者:Trail of Bits—— 应用安全权威机构 引用:tencent 极道 · SKILL.md 官方 · github.com/trailofbits/skills
一、核心定位与价值
Trail of Bits 是美国 DARPA、Google、Microsoft 长期合作的安全研究公司,曾参与 Ethereum 2.0、Polkadot 等区块链项目的安全审计,发布了著名的二进制分析工具 Manticore。
他们的 skills 项目不是简单的”安全知识”,而是经过实战验证的可执行能力——把 Trail of Bits 多年积累的安全方法论产品化、模块化。
关键洞见:从”问答型 AI”到”执行型 AI”的跃迁——AI 不只回答”什么是重入漏洞”,而是直接扫描代码,指出问题,生成修复。
实战战绩:constant-time-analysis 已在真实项目中发现 ECDSA 验证的时序侧信道漏洞。
完整 14 个 Skills 分类
来源:tencent 极道
1. 智能合约安全(3 个)
| Skill | 用途 | 公链支持 |
|---|---|---|
| building-secure-contracts | 智能合约安全工具包,内置漏洞扫描器 | 6 条主流公链 |
| entry-point-analyzer | 识别智能合约中改变状态的入口点 | Solidity |
2. 代码审计(6 个)
| Skill | 用途 | 何时用 |
|---|---|---|
| audit-context-building | 超细粒度代码解析,构建架构上下文 | 审计前 |
| burpsuite-project-parser | 搜索并提取 Burp Suite 项目数据 | Web 渗透 |
| insecure-defaults | 检测不安全默认配置 / 硬编码凭证 / Fail-Open | 全代码库 |
| semgrep-rule-creator | 创建 / 完善 Semgrep 规则 | 自定义检测 |
| semgrep-rule-variant-creator | 移植 Semgrep 规则到新语言,带测试驱动验证 | 跨语言扩展 |
| static-analysis | CodeQL + Semgrep + SARIF 三件套 | 持续集成 |
| testing-handbook-skills | 模糊测试 / 静态分析 / Sanitizers / 覆盖率 | 测试 |
| variant-analysis | 基于模式分析查找类似漏洞 | CVE 应急 |
3. 验证与高级分析(4 个)
| Skill | 用途 | 适用 |
|---|---|---|
| constant-time-analysis | 检测编译器引入的时序侧信道 | 加密代码 |
| spec-to-code-compliance | 规范到代码合规性检查 | 区块链审计 |
| yara-authoring | YARA 检测规则编写 + Linting + 最佳实践 | 恶意软件分析 |
| differential-review | Git diff 焦点安全审查 | PR 审查 |
4. 实战战绩(trophy case)
- constant-time-analysis:发现 ML-DSA 签名中的时序侧信道漏洞
- variant-analysis:多个 DeFi 项目 reentrancy 漏洞
二、building-secure-contracts(智能合约安全工具包)
2.1 核心能力
支持 6 条公链(Ethereum、Polygon、Arbitrum、Optimism、BNB Chain、Avalanche)漏洞扫描:
- 重入(reentrancy)
- 整数溢出
- 权限绕过
- 抢跑交易(front-running)
- 时间戳依赖
- 弱随机数
- 未检查的返回值
- delegatecall 误用
2.2 工作流
[1] 加载合约文件
↓
[2] 调用内置扫描器(Slither、Mythril、Echidna)
↓
[3] 输出漏洞清单(按严重度)
↓
[4] 生成修复建议
↓
[5] 二次审计
2.3 实战案例
// 危险代码
function withdraw(uint256 amount) public {
require(balances[msg.sender] >= amount);
(bool success, ) = msg.sender.call{value: amount}("");
require(success);
balances[msg.sender] -= amount; // ❌ 状态更新在外部调用后
}
// Skill 修复建议
function withdraw(uint256 amount) public nonReentrant {
require(balances[msg.sender] >= amount);
balances[msg.sender] -= amount; // ✅ Checks-Effects-Interactions
(bool success, ) = msg.sender.call{value: amount}("");
require(success);
}
三、constant-time-analysis(时序侧信道分析)
3.1 问题背景
即使代码逻辑正确,编译器优化也可能导致执行时间随秘密数据变化 → 泄露密钥。
经典案例:
- ECDSA 签名中,根据 nonce 是否为零,执行时间不同
- RSA 中,模幂运算的 Montgomery reduction 优化引入条件分支
3.2 检测方法
# 用 dudect 或 ctgrind 检测
# 1. 收集执行时间分布
# 2. 统计检验(Welch's t-test)
# 3. p-value < 0.05 → 存在侧信道
3.3 真实战绩
Trail of Bits 公开过:
- 在 RustCrypto ML-DSA 签名中发现时序侧信道
- 多个 ECDSA 实现中发现类似漏洞
3.4 修复模式
// ❌ 危险
if (secret_condition) {
do_something(); // 时间随 secret 变化
}
// ✅ 修复
// 用 ct-select / constant-time swap
uint32_t mask = -constant_time_eq(secret, 0);
result = (a & mask) | (b & ~mask);
四、variant-analysis(变体分析)
4.1 核心思想
CVE 爆出后,横向排查同类漏洞。详见 variant-analysis 完整评测。
4.2 五阶段流程
- 威胁情报收集(NVD / GHSA / Twitter)
- 模式提取(找 1-2 个受影响项目作参考)
- 代码库扫描(用 Grep / Semgrep / CodeQL)
- 人工确认(过滤误报)
- 修复 + 验证
五、insecure-defaults(不安全默认检测)
5.1 检测范围
- 硬编码凭证(API key、DB password)
- Fail-Open 模式(try-catch 返回默认值)
- 默认弱密码(admin/admin)
- 明文 HTTP
- CORS 反射(allow_origins: ”*” + credentials: true)
- 数据库连接无 SSL
- JWT 不验证签名
- Cookie 无 httpOnly
5.2 实战案例
// ❌ 危险
const API_KEY = "sk-proj-xxxxx";
// Skill 检测 → 标 Critical
// 建议:
const API_KEY = process.env.OPENAI_API_KEY;
if (!API_KEY) throw new Error("Missing OPENAI_API_KEY");
六、differential-review(PR 焦点安全审查)
6.1 思路
不重审旧代码,只关注本次 diff 引入的风险:
- 新增依赖
- 权限变更
- 加密逻辑
- 认证流程
6.2 工作流
# 1. 获取 diff
git diff main..feature
# 2. Skill 自动识别:
# - 新增危险 API(eval / exec / pickle.load)
# - 危险 SQL 拼接
# - 禁用证书校验(verify=False)
# - ...
# 3. 输出风险点 + 建议
6.3 与 variant-analysis 区别
| 维度 | differential-review | variant-analysis |
|---|---|---|
| 时机 | PR 提交时 | CVE 爆出后 |
| 范围 | 单个 PR diff | 全仓库 + 历史 |
| 目标 | 新引入漏洞 | 同类漏洞 |
| 频率 | 每天 | 偶尔 |
七、其他重要 Skills
7.1 audit-context-building
超细粒度代码解析,构建架构上下文:
- 模块依赖图
- 关键数据流
- 信任边界
- 入口点
- 危险函数调用
用途:审计前先理解架构,避免盲目审查。
7.2 semgrep-rule-creator
创建 / 完善 Semgrep 规则:
- 描述漏洞场景
- AI 生成 Semgrep YAML
- TDD 风格验证规则准确性
- 持续优化
7.3 semgrep-rule-variant-creator
移植 Semgrep 规则到新语言:
- 原语言规则 → AST 提取模式
- 适配目标语言语法
- 测试驱动验证
- 自动化 CI 集成
7.4 testing-handbook-skills
基于 Trail of Bits Testing Handbook:
- Fuzzers(American Fuzzy Lop、libFuzzer)
- 静态分析集成
- Sanitizers(ASan、UBSan、MSan)
- 覆盖率分析
- Differential testing
7.5 yara-authoring
YARA 规则编写:
- Linting(避免语法错误)
- 原子分析
- 最佳实践
- 用于恶意软件检测 / 分类
7.6 spec-to-code-compliance
规范到代码合规性:
- 加载 spec
- 对比代码实现
- 输出偏差
- 用于区块链审计(确保实现符合 spec)
7.7 entry-point-analyzer
智能合约入口点分析:
- 识别所有 state-changing 函数
- 划定攻击面
- 优先审查高风险入口
7.8 burpsuite-project-parser
Burp Suite 项目数据提取:
- HTTP 请求/响应解析
- 漏洞模式识别
- 与 audit-context-building 联动
八、完整工作流
来源:tencent 极道
[1] 准备阶段
audit-context-building
↓
[2] 静态分析
static-analysis (CodeQL + Semgrep)
↓
[3] 已知漏洞
insecure-defaults(配置)
supply-chain-risk-auditor(依赖)
↓
[4] 深度分析
variant-analysis(同类)
differential-review(本次)
constant-time-analysis(密码)
↓
[5] 智能合约
building-secure-contracts
entry-point-analyzer
spec-to-code-compliance
↓
[6] 修复
写代码
↓
[7] 验证
fix-review(确认修复到位)
testing-handbook-skills(fuzzing)
↓
[8] 完成
finishing-a-development-branch
九、5 条反合理化
| 借口 | 反驳 |
|---|---|
| ”我们用 Snyk 够了” | Trail of Bits 是 Snyk 之外的另一层 |
| ”我们没区块链” | 14 个 Skill 中 11 个是非区块链 |
| ”Trail of Bits 太学术” | 实战发现真实 0day |
| ”AI 安全扫描不准” | AI 理解 + CodeQL/Semgrep 双引擎 |
| ”我们小公司不需要” | 安全事故不分大小 |
十、5 条实战技巧
- CI 集成 static-analysis + 手动跑 variant-analysis 互补
- CVE 公开 24h 内用 variant-analysis 横向排查
- PR 必走 differential-review,即使是 1 行
- 生产前用 insecure-defaults 全库审计
- 加密代码必须过 constant-time-analysis
十一、Q&A
Q: 跟 Snyk / Dependabot 区别? A: 它们是 SCA(软件成分分析);Trail of Bits 是全方位安全。
Q: 必须用 Claude Code 吗? A: 工具本身不需要。Skill 引导 Claude 调用。
Q: License? A: CC-BY-SA-4.0(部分 Skill)。
Q: 商用? A: 可商用,但需保留版权。
Q: 中文支持? A: SKILL.md 英文,处理中文代码无障碍。
Q: 实战战绩? A: 已在 RustCrypto / ML-DSA / 多个 DeFi 发现真实漏洞。
Q: 跟 ECC / Superpowers 关系? A: Trail of Bits 专注安全深度;其他专注开发效率。互补。
Q: 14 个 Skill 都用? A: 不必。按需:
- Web 项目:static-analysis / variant-analysis / differential-review
- 智能合约:building-secure-contracts / entry-point-analyzer
- 密码项目:constant-time-analysis
- 通用:insecure-defaults / supply-chain-risk-auditor
十二、Prompt 模板
模板 1:Web 项目安全审计
请用 trailofbits/skills 对我项目做安全审计:
1. static-analysis(CodeQL + Semgrep + SARIF)
2. insecure-defaults(检查硬编码、Fail-Open)
3. supply-chain-risk-auditor(依赖漏洞)
4. differential-review(对比 main 的 diff)
5. 输出:按 Critical/High/Medium/Low 分级的报告
模板 2:智能合约审计
请用 building-secure-contracts 审计合约:
- 输入:contracts/*.sol
- 扫描:重入 / 整数溢出 / 权限绕过
- 输出:漏洞清单 + 修复建议
- 然后用 entry-point-analyzer 标攻击面
模板 3:加密代码审查
请用 constant-time-analysis 检查:
- crypto/sign.rs
- crypto/verify.rs
- 输出:时序侧信道风险点 + constant-time 修复
模板 4:CVE 应急
CVE-2024-XXXX 刚公开,模式:deserialize unsafe.
请用 variant-analysis 排查我们全代码库:
- 找类似反序列化
- 找受影响的 commit
- 输出风险评估 + 修复优先级
十三、真实踩坑案例
案例 1:Semgrep 规则漏报
现象:用了 unsafe pickle.load,Semgrep 没报。 根因:规则没覆盖。 解决:用 semgrep-rule-creator 自定义规则。
案例 2:CI 跑全量 CodeQL 太慢
现象:CodeQL Nightly 跑 8 小时没完。 解决:用 security-extended suite(轻量),全量放 weekly。
案例 3:False positive 多
现象:Semgrep 报 200+ 警告,80% 误报。 解决:baseline 抑制老报警,只查新问题。
案例 4:变体搜索没匹配
现象:variant-analysis 找不到同类。 根因:模式描述不够具体。 解决:提供 PoC + CVE 链接让 AI 理解。
案例 5:智能合约 false positive
现象:误报某个 view function 有 reentrancy。 根因:Slither 默认规则过严。 解决:人工 review + 写自定义 Semgrep 排除 view 函数。
案例 6:时序分析测不出
现象:dudect 跑 1 亿次样本没显著差异。 根因:测的代码本来就是 constant-time。 解决:改用更敏感的统计方法(如 TVLA)。
十四、真实战绩
| Skill | 战绩 |
|---|---|
| constant-time-analysis | RustCrypto ML-DSA 侧信道 |
| variant-analysis | 多个 DeFi reentrancy |
| static-analysis | Ethereum 客户端 Go 运行时漏洞 |
| building-secure-contracts | 6 条公链扫描器 |
十五、安装
# Claude Code
/plugin marketplace add trailofbits/skills
# 选择性安装
/plugin install static-analysis@trailofbits
/plugin install variant-analysis@trailofbits
/plugin install building-secure-contracts@trailofbits
...
# 通用
npx skills add trailofbits/skills --skill static-analysis
npx skills add trailofbits/skills --skill variant-analysis
npx skills add trailofbits/skills --skill constant-time-analysis
十六、总结
核心价值:
- Trail of Bits 多年安全实战经验
- 14 个 Skill 覆盖安全全生命周期
- 实战发现真实 0day
- 完整 CI/CD 集成
- 与 CodeQL / Semgrep 工业级工具联动
适用人群:
- 甲方安全团队
- 智能合约开发者
- 密码学实现工程师
- DevSecOps
- Web3 项目
投入产出比:⭐⭐⭐⭐⭐(5/5)—— 安全团队必装。
何时不要用:
- 纯前端 demo
- 一次性脚本
- 不用 CI
- 无安全合规要求
参考链接:
- trailofbits/skills 官方仓库
- Trail of Bits 公司官网
- tencent 极道详解
- LobeHub static-analysis 详情
- 应用安全测试手册 (Application Security Testing Handbook)
- 配套:static-analysis | variant-analysis | insecure-defaults
快速安装
git clone https://github.com/trailofbits/skills.git
cp -r skills/security-and-hardening ~/.claude/skills/