状态分歧导致未授权访问 笔记

状态分歧导致未授权访问

研究人员在 Provenance 区块链(一条公共权益证明链)中发现了一个关键漏洞,该漏洞允许未经授权的用户获取对标记账户的管理权限。此漏洞影响了主网上代表活跃金融资产的 82 个标记(Marker)。该漏洞存在于 1.28.0 版本之前的版本中,并于 2026 年 4 月 1 日报告给 Provenance。该漏洞在 1.28.0 版本中得到缓解,并在 1.29.0 版本中完全修复。标记是 Provenance 用于同质化代币的核心原语,每个标记控制一个面额、一个访问控制列表、一个供应量字段以及一个托管余额。该漏洞存在于修改标记访问控制列表的授权检查中。具体而言,旨在授予持有标记 100% 供应量用户的访问条件的实现存在缺陷。对于以零供应量激活且供应量未固定的标记,存储的供应量字段保持为零,导致授权检查对任何调用者都评估为平凡成立。这使得攻击者能够通过单笔交易为自己授予管理员、铸造和提现权限,而无需持有任何代币。随后,他们可以铸造新代币或从标记的托管余额中提取资产。影响十分严重,部分标记中的托管资金总额约为 50 万美元。初步缓解措施增加了一项检查,以防止在存储的供应量为零时授权通过。然而,完整修复涉及修改代码,直接从银行模块读取实时流通供应量,从而消除了状态不同步问题。根本原因被确定为标记结构与银行模块之间的状态不同步,以及授权谓词对零供应量状态存在漏洞。文章建议改进规范并采用基于属性的测试作为未来的预防措施。