技术解析:Cetus Protocol黑客攻击事件的深层原因与启示

华雨欢1天前

来源:推特@tmel0211

近日,Cetus Protocol遭遇了一起严重的黑客攻击事件,技术社区对此进行了深入分析。本文将从通俗角度解读技术大佬对此次事件的分析内容,并揭示其背后的技术逻辑。

此次攻击的核心问题被定位为一个数学计算溢出漏洞,而非底层语言设计缺陷。以下是详细的技术拆解:

漏洞本质:

最初推测漏洞源于类型转换(如u256到u64)导致的数据截断,但进一步沟通后确认,问题实际出现在`get_delta_a`函数的溢出检查机制失效。

技术细节:

1)函数作用:
`get_delta_a`函数用于计算在添加指定流动性时所需的token A数量。
2)关键缺陷:
在实现过程中,`checked_shlw`函数的溢出检查存在编码错误,未能阻止无效的大流动性值通过验证。
3)攻击利用:
攻击者通过构造特殊流动性值,成功绕过失效的溢出检查,并借助`div_round`的向上取整机制,使得所需token A数量被异常缩减至仅需1个。

攻击效果:

攻击者以极低成本(仅1个token A)铸造了巨额流动性份额,随后通过销毁部分流动性实现了对资金池的套利操作,最终抽干了资金池。

类比说明:

可以将此漏洞类比为一个只能显示8位数字的计算器尝试计算10亿×10亿的结果。由于精度不足,前12位数据被截断,只保留后8位。攻击者正是利用了这种“计算精度缺失”的漏洞,成功实施了攻击。

Move语言的安全性:

值得注意的是,本次漏洞与Sui Network的底层安全架构无关,也未暴露Move语言本身的设计缺陷。实际上,Move语言在资源管理和类型安全方面表现出色,能够有效防范双重支付、资源泄露等常见安全问题。

然而,Move语言的严格类型系统对于显式类型转换(explicit casting)仍依赖开发者的正确判断。当程序主动执行类型转换时,编译器无法区分这是否是有意设计或逻辑错误。

此外,这次安全事件并未涉及Sui的共识机制、交易处理或状态管理等核心底层功能。Sui Network只是忠实执行了Cetus协议提交的交易指令,漏洞的根本原因在于应用层协议本身的逻辑缺陷。

总结:

尽管Move语言在防范底层安全风险方面表现出色,但它无法替代开发者进行业务逻辑的边界检查和数学运算的溢出保护。再先进的编程语言也无法完全杜绝应用层的逻辑错误。

类似的攻击事件再次提醒我们,在智能合约开发中,严谨的代码审计和边界条件检查至关重要。只有全面提升开发者的安全意识,才能更好地保护去中心化金融生态的安全。

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代币币情的观点或立场