近日,由 Sui 基金会,Tencent Cloud,Numen Cyber 联合主办,Suiet,Somis,Souffl3 提供支持的 Sui 生态工作坊及交流会顺利于香港举行。
Numen Cyber 联合创始人兼首席安全研究员 Nolan Wang 参与交流会,并以 Move 安全性为主题,从现有智能合约语言与 Move 语言对比,Move 语言的特点与优势,Move 智能合约漏洞类型分析梳理等角度进行了分享。
智能合约语言不需要数字资产编程外的功能
Move 是真正的 Game Changer
如果回顾 Move 的历史,可知 Move 最早是为 Meta(Facebook)的 Diem 项目开发,据说当时没有一种语言具备稀缺性、确定性和可验证性的特性,于是 Move 诞生了。
作为基于 Rust 的编程语言,Move 是最早的关于如何设计语言以适应类型系统、静态类型和编译时检查等问题的语言。
又因 Diem 的项目定位,Move 着重强调安全性,能够提供是代码验证器和 VM 级别的保护。
Nolan 表示,通过字节码验证,Move prover,资源抽象,线性类型系统等设置,Move 语言获得了大幅度安全性的提升。
同时,Nolan 在研究中得出了关于 Move 语言的7个特点,分别是:
1.没有动态调用(no re-entrancy);
2.不会混淆变量别名和可变/不可变性(借鉴 Rust 语言特性);
3.强制类型/内存/资源安全(通过字节码校验);
4.不存在整数溢出漏洞;
5.Move Prover 形式化验证确保合约的安全;
6.没有 modifier;
7.通过线性逻辑语义来自定义资源类型:资源永远不能被复制或式删除,只能移动。
在 Nolan 看来,Move 是真正的 Game Changer,是面向真实数字资产的程序语言(RDAO Real Digital Assets Oriented Program Language)。
没有绝对安全的语言
在分享了 Move 语言的特点与优势后,Nolan 分享了两个由 Numen 检测到的关于 Aptos MoveVM 的整数溢出漏洞。
MoveVM 和 EVM 虚拟机一样,都是把源代码编译成字节码,然后在虚拟机中执行。
其中一个漏洞出现在 Move 执行模块中,对于链上节点而言,如果执行字节码代码,将引发 DoS 攻击,严重时可导致 Aptos 网络完全停止,窃取资产,造成不可估量的损失,严重影响节点的稳定性(点击查看)。
第二个漏洞发生在 reference_safety,Move 语言在执行字节码之前会验证代码单元的4个步骤之中(点击查看)。
Numen 在发现两个漏洞后第一时间报告给了官方,目前两个漏洞皆已修复。
Nolan 列举的 Move 合约部分漏洞
Nolan 总结道,“综合上述漏洞的客观存在,我们可以看到在今天的数字世界中,并不存在绝对安全的语言。每个创新技术都伴随着新的安全威胁,在 Web3 世界尤甚。我们必须做更多的安全打算来保护我们的数字资产和隐私。"
原文始发于微信公众号(Numen Cyber Labs):Nolan:智能合约语言不需要数字资产编程外的功能
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论