mcpField
A
audit-context-building

audit-context-building

github.com/sickn33安全48.8k90 次安装今天更新
代码仓库

关于 audit-context-building

供 Claude 在安全审计前深入理解代码库的 Skill,强调逐步追踪函数与调用链,并明确记录未知项;不负责发现漏洞或提出修复方案。

主要功能

  1. 01自底向上梳理模块与入口
  2. 02逐行分析函数逻辑
  3. 03跟踪假设与不变量
  4. 04追踪内部及外部调用流程
  5. 05明确标记不确定之处

适用场景

  1. 01在漏洞排查前理解代码库
  2. 02为架构审查做准备
  3. 03梳理威胁建模所需的系统流程

安装

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

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill audit-context-building

安装后在 Claude Code 中输入/audit-context-building确认已加载。

详细介绍

深度上下文构建技能(超细粒度纯上下文模式)

1. 目的

此技能规定 Claude 在审计的上下文构建阶段如何思考。

启用后,Claude 将:

  • 默认逐行/逐块分析代码。
  • 在微观层面应用第一性原理、5 个为什么和5 个如何。
  • 持续关联见解 → 函数 → 模块 → 整个系统。
  • 维护稳定、明确且随新证据不断演进的思维模型。
  • 识别不变量、假设、流程和推理风险。

此技能定义了一种结构化分析格式(见下文的示例:函数微观分析),并在漏洞搜寻阶段之前运行。


何时使用

适用于:

  • 在查找 Bug 或漏洞之前,需要深入理解代码。
  • 希望自底向上理解,而不是自上而下地猜测。
  • 减少幻觉、矛盾和上下文丢失至关重要。
  • 准备进行安全审计、架构审查或威胁建模。

不要用于:

  • 漏洞发现
  • 修复建议
  • 漏洞利用推理
  • 严重性/影响评级

目录范围与证据规范

此目录树不包含 FUNCTION_MICRO_ANALYSIS_EXAMPLE.md、OUTPUT_REQUIREMENTS.md、COMPLETENESS_CHECKLIST.md 或函数分析器 Agent 定义。请使用下方的内联结构,并报告缺失的上游材料;不得声称已阅读或运行这些文件/Agent。数值深度目标用于引导探查,并不意味着可以编造不变量或假设。请明确标记未知行为和未检查的外部代码;未解决的不确定性也是有效结果,不得为了满足完整性检查清单而将其抹去。

2. 此技能的行为方式

启用后,Claude 将:

  • 默认对每个代码块和每行进行超细粒度分析。
  • 在微观层面应用第一性原理、5 个为什么和 5 个如何。
  • 构建并完善持久的全局思维模型。
  • 在先前假设遭到反驳时更新这些假设(“之前我认为 X;现在是 Y。”)。
  • 定期归纳要点,以维持稳定的上下文。
  • 避免猜测;必要时明确表达不确定性。

目标:深入、准确地理解,而非得出结论。


合理化借口(不得跳过)

借口为什么不对必须采取的行动
“我大致明白了”只理解大意会遗漏边缘情况必须逐行分析
“这个函数很简单”简单函数组合起来也会造成复杂 Bug仍须应用 5 个为什么
“我会记住这个不变量”你不会。上下文会退化。明确记录下来
“外部调用大概没问题”在证明安全之前,都应将外部调用视为对抗性的深入代码,或将其建模为恶意输入
“我可以跳过这个辅助函数”辅助函数中包含会传播的假设追踪完整调用链
“这样太花时间了”仓促构建上下文会导致之后产生虚构的漏洞慢即是快

3. 阶段 1 — 初步了解(自底向上扫描)

深入分析前,Claude 会进行最低限度的映射:

  1. 确认主要模块/文件/合约。
  2. 记录显而易见的公共/外部入口点。
  3. 识别可能的参与者(用户、所有者、中继器、预言机或其他合约)。
  4. 识别重要的存储变量、字典、状态结构体或单元格。
  5. 在不假设行为的前提下,构建初步结构。

这为详细分析建立锚点。


4. 阶段 2 — 超细粒度函数分析(默认模式)

每个非平凡函数都必须进行完整的微观分析。

5.1 函数级微观结构检查清单

针对每个函数:

  1. 目的

    • 函数存在的原因及其在系统中的作用。
  2. 输入与假设

    • 参数和隐式输入(状态、发送方、环境)。
    • 前置条件和约束。
  3. 输出与效果

    • 返回值。
    • 状态/存储写入。
    • 事件/消息。
    • 外部交互。
  4. 逐块/逐行分析 对每个逻辑块:

    • 它的作用。
    • 它为何出现在这里(顺序逻辑)。
    • 它依赖哪些假设。
    • 它建立或维护哪些不变量。
    • 后续逻辑依赖它的哪些内容。

    对每个代码块应用:

    • 第一性原理
    • 5 个为什么
    • 5 个如何

5.2 跨函数与外部流程分析

(全面落实跳转至外部代码的规则)

遇到调用时,继续沿边界进行相同的微观优先分析。

内部调用
  • 立即跳转至被调用函数。
  • 对相关代码进行逐块分析。
  • 跟踪数据流、假设和不变量: 调用方 → 被调用方 → 返回 → 调用方。
  • 注意被调用方逻辑在此特定调用上下文中是否有所不同。
外部调用——两种情况

情况 A——调用外部合约,且代码库中存在其代码 视为内部调用:

  • 跳转至目标合约/函数。
  • 继续进行逐块微观分析。
  • 无缝传递不变量和假设。
  • 根据实际代码考虑边缘情况,而非进行黑盒猜测。

情况 B——外部调用,但没有可用代码(真正的外部调用/黑盒) 按对抗性情况进行分析:

  • 描述发送的载荷/值/Gas 或参数。
  • 识别对目标的假设。
  • 考虑所有可能结果:
    • 回滚
    • 错误/异常的返回值
    • 意外的状态变更
    • 行为异常
    • 重入(如适用)
连续性规则

将整个调用链视为一条连续的执行流程。 绝不重置上下文。 所有不变量、假设和数据依赖都必须跨调用传递。


5.3 完整分析示例

请参阅 FUNCTION_MICRO_ANALYSIS_EXAMPLE.md,了解完整演练示例,其中展示了:

  • 对 DEX 兑换函数进行完整的微观分析
  • 应用第一性原理、5 个为什么和 5 个如何
  • 包含不变量和假设的逐块分析
  • 跨函数依赖映射
  • 外部交互的风险分析

此示例展示了所有已分析函数所需的深度和结构。


5.4 输出要求

进行超细粒度分析时,Claude 必须按照 OUTPUT_REQUIREMENTS.md 中定义的格式组织输出。

主要要求:

  • 目的(至少 2~3 句话)
  • 输入与假设(所有参数、前置条件、信任假设)
  • 输出与效果(返回值、状态写入、外部调用、事件、后置条件)
  • 逐块分析(内容、为何在此处、假设、第一性原理/5 个为什么/5 个如何)
  • 跨函数依赖(内部调用、含风险分析的外部调用、共享状态)

质量门槛:

  • 每个函数至少 3 个不变量
  • 至少记录 5 个假设
  • 外部交互至少考虑 3 个风险
  • 至少应用 1 次第一性原理
  • 至少应用 3 次「5 个为什么/5 个如何」组合分析

5.5 完整性检查清单

在完成函数的微观分析之前,请根据 COMPLETENESS_CHECKLIST.md 进行核对:

  • 结构完整性:包含所有必需部分(用途、输入、输出、逐块分析、依赖项)
  • 内容深度:达到最低要求(不变量、假设、风险分析、第一性原理)
  • 连续性与集成:交叉引用、传递的假设、不变量耦合
  • 反幻觉:行号引用、无模糊陈述、基于证据的论断

报告已检查的范围、得到支持的不变量以及所有未解决的问题。不要仅仅因为输出包含所要求的部分,就声称已完全理解。


5. 阶段 3 — 全局系统理解

充分完成微观分析后:

  1. 状态与不变量重建

    • 梳理每个状态变量的读取和写入。
    • 推导跨函数和跨模块的不变量。
  2. 工作流重建

    • 识别端到端流程(存款、取款、生命周期、升级)。
    • 跟踪这些流程中的状态变化。
    • 记录在各步骤中持续成立的假设。
  3. 信任边界映射

    • 参与者 → 入口点 → 行为。
    • 识别不可信输入路径。
    • 权限变更和隐式角色预期。
  4. 复杂度与脆弱性聚类

    • 假设较多的函数。
    • 分支逻辑复杂的函数。
    • 多步骤依赖。
    • 跨模块耦合的状态变更。

这些聚类有助于指导漏洞搜寻阶段。


6. 稳定性与一致性规则

(反幻觉、反矛盾)

Claude 必须:

  • 绝不扭曲证据以迎合先前的假设。 如果发现矛盾:

    • 更新模型。
    • 明确说明修正内容。
  • 定期锚定关键事实 总结核心内容:

    • 不变量
    • 状态关系
    • 参与者角色
    • 工作流
  • 避免模糊猜测 使用:

    • “尚不明确;需要检查 X。” 而不是:
    • “可能……”
  • 持续交叉引用 将新的发现与先前的状态、流程和不变量关联起来,以保持全局一致性。


7. 子 Agent 的使用

Claude 可针对以下情况启动子 Agent:

  • 密集或复杂的函数。
  • 较长的数据流或控制流链。
  • 密码学或数学逻辑。
  • 复杂的状态机。
  • 跨模块工作流重建。

使用 function-analyzer Agent 进行逐函数深度分析。 它遵循完整的微观结构检查清单、跨函数流程规则和本技能中定义的质量门槛,并强制执行纯上下文构建约束。

子 Agent 必须:

  • 遵循相同的微观优先规则。
  • 返回摘要,供 Claude 整合到全局模型中。

8. 与其他阶段的关系

此技能在以下阶段之前运行:

  • 漏洞发现
  • 分类 / 分诊
  • 报告撰写
  • 影响建模
  • 漏洞利用推理

它的唯一目的是构建:

  • 深入理解
  • 稳定的上下文
  • 清晰的系统级认知

9. 非目标

启用此技能期间,Claude 不得:

  • 识别漏洞
  • 提出修复方案
  • 生成概念验证
  • 对漏洞利用进行建模
  • 评定严重程度或影响

这仅用于构建上下文。

限制

  • 仅当任务明确符合上述范围时,才使用此技能。
  • 不要将输出视为针对具体环境的验证、测试或专家审查的替代品。
  • 如果缺少所需输入、权限、安全边界或成功标准,请停止并请求澄清。

评论

支持 Markdown