单位 4 / 11

漏洞扫描:常见漏洞模式及自动化分析

收益:

  • 能够识别重入、访问控制、预言机操纵和抢先交易等常见漏洞模式,并使用静态分析工具+人工智能+人工对其进行扫描
  • 能够区分 AI 在解释工具输出方面的优势以及优先考虑 MEV 和业务逻辑中的误报和弱点
  • 了解“干净扫描”不是安全证书,扫描只是一层控制

我们在上一单元中看到了审计的整体纪律。在本单元中,我们关注一个更具技术性的主题:漏洞扫描——系统地搜索代码中已知的漏洞模式。在这里,我们将使用人工智能和静态分析工具作为扫描和描述已知漏洞模式的助手。目标:深入了解最常见的漏洞,并区分人工智能在哪些方面是可靠的,哪些方面是不够的。

静态和动态扫描

扫描有两种类型。静态分析——在不运行代码的情况下检查代码:Slither 和 Mythril 等工具扫描合约代码并标记已知模式。动态/符号分析(使用不同的输入运行代码或以数学方式探索代码):模糊测试(用随机输入进行轰炸)和符号执行(探索所有可能的路径)属于这一组。

人工智能不会取代这些工具,而是对它们进行补充:当车辆发出警告时,人工智能会用简单的语言解释警告;当工具错过某个模式时,人工智能可以提醒;但人工智能本身并不能保证它扫描的数量。正确的工作流程:工具+人工智能+人类。

提示:向人工智能提供静态分析工具的输出(例如 Slither 报告),并询问“用简单的语言解释每个警报,哪些是真正的风险,哪些可能是误报?”问。人工智能在使原始工具输出易于人类理解和优先考虑方面具有无价的价值。

最常见的漏洞模式

1.可重入。如果函数调用外部合约而不更新其状态,则被调用的合约可以返回,再次触发相同的函数并多次提取资金。解决方案:检查-效果-交互顺序和重入防护。

2.缺乏访问控制。一个关键功能(提现、撤回、升级)被意外公开。这是最常见且代价最高的错误之一。

3. 预言机操纵。合约对外部价格来源(预言机)的盲目依赖。攻击者立即操纵价格并欺骗协议。解决方案:时间加权平均价格(TWAP)、多源。

4. 整数溢出/不足。当数字超过最大允许值并返回到开头时。现代 Solidity 会自动捕获其中的大部分,但风险仍然存在于低级(汇编)代码中。

5.抢先交易。交易在被确认之前就出现在公共池(mempool)中;攻击者可以看到你的交易并在其前面插入他自己的交易。 MEV(最大可提取价值——从交易序列中提取的价值)是该主体的总称。

6. 拒绝服务 (DoS)。循环变得太昂贵并且使函数不可用,或者对地址的依赖被锁定。

7、升级风险。可升级合约中的存储冲突和权限滥用。

脆弱性

AI扫描信任

为什么

可重入性

众所周知、清晰的模式

访问控制

模具可扫描

整数运算

标准控制

甲骨文操纵

中等

需要上下文

前置/MEV

中低

协议特定

业务逻辑错误

真实、符合情境

弱提示/强提示

弱提示:

这段代码有漏洞吗?

强力提示:

您的角色:安检助理。扫描下面的合同,了解以下已知模式,并为每个模式“有风险/无/不确定”:重入、访问控制、整数运算、oracledependency、抢先交易、DoS、升级安全性。将每个确定与相关行联系起来并解释为什么存在风险。这些假设将通过静态分析工具和审核员进行验证。请注意,可能存在误报。

四个可复制模板

1)工具输出说明:

下面是静态分析工具(Slither)的报告。用通俗易懂的语言解释每个警报:它的含义是什么,它是真正的风险还是可能的误报,其优先级应该是什么?不要做出坚定的决定;优先获得审核员确认。

2)可重入重点筛选:

查找此合约中所有进行外部调用的函数。检查它们是否都遵循检查-效果-交互顺序以及是否存在重入防护。用一条线显示有风险的部分。如果您不确定,请标记;生成漏洞利用代码。

3)门禁图:

列出此合约中的所有外部/公共函数,并为每个函数指定“谁可以调用”(每个人/所有者/角色)。执行关键操作(提取、打印、升级)并标记那些访问控制较弱的操作。将其与桌子一起呈现。

4)误报消除:

考虑为什么此扫描警告可能不是真正的风险(误报):什么上下文或代码条件会使此警告无效?但不要说“绝对没有问题”;列出需要确认的点。

三个迷你箱(数量)

案例1——车辆+AI效率翻倍。一个团队在一个包含 12 个合同的项目上运行 Slither,收到了 140 条警告。一旦我们让人工智能解释警报并确定警报的优先级,结果发现 140 个警报中有 95 个是误报;该团队重点关注了 45 名真实候选人。分诊时间从 2 天减少到 5 小时。教训:人工智能在使车辆输出人性化方面非常强大。

案例2——AI劫持MEV。在DEX(去中心化交易所)合约中,AI发现标准模式干净,但未能检测到抢先交易漏洞;因为这是特定于协议的操作顺序的。人工审核员和模拟捕获。教训:MEV/抢先交易等特定于协议的风险是人工智能的薄弱领域。

案例 3 — 避免在误报上浪费时间。当人工智能解释重入警告实际上是误报(该函数已经受到保护)时,该团队避免了不必要的重写。但团队还是通过一次测试证实了这一点。教训:人工智能优先;测试再次证实了这一点。

扫描限制

扫描发现已知模式。该工具和人工智能都不能保证检测到新的、独特的或特定于协议的漏洞。因此,筛选是审核的一部分;不是他自己。 “扫描是干净的,因此意味着它是安全的”的想法是该领域最危险的误解之一。疏浚是摘取低垂果实的方法;对于深刻且独特的风险,人类专业知识、测试、模糊测试和正式审计至关重要。

注意:扫描工具或人工智能的“干净”报告并不是安全证书。以这种方式呈现——尤其是向投资者——是具有误导性且不道德的。

常见错误

  • 以筛选代替检查。扫描的是一层,而不是整体。
  • 无需工具即可使用人工智能。静态分析+AI+人类协同工作。
  • 消除未经确认的误报。每个屏幕都经过测试/人工验证。
  • 依靠 AI 绕过特定于协议的风险 (MEV)。 AI的薄弱环节。
  • 认为“干净扫描”=“安全”。它无法找到未知的东西。
  • 生成漏洞利用代码。只有防御性风险描述才是合法的。

综上所述

  • 漏洞扫描通过车辆+人工智能+人类寻找已知的漏洞模式。
  • 人工智能在解释静态分析工具输出并确定其优先级方面非常强大。
  • 在可重入和访问控制等清晰模式下可靠; MEV 和业务逻辑薄弱。
  • 即使消除误报也需要确认。
  • “干净扫描”并不是安全证书;它不能替代监督。

应用任务

对样本合约运行静态分析工具(如果可能)或找到现成的 Slither 报告。将“工具输出描述”提示应用于AI。评估人工智能是否:(1)正确解释警告,(2)在区分误报方面有意义,(3)错过协议特定的风险。填写表格中的“车辆发现/人工智能解释/人类确认”栏。

清单

  • [ ] 我将剖面线定位为控件的一层。
  • [ ] 我使用了静态分析工具+AI+人类。
  • [ ] 我按类别搜索已知模式。
  • [ ] 我通过确认消除了误报。
  • [ ] 我在 MEV/业务逻辑等薄弱领域依赖于人类。
  • [ ] 我没有提供“一网打尽”作为保证。
  • [ ] 我仅出于国防目的工作;我没有创造漏洞。