近日,由 Sui 基金会,Tencent Cloud,Numen Cyber 联合主办,Suiet,Somis,Souffl3 提供支持的 Sui 生态工作坊及交流会顺利于香港举行。
Numen Cyber 联合创始人兼首席安全研究员 Nolan Wang 参与交流会,并以 Move 安全性为主题,从现有智能合约语言与 Move 语言对比,Move 语言的特点与优势,Move 智能合约漏洞类型分析梳理等角度进行了分享。
智能合约是保障区块链安全运行的重要组件之一,一般有两种实现形式。
一是使用既有编程语言并通过虚拟机运行,二是通过从头构建新的编程语言和虚拟机实现。但又因智能合约与传统项目有着截然不同特点,即智能合约是一个狭窄的任务集,需要的是少量且趋于完美的代码,以保证背后资金的安全性,传统语言(JavaScript,Python,Rust,WASM 等)与智能合约的适配性并不是很好。那什么优良的智能合约该是什么样子的呢?Nolan 给出了他的答案:智能合约语言需要自定义资产、所有权、访问控制的安全抽象等功能,不需要超越数字资产变成范围之外的功能。Move 虽然是较为年轻的编程语言,但也是目前最适用于智能合约的语言之一。Nolan 将行业内同样流行的 Solidity 语言和 Move 语言进行了对比。可以看出 Solidity 的对象抽象能力有限(由于并不丰富的原始数据类型,以及对结构体对象没有良好的支持),更多时候是面向过程来去编写合约功能。而 Move 是专注于资产和权限控制的区块链编程语言,并且对象抽象能力强,强调安全性和正确性,采用资源导向的设计,资产可以作为对象来相互转移,并不像 Solidity 的资产,必须是与账户强绑定的关系。同时,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 执行模块中,对于链上节点而言,如果执行字节码代码,将引发 DoS 攻击,严重时可导致 Aptos 网络完全停止,窃取资产,造成不可估量的损失,严重影响节点的稳定性(点击查看)。
第二个漏洞发生在 reference_safety,Move 语言在执行字节码之前会验证代码单元的4个步骤之中(点击查看)。
Numen 在发现两个漏洞后第一时间报告给了官方,目前两个漏洞皆已修复。
Nolan 列举的 Move 合约部分漏洞
Nolan 总结道,“综合上述漏洞的客观存在,我们可以看到在今天的数字世界中,并不存在绝对安全的语言。每个创新技术都伴随着新的安全威胁,在 Web3 世界尤甚。我们必须做更多的安全打算来保护我们的数字资产和隐私。"
Numen Cyber 联合创始人兼首席安全研究员,曾任职华为、奇虎360做安全研究,在 ISC2018、腾讯 CSS2019 等安全大会担任分享嘉宾。善于漏洞挖掘,安全技术研究,发现过 Windows,iOS/macOS 等系统漏洞,浏览器 以及 L1,smartcontract 等 web3 漏洞在内的众多漏洞。https://github.com/NumenCyberhttps://twitter.com/@numencyberhttps://medium.com/@numencyberlabshttps://www.linkedin.com/company/numencyber/
文章来源: https://mp.weixin.qq.com/s?__biz=Mzg4MDcxNTc2NA==&mid=2247485779&idx=1&sn=9d702716f5ddf7f146150eadabab22ce&chksm=cf71bbc8f80632de02625b9bbc17cd312ea7a8693d147cf7c8aa081a3b2eb81bb62855df6388&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh