mcpField
A
audit-context-building

audit-context-building

github.com/workersio安全21074 次安装23 周前更新
代码仓库

关于 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/workersio/skills --skill audit-context-building

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
function-analyzer.md
resources/
COMPLETENESS_CHECKLIST.md
FUNCTION_MICRO_ANALYSIS_EXAMPLE.md
OUTPUT_REQUIREMENTS.md

详细介绍

深度上下文构建技能

1. 目的

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

启用后,Claude 将:

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

此技能定义了结构化的分析格式,并在漏洞搜寻阶段之前运行。


2. 何时使用此技能

适用于:

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

请勿用于:

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

3. 此技能的行为方式

启用后,Claude 将:

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

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


合理化理由(请勿跳过)

合理化理由错在哪里必须采取的行动
“我大致明白了”只理解大意会遗漏边缘情况必须逐行分析
“这个函数很简单”简单函数组合起来也会产生复杂 Bug无论如何都要应用 5 个为什么
“我会记住这个不变量”你不会。上下文会逐渐衰减。明确记录下来
“外部调用应该没问题”外部调用都具有对抗性,除非已证实并非如此深入查看代码,或将其建模为恶意输入
“我可以跳过这个辅助函数”辅助函数中的假设会不断传播追踪完整的调用链
“这花的时间太长了”仓促构建上下文会导致之后产生幻觉式漏洞慢即是快

4. 阶段 1 -- 初步定向(自底向上扫描)

深入分析前,先进行最基本的映射:

  1. 识别技术栈 -- 确定语言、框架、数据库、身份验证提供方、包管理器。
  2. 识别主要模块/文件/合约。
  3. 记录明显的公开/外部入口点(HTTP 路由、RPC 处理程序、CLI 命令、Webhook)。
  4. 识别可能的参与者(用户、管理员、服务、外部集成)。
  5. 识别重要的存储(数据库表、状态结构体、配置、环境变量)。
  6. 在不预设行为的前提下,构建初步结构。

这将为详细分析建立锚点。


5. 阶段 2 -- 极细粒度函数分析(默认模式)

对每个重要函数进行完整的微观分析。

5.1 单个函数的微观结构检查清单

对于每个函数:

  1. 目的

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

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

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

    • 它做了什么。
    • 为什么出现在这里(顺序逻辑)。
    • 它依赖哪些假设。
    • 它建立或维护哪些不变量。
    • 后续有哪些逻辑依赖它。

    对每个代码块应用:

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

5.2 跨函数与外部流程分析

遇到调用时,应跨越边界继续采用相同的微观优先分析方式。

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

情况 A——调用代码库中存在的代码 按内部调用处理:

  • 跳转到目标函数。
  • 继续逐块进行细粒度分析。
  • 无缝传递不变量和假设。
  • 根据实际代码考虑边界情况,不要进行黑盒猜测。

情况 B——调用时无法获取代码(真正的外部调用/黑盒) 按对抗性方式分析:

  • 描述发送的负载/参数。
  • 确定对目标的假设。
  • 考虑所有结果:失败、返回值不正确、状态发生意外变化、行为异常。
连续性规则

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


5.3 完整分析示例

完整演练请参阅 FUNCTION_MICRO_ANALYSIS_EXAMPLE.md。


5.4 输出要求

按照 OUTPUT_REQUIREMENTS.md 组织输出。

质量门槛:

  • 每个函数至少 3 个不变量
  • 至少记录 5 个假设
  • 至少考虑 3 个外部交互风险
  • 至少应用 1 次第一性原理
  • 至少结合应用 3 次 5 Whys/5 Hows

5.5 完整性检查清单

结束前,请对照 COMPLETENESS_CHECKLIST.md 进行检查。


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

完成足够的细粒度分析后:

  1. 状态与不变量重建——梳理每个状态变量的读取/写入情况。推导跨函数不变量。
  2. 工作流重建——识别端到端流程。跟踪状态转换。记录持久性假设。
  3. 信任边界映射——参与者 -> 入口点 -> 行为。识别不可信输入路径。
  4. 复杂度与脆弱性聚类——找出假设多、分支复杂、状态变化耦合的函数。

7. 稳定性与一致性规则

  • **绝不扭曲证据以迎合先前的假设。**更新模型并明确说明修正内容。
  • **定期梳理关键事实。**总结不变量、状态关系、参与者角色和工作流。
  • **避免含糊猜测。**使用“尚不明确;需要检查 X。”,而不是“可能……”
  • **持续交叉引用。**将新发现与先前的状态、流程和不变量联系起来。

8. 子 Agent 使用

对于密集或复杂的函数、长数据流链、加密逻辑或状态机,请使用 function-analyzer Agent 对每个函数进行深入分析。


9. 非目标

在工作期间,Claude 不应:识别漏洞、提出修复方案、生成 PoC、对漏洞利用建模或评定严重性。

这仅用于构建上下文。

评论

支持 Markdown