DeFi协议再遭重击:70枚ETH因算法漏洞流失
区块链安全机构慢雾于8月10日发布监测警报,揭示了一起针对去中心化稳定币项目的安全事件。攻击者利用协议核心合约中的一个隐蔽数学漏洞,成功盗取了约70.83枚以太坊。这并非简单的黑客入侵,而是一次对协议底层经济模型设计缺陷的精准利用。
漏洞根源:赎回定价逻辑的“数学陷阱”
问题的核心出在名为defund()的赎回函数内部。该函数中ethFromDefund()的定价机制在设计上存在根本性缺陷。
为了确定用户赎回资产时应获得的以太坊数量,该函数采用了一种混合定价法:取当前FUM(协议治理代币)的卖出价与预估的终期卖出价的算术平均值,作为计算对价的基础。这个设计初衷或许是为了平滑价格波动,但它忽略了一个关键属性——拆分不变性。
攻击手法:化整为零的“套利艺术”
正是由于算法不具备拆分不变性,结合合约中设置的状态收缩系数和整数取整机制,攻击者发现了一个可乘之机。
- 单次大额赎回:用户一次性赎回大量FUM,按照有缺陷的算法计算,只能获得对应比例的ETH。
- 多次小额拆分:如果将同等数量的FUM,拆分成64次或更多次的小额赎回操作,每次操作都会独立触发那套有问题的定价和取整逻辑。
每一次小额赎回,由于取整和系数的影响,都可能“四舍五入”或计算出略微超出理论值的ETH。积少成多,经过数十次操作后,最终提取的ETH总量会显著超过一次性赎回应得的数额。这中间的差额,就成了攻击者的利润。
事件反思:超越代码漏洞的安全维度
这起事件给DeFi领域带来了深刻的教训。它提醒开发者和审计者,安全不仅仅是防止重入攻击或溢出错误。
数学模型的严谨性与代码本身的安全性同等重要。任何涉及资产定价、兑换比率和状态计算的算法,都必须经过严格的数学验证,确保其在不同操作路径和规模下表现一致,尤其是要验证其是否满足“拆分不变性”等金融合约基本属性。
对于用户而言,这也再次表明,参与新兴DeFi协议,尤其是涉及复杂金融工程和算法稳定机制的协议时,必须充分理解其潜在风险。协议在启动前,需要经过多轮由不同专业团队执行的、涵盖代码与数学模型的双重深度审计。