Movement的Aptos核心仓库已合并一项重大安全修复,解决了机密资产转账证明批验证中的漏洞。该问题涉及多标量乘法(MSM)批处理优化中的伽玛索引分配碰撞。
漏洞详情
机密转账证明包含多个验证者必须检查的代数方程。为优化性能,批验证者通过将每个方程乘以不同的随机权重(称为"伽玛")来合并它们。每个伽玛从唯一的索引对`(i, j)`结合一个新鲜随机标量导出。如果两个不同的证明关系意外接收到相同的伽玛,攻击者可以构造一个值,使得一个关系中的错误相互抵消另一个关系中的错误,从而完全绕过批检查。
在拥有两个或更多审计员时,`msm_transfer_gammas`函数中出现了该漏洞。审计员密文检查(`g7s`)的索引分配对审计员`k`使用`7+k`,因此审计员1的检查接收索引`8`。同时,发送者的转账金额证明(`g8s`)被硬编码为使用索引`8`,在涉及多个审计员时导致碰撞。
修复方案
该补丁将`g8s`修改为使用`7 + auditors_count`而不是硬编码的`8`,确保其始终出现在最后一个审计员检查之后。这是仅验证者的变更——伽玛在证明提交后在链上计算,因此证明生成和客户端SDK不受影响。
测试与影响
该修复包括78个Move单元测试和143个Rust端到端测试,包括一个新的回归测试,证实碰撞的存在并验证修复的有效性。白皮书已更新,新增"批处理健全性"小节记录修正后的伽玛索引布局。该漏洞仅在拥有2个或更多审计员时才会出现;拥有0个或1个审计员的系统不受影响。

