mcpField
F
fix-code-vulnerability

fix-code-vulnerability

github.com/letta-ai安全15242 次安装4 周前更新
代码仓库

关于 fix-code-vulnerability

面向代码安全修复任务的技能,指导分析常见漏洞、实施防护并验证修复。流程从测试和数据流分析入手,也强调集中修复与漏洞报告。

主要功能

  1. 01按 CWE 分类常见漏洞
  2. 02追踪输入到风险操作的数据流
  3. 03应用验证、编码和参数化防护
  4. 04运行测试并检查边界情况
  5. 05记录漏洞与修复报告

适用场景

  1. 01排查 SQL 注入或命令注入
  2. 02修复 XSS、路径遍历等问题
  3. 03验证安全修复且避免回归

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/letta-ai/skills --skill fix-code-vulnerability

安装后在 Claude Code 中输入/fix-code-vulnerability确认已加载。

详细介绍

修复代码漏洞

概述

本技能提供一套系统化的方法,用于识别、分析和修复代码库中的安全漏洞。内容涵盖常见漏洞类型(注入攻击、输入验证问题等),并提供验证策略,确保修复完整且正确。

工作流

阶段 1:初步侦察

首先了解漏洞的范围和性质:

  1. 先运行现有测试——执行测试套件,找出未通过的安全相关测试。未通过的测试通常会直接指出需要修复的漏洞以及预期行为。

  2. 立即阅读未通过的测试——安全测试未通过时,应先阅读测试,再探索更广泛的代码库。测试会揭示:

    • 确切的漏洞类型(CWE 编号、攻击向量)
    • 预期的防御行为
    • 应被拦截的特定输入
    • 被测试的 API 或函数
  3. 识别漏洞类型——对漏洞进行分类:

    • CWE-89:SQL 注入
    • CWE-78:操作系统命令注入
    • CWE-79:跨站脚本攻击(XSS)
    • CWE-93:CRLF 注入(HTTP 响应拆分)
    • CWE-22:路径遍历
    • CWE-94:代码注入
    • CWE-611:XML 外部实体(XXE)
阶段 2:代码分析

追踪存在漏洞的代码路径:

  1. 跟踪数据流——从用户输入追踪到存在漏洞的操作:

    • 入口点(API 端点、表单处理器、文件读取器)
    • 数据转换函数
    • 输出点(数据库查询、文件操作、HTTP 响应)
  2. 确定修复位置——优先在集中的辅助函数中修复,而不是在多个调用点分别修复:

    • 查找处理易受攻击数据的实用函数
    • 修复共享辅助函数即可自动覆盖所有调用方
    • 避免零散修复,以免遗漏边缘情况
  3. 分段阅读较大代码块——分析相关函数时,应一并阅读,而不是进行多次零散阅读。这样能更好地理解代码流。

阶段 3:实施修复

采取适当的防御措施:

  1. 输入验证——针对注入漏洞:

    • 验证并拦截危险字符(例如,CRLF 场景中的 \n、\r、\0)
    • 尽可能使用允许列表(明确定义允许和不允许的内容)
    • 提供能明确指出问题的错误消息
  2. 输出编码——针对 XSS 等漏洞:

    • 根据上下文对输出进行编码(HTML、URL、JavaScript)
    • 使用框架提供的编码函数
  3. 参数化——针对 SQL 注入和命令注入:

    • 使用参数化查询或预处理语句
    • 避免将用户输入与字符串拼接
  4. 错误处理——确保修复:

    • 抛出适当的异常,并提供描述性消息
    • 不在错误消息中泄露敏感信息
    • 安全地失败(默认拒绝)
阶段 4:验证

确认修复完整无误:

  1. 运行完整测试套件——所有测试都应通过,包括:

    • 原先未通过的安全测试
    • 现有功能测试(确保没有回归)
  2. 验证边缘情况已覆盖——检查修复是否处理了:

    • 攻击的所有变体(例如,所有控制字符,而不仅仅是 \n)
    • 直接和间接攻击路径
    • 所有可能触发漏洞的方法
  3. 创建漏洞报告——记录:

    • 漏洞类型和 CWE 标识符
    • 受影响的代码位置
    • 修复说明及理由
    • 测试覆盖情况确认

常见陷阱

避免这些错误
  1. 字符覆盖不完整 - 阻止危险字符时,确保涵盖所有变体(例如,CRLF 同时包含 \r 和 \n,不能只处理其中一个)。

  2. 在错误的层级修复 - 如果可以集中修复,就不要单独修改各个调用位置。找到通用辅助函数。

  3. 遗漏间接路径 - 一个函数可能通过多个代码路径调用。请确认修复覆盖所有入口。

  4. 跳过测试验证 - 应用修复后务必运行测试。仅靠目视检查是不够的。

  5. 修复范围过广 - 不要破坏合法功能。阻止模式前,先了解有效输入的样子。

需要考虑的攻击场景

修复漏洞时,请了解攻击方式:

  • CRLF 注入(CWE-93):攻击者注入 \r\n 来拆分 HTTP 标头,从而实施响应拆分攻击
  • SQL 注入(CWE-89):攻击者跳出字符串上下文,执行任意 SQL
  • 命令注入(CWE-78):攻击者利用 Shell 元字符执行系统命令
  • 路径遍历(CWE-22):攻击者利用 ../ 序列访问预期目录之外的文件

提高流程效率的技巧

  1. 从测试开始 - 首先运行测试,可以立即发现哪些安全检查未通过,以及预期行为是什么。

  2. 先读测试,再看代码 - 与搜索代码库相比,安全测试更清楚地描述了漏洞和预期修复方式。

  3. 修复集中式函数 - 找出并修复共享辅助函数,以最少的改动覆盖所有代码路径。

  4. 全面验证一次 - 运行完整测试套件,而不是单独运行测试,以发现任何回归问题。

  5. 记录漏洞 - 创建报告,说明漏洞类型、应用的修复以及执行的验证。

评论

支持 Markdown