在节奏飞快的 DeFi 世界里,安全漏洞可能在瞬息之间发生,最近针对 MIM Spell 的攻击就是一个惨痛的提醒。根据区块链安全公司 BlockSec 的 Phalcon 团队的详细拆解,该协议因其核心功能被巧妙利用,损失约 170 万美元。下面我们一步步分解,让即便你刚接触智能合约也能看懂发生了什么。
MIM Spell 攻击发生了什么?
攻击发生在数小时前,目标是 MIM Spell 协议——它属于 Abracadabra 生态系,处理像 MIM(Magic Internet Money)这样的稳定币。攻击者利用了 "cook" function 的一个弱点,这个关键功能允许用户将多个操作捆绑成一个交易以提升效率。可以把它想象成厨房搅拌机:你丢进去多种“配料”(操作),输出即为烹饪好的结果。但在这个例子里,配方里有致命缺陷。
通过执行特定的操作序列——也就是先借贷资产然后触发一个空操作——黑客成功绕过了关键的安全检查。这使他们能够借出远超应得的资金,最终带走了大约 1.793 million MIM 代币(约合 170 万美元),并迅速将其兑换为利润。
Phalcon 团队在 X(前身为 Twitter) 上指出,正是因为各操作共享同一状态对象才产生了该漏洞。这是区块链领域中哪怕是微小代码疏忽也能导致巨额损失的经典案例。
深入根本原因
问题的核心在于 cook function 的逻辑。这里做一个简化说明:
Action 5 (BORROW): 在这里发生借贷。当触发时,会将一个名为
needsSolvencyCheck
的标志设为 true。该标志的目的是确保在所有操作完成后,用户的账户不会资不抵债——也就是他们欠的不会超过抵押能覆盖的范围。Action 0(空陷): 在借贷之后,攻击者插入了 Action 0,它调用了一个名为
_additionalCookAction
的内部函数。关键在于:这个函数基本上是空的。它什么也不做,默认将needsSolvencyCheck
标志重置为 false。
由于 cook function 中的所有操作共用同一状态对象,这次重置覆盖了先前被设为 true 的标志。结果是什么?交易结尾处的最终资不抵债检查被完全跳过。没有任何红旗被触发,借贷因此未被校验而通过。
攻击者在六个不同地址上重复使用了这一伎俩,每次都采用动作序列 [5, 0]。手法高效且狡猾,也再次凸显了在 DeFi 协议中进行彻底审计的必要性。
为什么这对 meme 代币爱好者很重要
虽然 MIM 本身是稳定币,Abracadabra 平台却支撑着多种 meme 风格和杠杆仓位的玩法。此类攻击会在生态系统中引发连锁反应,侵蚀信任并可能影响相关代币如 SPELL。对于 meme 代币持有者和交易者来说,这是一记警钟:要分散风险、使用经过审计的平台,并随时关注安全告警。毕竟在以炒作驱动价值的 meme coin 领域,一次漏洞就能把收益变成关于损失的段子。
如果你在构建或投资区块链项目,像 BlockSec 的 Phalcon 这类工具可以帮助实时监控威胁。保持警惕至关重要——正如这次事件所示,即便是看似成熟的协议也并非万无一失。
教训与后续方向
这并非 Abracadabra 的第一次事故;类似问题此前也曾出现过,强调了对健壮且多层次安全机制的需求。开发者应优先考虑在批处理函数中为各操作使用隔离状态,并实现难以被轻易绕过的保险措施。
对于社区来说,持续关注 MIM Spell 的更新,并在参与任何 DeFi 池子前评估风险。区块链令人兴奋,但同样是一个以谨慎为赢的边疆。如果你受到了影响或对这次攻击有看法,欢迎在下方留言——我们很想听听你的观点。