关于 fix-code-vulnerability
面向代码安全修复任务的技能,指导分析常见漏洞、实施防护并验证修复。流程从测试和数据流分析入手,也强调集中修复与漏洞报告。
主要功能
- 01按 CWE 分类常见漏洞
- 02追踪输入到风险操作的数据流
- 03应用验证、编码和参数化防护
- 04运行测试并检查边界情况
- 05记录漏洞与修复报告
适用场景
- 01排查 SQL 注入或命令注入
- 02修复 XSS、路径遍历等问题
- 03验证安全修复且避免回归
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ letta-ai/ skills --skill fix-code-vulnerability安装后在 Claude Code 中输入/fix-code-vulnerability确认已加载。
详细介绍
修复代码漏洞
概述
本技能提供一套系统化的方法,用于识别、分析和修复代码库中的安全漏洞。内容涵盖常见漏洞类型(注入攻击、输入验证问题等),并提供验证策略,确保修复完整且正确。
工作流
阶段 1:初步侦察
首先了解漏洞的范围和性质:
-
先运行现有测试——执行测试套件,找出未通过的安全相关测试。未通过的测试通常会直接指出需要修复的漏洞以及预期行为。
-
立即阅读未通过的测试——安全测试未通过时,应先阅读测试,再探索更广泛的代码库。测试会揭示:
- 确切的漏洞类型(CWE 编号、攻击向量)
- 预期的防御行为
- 应被拦截的特定输入
- 被测试的 API 或函数
-
识别漏洞类型——对漏洞进行分类:
- CWE-89:SQL 注入
- CWE-78:操作系统命令注入
- CWE-79:跨站脚本攻击(XSS)
- CWE-93:CRLF 注入(HTTP 响应拆分)
- CWE-22:路径遍历
- CWE-94:代码注入
- CWE-611:XML 外部实体(XXE)
阶段 2:代码分析
追踪存在漏洞的代码路径:
-
跟踪数据流——从用户输入追踪到存在漏洞的操作:
- 入口点(API 端点、表单处理器、文件读取器)
- 数据转换函数
- 输出点(数据库查询、文件操作、HTTP 响应)
-
确定修复位置——优先在集中的辅助函数中修复,而不是在多个调用点分别修复:
- 查找处理易受攻击数据的实用函数
- 修复共享辅助函数即可自动覆盖所有调用方
- 避免零散修复,以免遗漏边缘情况
-
分段阅读较大代码块——分析相关函数时,应一并阅读,而不是进行多次零散阅读。这样能更好地理解代码流。
阶段 3:实施修复
采取适当的防御措施:
-
输入验证——针对注入漏洞:
- 验证并拦截危险字符(例如,CRLF 场景中的
\n、\r、\0) - 尽可能使用允许列表(明确定义允许和不允许的内容)
- 提供能明确指出问题的错误消息
- 验证并拦截危险字符(例如,CRLF 场景中的
-
输出编码——针对 XSS 等漏洞:
- 根据上下文对输出进行编码(HTML、URL、JavaScript)
- 使用框架提供的编码函数
-
参数化——针对 SQL 注入和命令注入:
- 使用参数化查询或预处理语句
- 避免将用户输入与字符串拼接
-
错误处理——确保修复:
- 抛出适当的异常,并提供描述性消息
- 不在错误消息中泄露敏感信息
- 安全地失败(默认拒绝)
阶段 4:验证
确认修复完整无误:
-
运行完整测试套件——所有测试都应通过,包括:
- 原先未通过的安全测试
- 现有功能测试(确保没有回归)
-
验证边缘情况已覆盖——检查修复是否处理了:
- 攻击的所有变体(例如,所有控制字符,而不仅仅是
\n) - 直接和间接攻击路径
- 所有可能触发漏洞的方法
- 攻击的所有变体(例如,所有控制字符,而不仅仅是
-
创建漏洞报告——记录:
- 漏洞类型和 CWE 标识符
- 受影响的代码位置
- 修复说明及理由
- 测试覆盖情况确认
常见陷阱
避免这些错误
-
字符覆盖不完整 - 阻止危险字符时,确保涵盖所有变体(例如,CRLF 同时包含
\r和\n,不能只处理其中一个)。 -
在错误的层级修复 - 如果可以集中修复,就不要单独修改各个调用位置。找到通用辅助函数。
-
遗漏间接路径 - 一个函数可能通过多个代码路径调用。请确认修复覆盖所有入口。
-
跳过测试验证 - 应用修复后务必运行测试。仅靠目视检查是不够的。
-
修复范围过广 - 不要破坏合法功能。阻止模式前,先了解有效输入的样子。
需要考虑的攻击场景
修复漏洞时,请了解攻击方式:
- CRLF 注入(CWE-93):攻击者注入
\r\n来拆分 HTTP 标头,从而实施响应拆分攻击 - SQL 注入(CWE-89):攻击者跳出字符串上下文,执行任意 SQL
- 命令注入(CWE-78):攻击者利用 Shell 元字符执行系统命令
- 路径遍历(CWE-22):攻击者利用
../序列访问预期目录之外的文件
提高流程效率的技巧
-
从测试开始 - 首先运行测试,可以立即发现哪些安全检查未通过,以及预期行为是什么。
-
先读测试,再看代码 - 与搜索代码库相比,安全测试更清楚地描述了漏洞和预期修复方式。
-
修复集中式函数 - 找出并修复共享辅助函数,以最少的改动覆盖所有代码路径。
-
全面验证一次 - 运行完整测试套件,而不是单独运行测试,以发现任何回归问题。
-
记录漏洞 - 创建报告,说明漏洞类型、应用的修复以及执行的验证。