Polygon zkEVM Spearbit审计报告解读(2023年3月版本)

1. 引言

前序博客:

主要见:

本轮审计历时5天,重点关注 Polygon zkEVM Spearbit审计报告解读(2022年12月版本)Polygon zkEVM Spearbit审计报告解读(2023年1月版本) 中的修复确认。

共发现2个漏洞,其中致命漏洞1个,信息提示类一个。
在这里插入图片描述

在本审计报告中,风险分级为:

风险级别 影响:高 影响:中等 影响:低
可能性:高 致命 中等
可能性:中等 中等
可能性:低 中等

其中:

  • 1)影响:
    • 高:会导致丢失协议中 > 10 % >10\% >10%资产,或对大多数用户有重大危害。
    • 中等:丢失 < 10 % <10\% <10%资产,或仅丢失一部分用户的资产,但仍不可接受。
    • 低:丢失很烦人但可接收。适用于可以很容易修复的网格攻击,甚至是gas不足。
  • 2)概率:
    • 高:几乎确定会发生,易于操作,或不易于操作但激励诱人。
    • 中等:仅有可行性可能或动机,但相对有可能发生。
    • 低:需要stars to align,或者几乎没有动机。
  • 3)风险级别:
    • 致命:(若已部署)必须尽快修复。
    • 高:(若未部署),需在部署前修复。
    • 中等:应该修复。
    • 低:可修复。

2. 致命漏洞

上下文见:

; if offset + size is lower than calldata size => length
$ :LT,JMPC(opCALLDATACOPYX0, opCALLDATACOPYloop)

该代码本意是检查:offset + size < txCalldataLen。

但实际代码实现时:A中为txCalldataLen + size,B中为offset,因此其实际检查的是txCalldataLen + size < offset,并无意义。

建议:

  • 给A分配offset + size,给B分配txCalldataLen。

修复PR见:

3. 信息类提示

上下文见:

在creation期间,PUSH opcode出现在bytecode末尾,其数据区域横跨至该bytecode末端,zkEVM将读取该truncated value。如,若该bytecode以 PUSH4 0x11结尾,则其实际放入stack中的为0x11,而不是0x11000000。

这不直接影响正确性,因下一指令降为STOP,因此推送到stack的实际值是不相关的。

建议:

  • 可修复,至少应在源码中说明。

附录:Polygon Hermez 2.0 zkEVM系列博客

猜你喜欢

转载自blog.csdn.net/mutourend/article/details/135335113
今日推荐