预审计准备引擎:Krait如何捕捉导致团队多花费30%的12类问题

  • zealynx
  • 发布于 9 小时前
  • 阅读 23

本文介绍了Krait,一款预审计准备引擎,旨在帮助区块链项目在正式安全审计前发现并修复常见问题,从而降低审计成本。

如果你曾为同一个协议打开过三份审计报价,并看着数字相差 80%,那么原因几乎从不在于审计师,而在于你的代码仓库。

审计师按理解你的代码所需的时间收费。当意图没有文档记录时,当不变量没有写下来时,当 Slither 运行出五十条无人分类的警告时,当测试套件只覆盖快乐路径时,每一个这样的缺口都会直接转化为可计费的高级研究员工时。保守估计,在审计一行代码之前,你就在为准备不足多付 30% 的税相关文章)。

Krait 是我们构建的工具,旨在将这笔税降至零。本文介绍了预审计准备引擎实际需要做什么,Krait 的 4 阶段流水线如何工作,以及在审计师打开你的代码仓库之前,Krait 能够发现的 12 个发现类别。

在预订审计时段之前

先运行 Krait。向你的审计师出示已验证的准备度评分。

Krait 捕获显而易见的发现,这样你的付费审计时间就可以用于经济逻辑和业务逻辑缺陷,而不是逆向工程意图。当你的审计范围确定后,申请 Zealynx 报价,我们将把评审工作围绕真正需要人工审查的部分进行规划。

运行 Krait(免费) 申请 Zealynx 报价

本文内容:

  • 哪些成本驱动因素使公平的审计报价变成 30% 的溢价,以及 Krait 在漏斗的哪个环节介入。
  • Krait 的 4 阶段流水线(检测器 → 推理器 → 评判器 → 排序器)如何将误报率从每个竞赛 4.2 降至 0.2。
  • Krait 暴露的 12 个发现类别,并附有来自公开影子审计基准的具体示例。

为什么审计报价比应有水平贵 30%

以下成本驱动因素来自我们自己的 2026 年审计定价分解 以及我们在项目中的常见模式。

成本驱动因素栈

成本驱动因素 典型影响 原因
逆向工程意图 500–1500美元 / 审计师每天 无 NatSpec,无架构图,无不变量列表。
中期范围漂移 最终账单增加 10–30% 未提前声明外部集成,导致范围重新划定。
修复后重新审查 增加 10–30% 行号变动、损坏的提交、冻结期间的“一处变更”。
紧迫性溢价 增加 30–50% 预订时段太晚。
未分类的静态分析 每个嘈杂报告耗费数小时 Slither 和 Aderyn 警告无人处理。

叠加其中任意两个因素,你的报价就会比公平基线高出 30%。相比之下,一个准备充分的代码库通常能获得 15–25% 的更低报价。在 10 万美元的审计中,这个差额就是 1.5–2.5 万美元。在 50 万美元的桥接审计中,就是六位数。无论你是按照我们的 2026 年定价指南 还是审计支出合理性 ROI 框架 来预算,同样的逻辑都适用。

预审计准备引擎实际需要做什么

市场上充斥着各种“AI 审计工具”,它们仅对合约进行单次 LLM 处理,然后转储所有可能的问题。我们在构建 Krait 时测试了这些方法。早期版本的失败方式完全符合你的预期:误报爆炸。我们的 v3 方法在一个竞赛中达到了 100% 的误报率。我们没有悄悄调整绕过,而是将这次失败发布在 GitHub 上的 shadow-audits 文件夹 中,然后从头重建了流水线。

一个真正的预审计准备引擎必须同时做到三件事。

像审计师一样检测。 不是根据固定检查表进行模式匹配,而是基于上下文推理代码。如果外部调用位置不当,重入防护就不够;如果任何人都可以重新初始化,访问控制修饰符就不够。

消除误报。 一份包含 3 个真实缺陷和 47 个误报的 50 条发现报告,比没有报告更糟糕。你的团队会学会跳过警告,而正是在这个时候,真正的缺陷会被漏掉。

覆盖代码分析无法发现的过程缺口。 冻结的提交哈希值、scope.txt、NatSpec 覆盖率、不变量列表、分支覆盖率报告。这些都不会出现在静态分析器中。它们会在审计师的第一次启动会议中出现,并且是 30% 税的最大单一驱动因素。其中大多数在 Zealynx 预审计技术检查表 中逐条列出。

Krait 的工作原理:4 阶段流水线

当你在 Claude CodeCursor、Windsurf 或 Codex 中对 Solidity 项目运行 /krait 时,方法会在四个阶段执行。每个阶段都会在下一个阶段开始之前收窄漏斗。

4 阶段流水线

阶段 1:检测器。 五个并行工作器使用 43 种以上检测启发式规则、140 种漏洞模式以及一个 9 类别费曼质询系统(目的、顺序、一致性、假设、边界、返回值、外部调用、协议集成、覆盖)扫描每个文件。从 v7 开始,每个函数都会从 16 个角度进行检查:4 个技术视角交叉 4 个独立思维模式。

这四个思维模式是有趣的部分:

思维模式 它问什么
攻击者 “我如何利用这一点来耗尽资金或提升权限?”
会计师 “追踪每一 wei。在所有流程下数字是否对得上?”
规范审计师 “代码是否与文档、注释和相关 EIP 所说的应做之事一致?”
边缘情况猎人 “在零、最大值、空、自引用或重入情况下,什么会出问题?”

四个思维模式

被多个思维模式标记的发现会获得共识提升。单一来源的发现将在下一阶段接受额外审查。

阶段 2:推理器。 每个候选发现必须产生一个三步利用证明:攻击者做 X,导致 Y,结果损失 Z。不允许含糊其辞。如果你无法构建具体的攻击路径,该发现就不会存活。

阶段 3:评判器。 这是误报消除层,也是 Krait 与单次扫描仪的区别所在。八个消灭门主动尝试反驳每个发现:(A) 通用最佳实践,(B) 理论性,(C) 故意设计,(D) 无 WHO/WHAT/HOW MUCH 的推测,(E) 管理员信任,(F) 低于 100 美元的微小收益,(G) 上下文错误(模拟、脚本),(H) 已知问题。评判器将 Krait 的误报率从每个竞赛 4.2 降至 0.2。在 40 次影子审计中,它从未杀死过一个真阳性。

八个消灭门

阶段 4:排序器。 综合评分:检测器 20%,推理器 30%,评判器 50%。阈值 40/100 方可显示。按严重性排序,提供修复建议,包含利用痕迹。

输出是一个结构化 JSON,位于 .audit/krait-findings.json 中,外加一份 markdown 报告。每个发现都精确指向 文件:行号,包含易受攻击的代码、建议修复和书面的利用痕迹。将 JSON 上传到 Web 平台 即可获得品牌化报告,你的审计师可以在五分钟内阅读。

参考数据:在 40 个 Code4rena、Sherlock 和 CodeHawks 竞赛上进行了盲测。v6.4 在每个竞赛 0.2 个误报的情况下达到了 90% 的精确率。v7 和 v8 在最近 5 个竞赛周期中达到了 100% 的精确率。每次影子审计都可以从公共仓库重现。

审计师到来前会出现的 12 类发现

这些是 Krait 在 DeFi 协议上的典型首次运行中暴露的类别。其中 11 个是四阶段流水线的 CLI 级别输出。第 12 个是 Web 平台的 845 项检查评估,涵盖了你的 /krait 运行无法发现的过程缺口。

12 类发现网格

如果你的审计师在付费审计的第一天发现了其中任何一项,你就是在为工具本可以免费完成的工作支付 1500 美元/天。

1. 访问控制缺口

作用域不当的修饰符、初始化时缺少 onlyOwner、允许自我提升的基于角色的控制、本应是内部函数的公开函数。根据 OWASP 2026 年智能合约事件数据,这是连续第二年最常见的漏洞类别。Krait 的检测器基础覆盖了管理员模型、角色授予路径和初始化器保护。

2. 重入和 CEI 违规

不仅仅是经典的单函数重入,还有跨函数重入、只读重入(Curve / Lido 模式)以及状态更新发生在外部调用之后的 CEI 排序错误。Krait 检测器会标记每个函数扫描无法发现的耦合状态对。

3. 预言机新鲜度与操控

过时的价格读取、缺少心跳检查、单一来源预言机依赖、在应使用 TWAP 的 Uniswap V3 池中的即时现货读取。对于借贷和 AMM 协议,Krait 加载了一个 15 模式领域基础,其中包含源自 Aave V3 过时发现及类似问题的模式。

4. ERC-4626 和首次存款人通胀

捐赠攻击。首次存款人股价通胀。convertToShares / convertToAssets 中的舍入方向错误。Krait 的 shadow-audits/ 文件夹记录了在 Basin 竞赛中捕获此类缺陷的案例。保险库标准合规性是一个基础查询,运行只需几秒钟。AMM 安全基础指南 涵盖了底层的不变量逻辑。

5. 未检查的外部调用返回值

忽略低级 .call() 结果。未使用 SafeERC20 的代币转账。跨合约调用中假返回值导致静默失败。机械版本的缺陷可以通过运行 Slither 捕捉;微妙的版本则需要推理器阶段通过追踪静默失败两跳后的后果来揭示。

6. 滑点与截止时间遗漏

缺少 amountOutMin 的交换调用、没有 deadline 参数、硬编码的滑点容忍度、流动性操作中缺少对 block.timestamp 的检查。Krait 的 DEX/AMM 基础包含来自 Code4rena 上三明治攻击和 MEV 发现的 20 个攻击模式。

7. EIP 和 ERC 合规性偏差

合约声称符合 ERC-4626,但 redeem 的舍入方向错误。合约使用 EIP-712,但域分隔符使用错误的类型哈希构造。合约触发 ERC-20 事件但并未实际转移。Krait 的规范审计师思维模式专为此设计,并在 reNFT 影子审计中捕获了一个 EIP-712 不匹配问题。

8. 代理与升级安全性

跨实现的存储槽冲突。缺少初始化器。没有 _authorizeUpgrade 的 UUPS 实现。钻石模式中的函数选择器冲突。代理基础包含 15 种模式下的 94 项检查。我们曾单独撰文讨论为什么 UUPS 占主导地位以及它在何处失效;Krait 对你的字节码运行等效分析。如需更深入覆盖,请参阅代理可升级性安全检查表

9. 内联汇编与编码错误

使用错误操作码的内联汇编。本意是 sload 却用了 mload。打包错误字节数的自定义编码器。Krait 在影子审计中捕获了 DittoETH 的一个 add vs and 错误,这种一字符之差很容易逃过逐行人工审查。边缘情况猎人思维模式针对此类问题进行了调优。

10. 暂停与紧急停止绕过

标记了 whenNotPaused 但存在替代代码路径的函数。开放失败而非关闭失败的修饰符。绕过预期防护的紧急提款函数。暂停/恢复逻辑中的生命周期错误,允许通过兄弟函数重新进入。

11. 会计与费用数学错误

在错误步骤应用的费用计算。重复计算的奖励累积器。在份额计算前未扣除费用的保险库申领逻辑。Krait 在 LoopFi 影子审计中捕获了一个真实场景:AuraVault 申领双重支出问题,其中费用未扣除,导致保险库随时间被耗尽。会计师思维模式追踪每一 wei 通过每个状态转换。

12. 文档、不变量与范围缺口

这是你的 CLI 运行无法捕捉而 Web 评估可以捕捉的类别。冻结的提交未打标签。scope.txt 缺失或过时。公共接口的 NatSpec 覆盖率低于 60%。没有记录的不变量,意味着审计师无法运行 Halmos 或 Certora。测试覆盖率报告显示行覆盖率而非分支覆盖率。

这个类别是最大的单一成本驱动因素。如果你读过我们的预审计检查表文章,这就是该检查表以自动化检查形式对你的代码仓库进行重新渲染。

准备度报告长什么样

/krait 完成并且你上传 JSON,或者你直接完成 Web 评估后,报告的结构化设计便于与审计师沟通。你需要分享的所有内容都集中在一个屏幕上。

准备度报告布局

  • 准备度评分(0-100 分)。通过/未通过/跳过 分解。我们建议在与审计公司洽谈前达到 70 分以上。
  • 顶级风险:按严重性和高优先级排序的发现,每个都链接到一个 Solodit 先例。
  • 架构安全观察:“高级审计师执行摘要”行。
  • 观察到的安全优势:你做对了什么。投资者和合作伙伴会阅读这一部分。同样的成果可以作为审计-投资者尽职调查包中的证据。
  • 类别分解:每一项检查按部分组织,通过/未通过/跳过,可展开详情,包含文件:行号引用。
  • 证据附录:工具输出、代码引用、每项检查的人工笔记。

导出为 Markdown,分享 URL,或直接将 JSON 上传给你的审计师。如果你同时运行了 CLI 扫描和 Web 评估,综合准备度评分中 Web 评估占 60%(流程成熟度),CLI 扫描占 40%(代码层面发现)。这个比例反映了实际预测审计时长和成本的因素。

这如何融入审计漏斗

三个步骤。如果从零开始,需要八到十天。

3 步审计漏斗

第 0 天:运行 Krait。克隆 github.com/ZealynxSecurity/krait,将技能复制到 ~/.claude,在项目目录中运行 /krait。输出位于 .audit/krait-findings.json 和一份 markdown 摘要中。上传到 Web 平台获取品牌化视图。同时并行运行 Web 评估。

第 1-5 天:修复 Krait 发现的问题,然后像专业人士一样准备。分类处理报告。修复高严重性和严重级别的发现。对于中低级别,记录你决定不修复的问题及其原因。然后按照 Zealynx 预审计检查表 进行操作:冻结提交,编写不变量列表,确保公共接口的 NatSpec 覆盖率达到 100%,核心代码达到分支覆盖率。

第 7 天+:申请有范围的审计报价。附上 Krait 报告。审计师会阅读它,围绕剩余工作确定审查范围,并以准备充分的定价区间报价。30% 的税降至零。关于从启动到交付的完整时间线,请参阅 Zealynx 审计时间线实际上是如何工作的。交付后,审计后安全手册 涵盖了监控、热修复节奏和第二次审计触发条件。


联系方式

Krait 是免费的。Web 评估在你的浏览器中运行。CLI 在你现有的订阅下在 Claude Code 中本地运行。无需 API 密钥,无安装麻烦,无需预约电话。

如果你已经运行了 Krait 并希望在此基础上获得人工安全审查,请申请 Zealynx 审计报价并附上 Krait JSON。我们将根据 Krait 无法触及的部分(通常正是最高杠杆缺陷所在)来规划审计范围。你也可以浏览我们的智能合约审计服务页面了解审计形式、示例报告和过往工作。


常见问题解答

  1. 什么是预审计准备引擎?它与 Slither 或单次 AI 扫描器有何不同?

    预审计准备引擎是一种工具,在你付费之前模拟高级安全研究员对代码仓库的第一遍审查。与 Slither 或 Aderyn 的区别在于,它们是模式匹配器——无论模式在你的代码中是否实际可利用,它们都会发出警告。与单次 LLM 扫描器的区别在于误报消除层。Krait 的评判器阶段对每个候选发现运行八个消灭门,并丢弃任何未能通过合理攻击路径测试的结果。这使得误报率从每个竞赛 4.2 降至 0.2(在 40 次公开影子审计中)。结果是你的审计师可以在五分钟内阅读的报告,而不是埋葬真正错误的百行转储。参见预审计准备下的方法论。

  2. Krait 能否替代人工智能合约审计?

    不能。Krait 是一个预审计准备引擎。它捕获那些绝不应该到达付费审计师的发现类别:机械缺陷、规范合规偏差、未记录的假设、缺失的不变量。人工审计的存在目的是发现需要人工推理协议用途的经济利用、业务逻辑缺陷和设计级漏洞。Krait 通过首先清除噪音,使这些人工时间更有效。产品页面 krait.zealynx.io 对此有明确说明:"AI 驱动的安全评估。不能替代专业审计。" Zealynx 审计 ROI 指南 解释了人工审查仍然物有所值的地方。

  3. 0-100 的准备度评分实际预测什么?我应该争取多少分?

    评分是综合性的:60% 来自 845 项 Web 评估(流程成熟度——文档、不变量、范围、冻结纪律、监控),40% 来自 CLI 扫描(12 个漏洞类别)。它根据实际预测审计时长和成本的因素进行校准。70 分以上与我们 2026 年审计定价分解中的较低价格区间相关。低于 50 分,你应该预期会支付紧迫性税——审计师需要在计费时间内完成你跳过的准备工作。在与审计公司洽谈前争取达到 70 分的最低标准;如果你希望无需漫长等待就获得 Tier-1 审计时段,争取 85 分以上。

  4. Krait 是否支持 Cursor、Windsurf 或 Codex?还是仅支持 Claude Code?

    它支持任何运行 LLM agent 的 IDE。CLI 技能是为 Claude Code 的技能系统编写的,但 Web 评估的“使用 AI 验证”按钮会生成复制粘贴提示,可直接放入 Claude Code、Cursor、Windsurf 或 Codex。你将 agent 的响应粘贴回来,Krait 会自动解析判定结果,提取 文件:行号,并设置状态。没有对单一编码助手的供应商锁定。

  5. 我的协议是 Solana 上的 Rust,或 StarkNet 上的 Cairo。Krait 是否支持非 EVM?

    目前,最强覆盖是 Solidity。模式库具有不断增长的 Rust / Solana 覆盖,但影子审计基准是 EVM。如果你在 Solana 上启动,我们发布了一份独立的 45 项 Solana 安全指南,我们的 Solana 审计团队可以直接进行人工审查。StarkNet 上的 Cairo、Aptos/Sui 上的 Move 以及 Soroban 上的 Rust 也是如此——这些审查通过 Zealynx 智能合约审计服务 进行。

  6. 运行 Krait 时,我的代码会离开我的机器吗?

    CLI 在你的 Claude Code 会话中本地运行。与你现有 Claude 订阅相同的数据处理规则适用——Krait 不会添加新的出站通道。如果你将发现的 JSON 上传到 krait.zealynx.io/report/findings 以获得品牌化报告,该特定 JSON 会发送到 Web 平台;如果你希望保持一切本地化,CLI 的 markdown 输出足够与审计师分享。Web 评估本身基于浏览器,默认情况下将状态存储在 localStorage 中。你可以在 Zealynx Krait 公告文章 中阅读架构细节。


术语表

术语 定义
审计准备度 协议的代码库和文档为正式安全审计做好准备的状态。
影子审计 一种有时间限制的练习,审计一个已知评级的协议分叉,并根据发布的竞赛结果对发现进行评分。
预审计准备引擎 一个流水线,模拟高级安全研究员对代码仓库的第一遍审查,以在付费审计开始前捕获发现。

查看完整术语表 →

  • 原文链接: zealynx.io/blogs/krait-e...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
zealynx
zealynx
江湖只有他的大名,没有他的介绍。