无人审计的RWA攻击:代币化资产实际崩溃之处
真实世界资产(RWA)是当下加密货币领域最热门的叙事。代币化的美国国债、私募信贷、黄金和股票已经吸引了数百亿美元上链,传统金融界的巨头们——贝莱德(BlackRock)、富兰克林邓普顿(Franklin Templeton),以及为几乎每一笔美股交易做结算的清算所——如今都在直接发行或清算代币。这个卖点很清晰:把一种安全、平淡、能生息的资产放到永不休市的轨道上。
但在过去两年里,一系列 RWA 及 RWA 相关协议损失了大笔资金——单次就达数千万美元——而且几乎没有一次亏损是以人们预期的方式发生的。代币化技术并没有失败。智能合约在大多数情况下也都经过了审计。资金是从标准代码审计根本无法覆盖的缝隙中流失的。本文将梳理实际发生的情况,指出造成多数损失的那条缝隙,并说明什么样的检查能够发现它。
事件列表中隐藏的模式
以下是过去一年半里最引人注目的失败案例,也是当下真正值得关注的几个:
- Ostium(2026年7月),约1800万美元。一个 RWA 永续合约交易所(大宗商品、外汇、股票)。一把被入侵的预言机签名者密钥提交了未来日期的价格,抽干了金库。当预言机就是支付本身时,一个错误的价格不是定价错误的贷款——而是直接提款。
- StablR(2026年5月),铸造了约1350万美元,被提取约280万美元。一家马耳他持牌、符合 MiCA 规范的法定货币背书稳定币发行方。三选一铸造多签中的一把密钥被入侵;攻击者把自己设为管理员,移除真实签名者,并铸造了数百万枚无背书的 USDR 和 EURR。一家受监管的发行方,竟是通过自己的铸造权限被抽干的。
- Stream Finance(2025年11月),披露了9300万美元的损失,还欠贷方约2.85亿美元。一种由链下基金经理策略驱动的收益型"稳定币"。经理在链下亏掉了资金,窟窿被不透明的会计处理和策展人循环所掩盖,借贷市场将代币硬编码为1美元——所以链上毫无反应,直到一切在一瞬间重新定价。它还连带把 Elixir 的 deUSD 一起拖跌了98%。
- Zoth(2025年3月),约840万美元。一个建立在代币化美国国债之上的 RWA 再质押协议。一把被入侵的部署者密钥让攻击者把金库代理升级为恶意逻辑,抽干了底层抵押品——这是2025年上半年最大的一起针对 RWA 的漏洞利用事件。
- CrediX(2025年8月),约450万美元。一个基于 Sonic 的借贷协议。攻击者提前几天通过访问控制管理器悄然获得了管理员、桥接和池角色,然后铸造了无背书的信用代币,并以其为抵押借款。团队事后消失。
- Usual USD0++(2025年1月)。一种 RWA 背书的收益型稳定币。借贷市场将生息债券硬编码为1美元;当发行方突然引入远低于该价格的赎回下限时,这些硬编码了价格的借贷市场利用率瞬间拉满,把贷方困在三位数的借款利率之下,而跟踪真实价格的平行市场则在 USD0++ 跌向该下限时清算杠杆持有者。
十八个月内发生了六起事件,而且这还不是全部。类似的案例,如 KelpDAO 桥接失败(1-of-1 配置下被入侵的 LayerZero DVN,未发现链上代码漏洞)给 Aave 留下了九位数的坏账,同属运营缝隙一类;rsETH 本身是流动性再质押而非 RWA,但其机制和由此产生的无背书抵押品坏账,与我们在 StablR 中看到的模式相同。较早的警示故事——Maple 在2022年 FTX 事件后的链下借款人违约,Tangible 房地产背书的 USDR(与 StablR 的代币不同,只是 ticker 相同)在2023年跌至51美分——与这些事件如出一辙,但这一模式在最近这批事件中最为清晰、规模也最大。
把它们放在一起读,一个轮廓便浮现出来。几乎所有事件都可以归结为两个根本原因之一:要么是一个被入侵的链下写入者——即负责推送价格或铸造供应的角色、机器人或密钥(Ostium、StablR、Zoth、CrediX);要么是一个硬编码或过期的预言机,让风险控制从未触发(Stream、Usual,以及几乎所有事件中的下游贷方)。还有几个甚至更简单:一个真实借款人违约,或者一笔非流动性储备在挤兑中来不及卖出。
而几乎所有事件都不是对代币化本身的精妙利用。RWA 很少发明新的漏洞类别。它只是沿袭了 DeFi 最古老的几类漏洞——错误定价的预言机、无限制的铸造、被入侵的密钥、无法平仓的清算——并剥掉了原本约束它们的安全网。其中两个根本原因——被入侵的写入者和硬编码的预言机——本质上是运营和配置上的失败;它们同样足以让一个纯加密原生的协议覆灭。
而恰好有一种失败是 RWA 所特有的,也是其中最悄无声息的:代币不再由它所代表的东西背书,链上却没有任何机制能自行察觉到这一点。Goldfinch 就是最清晰的案例——代码经过大量审计,没有代码漏洞,但真实借款人停止还款,代币的供应量超出了其实际背书,直到存款人开始挤兑。这个缺口有一个名字,也有一个修复方案:储备证明(proof-of-reserves)——一项实时的链上检查,确保已发行供应量永远不会超过真实储备。这是 RWA 唯一原生的控制措施,却几乎没有人把它内建到代币合约中。
为什么 RWA 剥离了安全网
要理解为什么旧漏洞在这里危害更大,你需要看一个特定的地方:链下数字跨上链的那个点。
每个 RWA 协议的生死都系于一个数字——价格、资产净值(NAV),或者它所代表资产的储备余额。这个数字并不存在于链上。它是在链下由基金管理员、托管人或定价机器人计算出来的,然后由某个特权方写到链上。一个代币化的国债基金不像 ETH 那样有市场价格;它只有一个 NAV,由某位管理员每天计算一次,再由一把密钥推送到链上。这个跨越点——我们称之为交汇点(junction)——是价值流入之处,也是价值流出之处。
一个加密原生资产在这里天然有防御手段。ETH 在几十个交易场所全天候交易,预言机因此可以聚合多个数据源、与实时市场交叉核对,并标记出任何偏离。RWA 通常一样也做不到。一只基金的 NAV 恰好只有一个合法来源——管理员——所以没有多个来源可供聚合,也没有市场可以对照。最强的预言机设计对大多数 RWA 发行方而言根本不可用;他们只能被迫使用最弱的那种——由一把密钥签出的一个数值——然后让所有下游逻辑都信任它。
现在,再叠加杠杆。一个包装器的 NAV 有5%的误差,在代币静静躺在钱包里时,不过是个脚注;但在四倍杠杆下,它就是你权益上20%的误差——是健康市场与崩盘之间的区别。而且抵押品还会反噬:大多数 RWA 每天只重新定价一次,结算要等到一天甚至更久之后,而且可能没有流动的二级市场。杠杆默认你可以快速退出;RWA 抵押品则默认你做不到。两者叠加,仓位在变坏时根本无法平仓——坏账就这样以未实现的形式,停留在一个看起来仍然全绿的仪表盘上。
三种失败,以及各自如何防范
把上述模式拆解开来看,缓解措施就变得具体了。
失败一:链下写入者被入侵
Ostium、StablR 和 Zoth,是同一个故事的三个版本。一把特权密钥——可能是铸造角色、预言机签名者、部署者,也可能是某个门槛过低的多签中的一名签名者——通过链下基础设施泄露出去;一旦攻击者拿到它,合约就会完全照办。这当中没有任何合约漏洞;合约只是在听命于一个已不再值得信任的受信方。StablR 则是最触目惊心的版本:一家受监管、获 MiCA 许可的发行方,其铸造权限只由一把三选一多签守护,这意味着任何一把密钥被入侵,都足以重写签名者列表、铸造出无背书的代币。许可证并不是安全控制。
缓解措施是一整套组合方案。在链上,要限制单次写入所能做的事:一个Hook上限(peg cap),让稳定币永远无法定价超过1美元;一个偏差限制,让任何一次写入都无法把数值移动得太远;以及一个安全铸造检查,在发行量超过所报告储备时拒绝放行。在链下,要把握有这一权力的密钥像看待王冠上的明珠一样去审视——托管、轮换、真正的多签门槛(而不是铸造权上的三选一)、以及让机器人能够对数值签名的整条流水线。最大的失败恰恰发源于链下那一半,但几乎没有人审查它,因为代码审计止步于合约边界。
失败二:硬编码或过期的预言机让刹车无法触发
Stream 和 Usual 犯了同一个错。有人把代币价格硬编码为一个常数——1美元——或者接入了一个没有新鲜度检查的喂价。只要没有任何东西强制重新定价,风险控制就永远察觉不到资产已经发生变化。硬编码预言机是这一层策展人损失中最常见的单一根因,而且它一次又一次地重复发生。
缓解措施是真正的预言机纪律:一个有边界的数值,让操纵变得毫无意义;一项链上新鲜度检查(这里有个微妙之处:每日 NAV 在周末合法地不更新,所以检查必须感知日历);一个偏差守卫;以及——只要该资产在任何一个真实市场上有交易——与那个市场的交叉核对。反复出现的反模式是:一个价格在技术上"已设置",却从未真正重新定价;它会一直保护你,直到资产发生变动——而那恰恰是它唯一重要的时刻。
失败三:抵押品无法及时出售或赎回
Tangible 的 USDR 是最清晰的例子——储备是真实的,但其中大部分是房地产,而你不大可能在一个下午卖掉一整栋楼;当持有者挤兑时,微薄的流动性缓冲被耗尽,Hook随之破裂。Maple 则是信贷版本:一个真实借款人违约,而链上没有任何机制能强制偿还一笔链下贷款。
缓解措施不是代码,而是在杠杆上线之前先做一番经济审查:流动性缓冲有多大?抵押品结算有多快?当资产每周才可赎回一次时,清算路径是什么?"没有发生过清算"在这里并不能让人安心——面对非流动性抵押品,一个资不抵债的仓位根本不会被平仓,损失留在账外,仪表盘保持绿色,而窟窿在不断扩大。
代币被设计为信任链下流程
这些失败之所以集中在交汇点,有一个更深层的原因:代币合约在设计上就是要信任它。一个代币化资产有两种形态。一种薄包装——大多数代币化股票、黄金和国债都是如此——就是一枚近乎标准的代币,带两个按钮:铸造和销毁。当发行方在链下买入真实股份时,由一把特权密钥按下铸造键;合约只检查调用者是否有权这么做,并不检查储备是否增加、价格是否正确。铸造数量完全以发行方链下流程给出的数字为准。因此,供应完整性完全系于一把密钥——这正是 Zoth 和 StablR 的故事:没有精妙的漏洞利用,只是一个本不该能铸造的人按下了铸造键。
另一种是许可型代币(面向受监管证券的 ERC-3643 标准),它会在链上依据身份注册表和合规规则手册检查每一笔转账。涉及的机制要多得多——但它把写进代码里的超级权力交给了发行方:冻结某个钱包、强制转账、重新分配某个持有者的全部余额。最后一项的存在,是为了让丢失密钥的投资者能够找回资产;但令人不安的是,恢复和没收是同一个函数——任何持有发行方密钥的人,都能转移任何人的代币。然而,这两种形态虽然截然相反,却共享同一个盲点:两种合约里都没有任何机制把流通中的代币与其背后的资产联系起来。"供应与储备相匹配"这一点,外部人可以观察到,合约却从不强制执行——这不是一个可以打补丁修复的疏漏,而是把链下资产放到链上的固有特性。
令人不安的部分:代码经过了审计
正因如此,接下来的这个事实应当重塑行业购买安全的方式。这些协议中的大多数都做过审计——Goldfinch 由两家顶级公司审计,Ostium 由多家审计——而且代码在接受审查的那一天,大体上都是正确的。问题恰恰就在这里。时点审计拍下的是一张照片,而这些系统的失败方式却像视频:供应量在审查之后悄悄超出储备;一个策展人在上线六周之后把预言机硬编码为固定值;一个 NAV 在某个周六过期;一把签名者密钥通过审计从未涉及的基础设施泄露。
因此,RWA 安全问题有三条腿,而市场只兜售其中一条。链上代码,审计覆盖得很好;链下那一半——密钥托管、签名者管道、NAV 计算、托管人核对——最大的事件实际上正是从这里开始的,而这一半几乎无人审查;再有就是持续性那一半——实时地、从外部观察事件已经留给我们的那少数几个不变量。事件已经替我们写出了检查清单。唯一的问题是,在协议运行期间,是否有人在三条腿上都读它。
该怎么办
关于这整份失败记录,最有用的地方在于:几乎所有失败都可以在链上观察到,无需发行方配合。供应量与储备的对照(监管正在向 MiCA 等框架下的强制性储备证明迈进)、NAV 新鲜度与能感知市场的心跳检查的对照、预言机与任何真实二级市场的对照、每一次特权角色变更和密钥轮换——每一项都不过是把上面某个事件倒过来,变成一项检查。没有一项需要新颖的检测器;它们需要的是有人持续地观察。
- 原文链接: mixbytes.io/blog/the-rwa...
- 鸿途知科网 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
版权声明
本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。
鸿途知科网
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。