# AUIPC芯片中的pc字节分解可能导致溢出问题
## 漏洞概述
OpenVM 1.0.0 版本中,由于一个字节分解过程中的拼写错误,导致程序计数器 (pc) 的最高部分被错误地范围检测为 8 位,而不是应该的 6 位。这导致一个条件语句从未被触发,从而使恶意证明者能够通过使分解溢出 BabyBear 字段来操纵目标寄存器的值。
## 影响版本
- **受影响版本**: 1.0.0
- **已修复版本**: 1.1.0
## 细节
在 AUIPC 芯片中,程序计数器 (`pc`) 的字节分解存在一个漏洞。由于拼写错误,最高部分的 `pc` 被错误地范围检测为 8 位,而不是应该的 6 位。这导致了一个条件语句从未被触发,因为枚举应该给出 `i=1,2,3`,然而实际给出的是 `i=0,1,2`。这使得 `pc_limbs[3]` 被误检测为 8 位,而不是 6 位。
## 影响
由于 `pc_limbs` 分解不正确,导致程序计数器的实际值与预期值不符。恶意证明者可以利用此漏洞通过使分解溢出 BabyBear 字段,使目标寄存器的值与其应该的值不同。
# | POC 描述 | 源链接 | 神龙链接 |
---|
标题: Release v1.1.0 · openvm-org/openvm · GitHub -- 🔗来源链接
标签: x_refsource_MISC
标题: Log in | Cantina -- 🔗来源链接
标签: x_refsource_MISC
标题: Byte decomposition of pc in AUIPC chip can overflow · Advisory · openvm-org/openvm · GitHub -- 🔗来源链接
标签: x_refsource_CONFIRM
标题: fix: auipc range check `pc_limbs[3]` to 6-bits · openvm-org/openvm@68da4b5 · GitHub -- 🔗来源链接
标签: x_refsource_MISC
标题: openvm/extensions/rv32im/circuit/src/auipc/core.rs at 0f94c8a3dfa7536c1231465d1bdee5fc607a5993 · openvm-org/openvm · GitHub -- 🔗来源链接
标签: x_refsource_MISC