现代重入攻击:超越常见利用方式

  • cantina
  • 发布于 10小时前
  • 阅读 75

本文深入探讨了现代重入漏洞,这种漏洞不仅仅是传统意义上的在状态更新完成前进行外部调用。文章通过实例展示了如何在只读视图(view)函数中利用重入漏洞,以及自动化检测工具的局限性。同时,强调了安全审计的重要性,并提出了有效的防御措施,例如在执行过程中防止关键视图调用。

Spearbit 展示了其先进的审查方法,模拟真实世界的重入来保护领先的协议免受执行层漏洞的攻击

现代重入攻击:超越常见的利用方式

当智能合约以意想不到的方式执行时,漏洞就会出现。重入攻击仍然是最危险的例子之一,自以太坊早期以来,它一直是一个关键的威胁。

现代重入漏洞有多种形式,需要复杂的检测方法和彻底的安全分析来防止利用。但是,我们如何才能有效地识别和防范这些攻击媒介?让我们来研究一下。

理解核心

当合约进行外部调用并在初始执行完成之前再次获得控制时,就会发生重入。如果在这种情况下,状态尚未确定,则依赖于准确值的逻辑可能会被操纵。

这种漏洞出现在与不受信任的合约交互期间。如果在外部调用之前没有更新内部余额或标志,攻击者可以通过回调或递归路径利用这些值。

识别模式

常见的重入类型包括:

  • 单函数重入
  • 跨函数重入
  • 跨合约重入

与当前系统相关的其他形式:

  • 基于 View 的重入
  • 通过递归读取进行治理操纵
  • 使用 Oracle 回退逻辑进行价格扭曲

这些都涉及到由于执行时间而中断的假设。当中间值用于通知操作或授权结果时,它们变得至关重要。

实践中的现代攻击向量

现代合约系统在以下领域暴露了重入风险:

  • 早期验证后延迟状态提交
  • 由下游合约消耗的 View 逻辑
  • 允许回调的共享依赖
  • 链接合约交互的自动化系统

这些环境引入了在状态最终确定之前读取和使用的路径。

真实世界的例子:2025 年的只读重入

为了说明这种类型的漏洞如何显现,请考虑一个在提款期间使用 View 函数执行价格检查的金库。攻击者可以部署一个启动标准提款的合约。在执行期间,当金库通过 View 调用查询价格时,攻击者的合约可以使用回退函数来操纵预期的返回值。这将导致金库基于不正确的定价完成提款,可能导致重大的资产误算。

易受攻击的金库

Solidity 合约显示了具有通过 staticcall 获取价格的金库逻辑,从而暴露了提款期间的重入风险。

利用合约

易受攻击的金库智能合约使用外部 View 调用进行定价,从而启用基于 View 的重入。

在这个例子中,当金库执行 View 调用以确定定价时,攻击者的回退会返回一个被操纵的值。金库依赖于这个值来计算支出。由于操纵发生在 staticcall 中,传统的保护措施(如 CEI 或重入保护)不适用,这使得它成为一种微妙而有效的向量。

自动化检测的局限性

大多数工具检测签名重入模式。当一个函数在完成状态更新之前调用时,它们会发出警报。这些检测是有用的,但不完整。

主要限制包括:

  • 低影响模式的过度报告
  • 没有对回退触发流程进行建模
  • 无法查看链接到核心执行的 View 逻辑

检测工具不应被视为完整的分析。审查团队必须验证调查结果并模拟潜在的行为。

高信号重入审查策略

有效的审计会跟踪每个触及外部调用或依赖上游数据的执行路径。这包括影响核心逻辑的 View 函数。

审计团队必须使用模拟的攻击者合约来测试逻辑,这些合约在执行期间回调到系统中。这有助于确认可以访问哪些状态,以及决策是否依赖于不完整的信息。

重入评估的关键领域

Spearbit 的模拟框架模拟攻击者合约在执行期间触发回退逻辑,以暴露智能合约中的细微漏洞。

有效的开发者端防御

可靠的防御需要设计和执行。推荐的做法包括:

  • 始终如一地应用检查-效果-交互
  • 在依赖状态的逻辑上使用重入保护
  • 防止在执行期间进行关键的 View 调用
  • 使用受控接口来加强共享组件
  • 在执行点确认验证检查

Spearbit 的重入检测方法

Spearbit的高信号审查使用跨执行状态的结构化攻击者建模。我们跟踪所有合约间的调用,并模拟回退触发的重入。当 View 函数影响访问或状态转换时,它们被视为安全表面的一部分。

每次审查包括 • 范围内所有合约的执行映射 • 在 View 逻辑期间对回退行为的定向模拟 • 外部调用前后的状态跟踪 • 共享模块、代理和包装器的隔离测试

Spearbit 专注于通过模拟验证假设,而不是模式匹配。这确保了可以触发重入的条件被识别、建模和减轻。

这对审查意味着什么

安全审查必须模拟真实的攻击者行为。这包括时间操纵、View 逻辑访问和相互依赖的调用流程。仅靠模式检测无法捕获这些情况。

Spearbit 审查直接模拟这些行为。我们对跨回退路径的执行进行建模,将逻辑跟踪到共享模块中,并测试 View 逻辑,就好像它是可变的一样。这种方法揭示了基于检查表的审查会遗漏的条件。

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

0 条评论

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