Beosin | 正式推出针对Move智能合约的安全审计服务,从安全角度看Move语言(下)

shuilan2022-11-25 18:43:39Beosin

此前,Beosin宣布了全新升级的安全审计服务,而现在,Beosin安全团队正式宣布推出针对Move智能合约的安全审计服务,旨在提前发现并协助项目方修复项目中的安全风险,保障用户与项目方的资产安全。


在上一篇中从安全角度看Move语言(上),我们深入探讨了Move语言的特性,从安全角度介绍了Move的设计,在本文中我们将通过Move与solidity的比较来进一步加深大家对Move的理解,然后将介绍我们研究团队总结的Move项目可能出现的安全漏洞点和对应的审计点,为使用 Move 的项目方保驾护航。



1. Move 与 Solidity 的比较


1.1 账户模型



Solidity:
在大多数以太坊 ERC-20 合约中,每个地址的余额都存储在一个类型的状态变量mapping(address => uint256)中,该状态变量存储在特定智能合约的全局存储中。其结构如下图所示:
 

图源:

https://github.com/move-language/move/tree/main/language/documentation/tutorial



Move:
Move 中,类比solidity智能合约的模块瑟吉欧没有自己存储空间的。相反,Move 的“全局存储”是由地址索引的,每个地址下存储了 Move 模块和 Move 资源,而资源存储是类型到值的映射。其结构如下图所示:
 

图源:
https://github.com/move-language/move/tree/main/language/documentation/tutorial


1.2 代码存储


Solidity: 

在基于EVM的链中,所有智能合约都有一个独特的地址,称为"合约拥有地址"。合约账户与部署者账户(EOA)存在于在同一级别,代码hash存储在合约账户地址中,合约部署后不与部署者地址绑定。
 



MOVE:
在基于 MoveVM 的链中,代码存储在Account resource的code module里面。
 



1.3 安全隔离



Solidity:
智能合约的运行环境是链的节点给构造出的沙箱环境,多个合约程序是运行在同一个进程内的不同的虚拟机沙箱。智能合约之间的调用是同一个进程内不同的智能合约虚拟机之间的调用,安全完全依赖于智能合约虚拟机之间的隔离。



 
Move:
Move 的做法则是通过 MoveVM 让采用 Move 语言的区块链具备确定性,将合约调用放在同一个虚拟机沙盒中,通过编程语言内部的安全性对智能合约的状态进行隔离,而非依赖虚拟机进行隔离。


 

1.4 合约升级


Solidity:

EVM 中合约升级的方法是将合约数据和逻辑分析:代理合约(Proxy)负责转发交易到逻辑合约,并保存合约数据;逻辑合约(Logic)负责实现功能逻辑。升级时,只需要重新部署新版本的逻辑合约,并将代理合约中的逻辑合约实例指向新版本逻辑合约实例即可。此时,逻辑合约升级并不会影响合约原来已有的数据。 


如下图,代码存储字段指定的是代理能合约被调用时做delegate call的合约代码,合约升级本质上是部署一个新的逻辑合约,并改变code字段以重定向delegate call。
 

Move:
Move 语言中对于合约升级,其实现是在系统模块code.move中执行升级逻辑,在代码部署前检查升级策略和兼容性。在兼容性检查后,写在resource中的代码通过一个原生函数调用被替换,并将执行新的逻辑。
 

图片截取自:
https://github.com/aptos-labs/aptos-core/blob/main/aptos-move/framework/aptos-framework/sources/code.move#L132


2. Move 程序可能出现的漏洞点



1) 开发者在使用Aptos、Sui,或者其他基于Move的blockchain中独特的Framework进行开发时,应保持一定程度的安全意识,确保供应链安全。


2) 函数权限问题。对于一些函数调用的权限要仔细划分,因为一些关键函数会涉及到治理,严重的会影响到资金安全,针对这种函数调用需要对调用者进行鉴权。


3) 业务逻辑在设计和代码实现时,均需注意其中的逻辑问题。


4) 关于Move系项目,在模块升级时需要注意的点:


•根据合约升级政策,代码的所有者对升级权限有完全的控制权。
•代码的 owner 在初始部署后是不可改变的。
•部署者的地址在部署后永远拥有升级权限。


3Move 审计服务与Move审计项



Beosin安全团队正式推出针对Move智能合约的安全审计服务,旨在提前发现并协助项目方修复项目中的安全风险,保障用户与项目方的资产安全。其主要安全审计项包括:


•溢出漏洞
•重放攻击
•不安全的随机数
•交易顺序依赖
•拒绝服务
•访问控制
•权限不当
•变量覆盖
•业务设计
•业务实现
•可操纵的代币价格
•套利攻击
•Gas优化
•第三方模块安全
•能力安全
•资源安全
•升级安全
•中心化风险


Beosin作为一家总部位于新加坡的区块链安全公司,业务涵盖项目上线前的代码安全审计、项目运行时的安全风险监控、预警与阻断、虚拟货币被盗资产追回、安全合规KYT/AML等“一站式”区块链安全产品+服务,目前已为全球2000多个区块链企业提供安全技术服务,审计智能合约超过2500份,保护客户资产高达5000多亿美元。欢迎点击公众号留言框,与我们联系。


参考文献:
https://developers.diem.com/docs/technical-papers/move-paper/
https://mirror.xyz/asmp.eth/xUzqdBXewRPhLKLAYekiwU5S9uFiTnJ3f56KbkcOz-M
https://mirror.xyz/jolestar.eth/sQ0nMCO3eNig6gCzqQO7xew1mn8oUi1-rKtfZKmGlNI
https://medium.com/@kklas/smart-contract-development-move-vs-rust-4d8f84754a8f


















深度解析加密货币与电子竞技如何共生发展?

原文标题:HowCryptoandEsportsAreFuelingEachOther’sGrowth原文作者:AndrewHayward原文编译:Diamond,WhoKnowsDAOTSMCEOAndyDinh(左)andFTXCEOSamBankman-Fried:TSM/FTX在加密货币/体育交易方面发挥了领导作用从...

Buidler DAO 一文读懂IBC:Cosmos 跨链通信协议

BuidlerDAO:Web3人才与项目孵化器https://linktr.ee/buidlerdao商务合作WeChat:w55566567编排:@Coucou注:文章仅代表作者个人观点,不构成任何投资建议。TL;DR▪IBC不仅解决了区块链互操作性问题,而且以信任最...

Cosmos 2.0 升级关键时刻:影响深远的三大提案悬而未决

这是白话区块链的第1776期原创作者|五火球教主出品|白话区块链(ID:hellobtc)很多人可能不知道的是,现在的Cosmos,正处在一个非常关键的时刻。你可能会疑惑?嗯?什么关键啊,不是前段时间刚刚发布了Cosmos2.0的...

Lens与冬小麦种植艺术:Web3社交的逻辑与机会

作者:北辰互联网的尽头是社交,几乎所有的巨头都要不断试水社交领域才能缓解流量焦虑,虽然大多数时候都证明了其实是安慰剂。区块链虽然才刚刚开了个头儿,远远谈不上尽头,但过去一两年也冒出了不少关于社交应用的...

一文读懂数据可用性赛道的发展现状

数据可用性(DataAvailability)主要存在于轻客户端节点相对全节点的语境下。对于轻客户端节点的数据可用性问题,行业内已经达成共识——采用纠删码(erasurecodes)来解决。不仅轻客户端节点有数据可用性问题,Laye...

TAG:ETH
上一篇:IOSG Weekly Brief | 为什么我们看好零知识证明硬件加速 #150
下一篇:丢失17000美元后,我如何保护自己的加密钱包?