Sui 合约安全与生态挑战分析

进阶12/17/2024, 5:31:12 AM
作为Move生态系统的重要成员,Sui致力于为多种区块链应用场景提供快速且安全的交易服务。本文将帮助您了解Sui生态系统用户和开发者面临的安全挑战,结合Beosin多年的安全审计经验。

自8月以来,Sui生态系统的发展迅速。根据DefiLlama的数据,Sui的TVL已超过10亿美元,在过去两个月增长了200%,目前基于Sui构建的去中心化交易所(Dex)Cetus的日交易量已超过1.6亿美元。

10月9日,Sui的原生USDC正式上线主网,这将继续吸引更多资金流入Sui生态系统。作为Move生态系统的重要成员,Sui致力于为多种区块链应用场景提供快速且安全的交易服务。本文将结合Beosin多年的安全审计经验,帮助您了解Sui生态系统用户和开发者面临的安全挑战。

合约安全

Sui使用Move作为其智能合约的编程语言。Move被设计为一种可执行字节码语言,内置安全算法和字节码验证器,并在调用合约时使用静态调用。

这种设计使得Move能够解决智能合约中的常见漏洞问题,如重入攻击、整数溢出、双重支付和潜在的编译器问题,但开发者在合约开发过程中仍有可能无意中引入漏洞。对此,Beosin在2023年推出了Move Lint工具,这是一款静态检测工具,能够自动化检测合约中的潜在安全风险并定位漏洞。

除了检测工具外,以下是开发者在开发Move合约时需要额外注意的安全问题,以提高合约的安全性:

1) 整数溢出

与其他智能合约语言相比,Move在执行整数数学运算时默认会自动检查溢出问题,这可以防止大量的溢出问题。然而,仍然有两个需要注意的点:

  • Move语言中的位运算不会自动执行溢出检查,因为位运算本质上是对数据进行位级操作,其行为与整数运算有所不同。
  • 当Move的自动溢出检查生效时,函数执行会抛出异常。如果设计不当,可能导致项目业务无法按预期执行,从而引发DoS(拒绝服务)攻击。

2) 权限与访问控制

在传递特权对象和特权函数调用时,必须小心进行身份验证,因为这些函数和对象涉及资金安全。此外,需要检查对象的类型,判断其是否是私有对象或共享对象。如果一个对象错误地从私有对象转换为共享对象,未经授权的用户可能能够访问该对象,构成潜在的安全风险。

开发者可以使用Move Prover来验证程序是否执行了明确的访问控制策略。例如,在std::offer中,我们可以看到,当接收者不在白名单中时,函数会终止:

3) 交易顺序依赖问题

交易顺序依赖(TOD)指的是合约的行为可能会根据交易执行的顺序产生不同的结果,尤其是在去中心化环境中,矿工或验证者可以选择交易的执行顺序。这可能带来如前置攻击(front-running)等风险。

在Sui中,仍然由区块生产者决定交易的执行顺序,因此,如果MOVE合约的设计依赖于交易顺序进行状态变化,则仍可能受到此问题的影响。

4) Gas消耗问题

在Sui链上,Move智能合约的Gas问题主要体现在合约执行所需的计算和存储成本上。随着合约复杂性和状态变化的增加,Gas消耗也随之上升。开发者需要关注优化合约逻辑,减少不必要的计算和状态更新,从而降低用户的交易成本,特别是要避免合约中的不可控迭代问题,这可能由于Gas不足而导致业务无法正常执行。

5) 计算精度

目前,Move支持的数值类型是无符号整数,并不支持浮动小数,因此在除法操作中,分数部分会被截断并向下舍入,这会导致计算结果不准确,可能影响一些关键政策,导致收益损失,甚至成为安全漏洞。

针对这个问题,通常的缓解措施是提高精度,但需要注意的是,最终结果获得时需要恢复精度。

6) 对象管理

在Sui区块链的Move智能合约中,对象管理是一个关键挑战,涉及对象生命周期、所有权、并发访问、序列化和存储成本等多个方面。开发者需要精确管理对象的创建、更新和销毁,以防止资源浪费和状态不一致。同时,合理设计合约逻辑,控制对象的所有权和访问权限,以及处理多个用户并发访问同一对象,都是确保智能合约安全高效运行的重要因素。

7) 业务逻辑设计与实现问题

例如,在Sui DeFi项目中实施闪电贷时,攻击者可以利用闪电贷进行大额资金攻击,如价格操纵等。

在常见的AMM代币交换功能中,开发者可以使用Move Prover来验证代币数量是否正确变化:

例如,借贷协议在经历一系列存款、借款和提现操作后,应始终确保完全安全。在链上永续合约交易协议的订单簿被取消后,已下单的内容应不会导致账本发生变化等,这些都需要开发者进行检查和验证。

Sui生态系统的挑战

目前,Sui的DeFi和Memecoins正在蓬勃发展,交易量和TVL(总锁仓价值)吸引了爆炸性的增长。随后,越来越多种类的诈骗和垃圾交易出现,用户需要小心避开。

网络钓鱼攻击

今年,Sui生态中出现了一种名为”Suisses”的空投骗局,导致许多用户资产被盗。当用户连接钱包到Suisses网站并点击Claim时,会弹出一个交易请求,要求转移用户的资产。如果用户签署了该交易,他们会发现钱包中的所有资产已被转移。

由于Sui的特性:一切都是对象,不仅仅是用户钱包中的代币,NFT也是对象,甚至用户参与DeFi挖矿、流动性质押等活动所获得的凭证也都是对象。如果发生网络钓鱼攻击,黑客可能一次性转移用户在Sui生态系统中的所有资产。

代币诈骗

在Sui生态系统中,存在大量假冒代币和诱饵池(honeypots)。尤其是在用户交易Sui生态系统中的memecoin时,他们可能会不小心陷入骗局。

在Sui创建代币时,如下所示,黑客可以使用与流行或主流代币相同的图标和名称,使得普通用户难以分辨。因此,用户在购买代币时,需要仔细检查代币的数据格式是否正确。

此外,黑客还可以在代币合约中添加一个DenyList功能,使得购买该代币的用户无法出售,从而导致用户损失。

MEV挑战

MEV指的是最大可提取价值(Maximum Extractable Value)。MEV最初指的是矿工可提取价值(Miner Extractable Value),在比特币网络中,矿工通过重新排序区块中的交易,赚取超过区块奖励和网络手续费的额外收益。MEV与区块链网络的类型无关,所有区块链中都存在MEV,Sui也不例外。

Sui使用Narwhal作为内存池,将未完成的交易分配给节点,并使用Bullshark算法作为共识引擎对交易进行排序。

Sui的交易排序规则基于Gas费用。此外,由于Sui采用了结合并行和顺序的交易执行方案,共享相同AMM交易池状态的交易只能按顺序执行。因此,三明治攻击(sandwich attack)和前置交易(frontrunning)是可行的。攻击者可以通过提高Gas费用发起三明治攻击,从而导致参与DeFi交易的用户遭受损失。

免责声明:

  1. 本文转载自【beosin】,所有版权归原作者【beosin】所有。如果对转载有异议,请联系 Gate Learn 团队,他们会及时处理。
  2. 责任声明:本文中表达的观点仅代表作者个人观点,不构成任何投资建议。
  3. 文章的其他语言翻译由 Gate Learn 团队进行。除非另有说明,禁止复制、分发或抄袭翻译文章。

مشاركة

المحتوى

Sui 合约安全与生态挑战分析

进阶12/17/2024, 5:31:12 AM
作为Move生态系统的重要成员,Sui致力于为多种区块链应用场景提供快速且安全的交易服务。本文将帮助您了解Sui生态系统用户和开发者面临的安全挑战,结合Beosin多年的安全审计经验。

自8月以来,Sui生态系统的发展迅速。根据DefiLlama的数据,Sui的TVL已超过10亿美元,在过去两个月增长了200%,目前基于Sui构建的去中心化交易所(Dex)Cetus的日交易量已超过1.6亿美元。

10月9日,Sui的原生USDC正式上线主网,这将继续吸引更多资金流入Sui生态系统。作为Move生态系统的重要成员,Sui致力于为多种区块链应用场景提供快速且安全的交易服务。本文将结合Beosin多年的安全审计经验,帮助您了解Sui生态系统用户和开发者面临的安全挑战。

合约安全

Sui使用Move作为其智能合约的编程语言。Move被设计为一种可执行字节码语言,内置安全算法和字节码验证器,并在调用合约时使用静态调用。

这种设计使得Move能够解决智能合约中的常见漏洞问题,如重入攻击、整数溢出、双重支付和潜在的编译器问题,但开发者在合约开发过程中仍有可能无意中引入漏洞。对此,Beosin在2023年推出了Move Lint工具,这是一款静态检测工具,能够自动化检测合约中的潜在安全风险并定位漏洞。

除了检测工具外,以下是开发者在开发Move合约时需要额外注意的安全问题,以提高合约的安全性:

1) 整数溢出

与其他智能合约语言相比,Move在执行整数数学运算时默认会自动检查溢出问题,这可以防止大量的溢出问题。然而,仍然有两个需要注意的点:

  • Move语言中的位运算不会自动执行溢出检查,因为位运算本质上是对数据进行位级操作,其行为与整数运算有所不同。
  • 当Move的自动溢出检查生效时,函数执行会抛出异常。如果设计不当,可能导致项目业务无法按预期执行,从而引发DoS(拒绝服务)攻击。

2) 权限与访问控制

在传递特权对象和特权函数调用时,必须小心进行身份验证,因为这些函数和对象涉及资金安全。此外,需要检查对象的类型,判断其是否是私有对象或共享对象。如果一个对象错误地从私有对象转换为共享对象,未经授权的用户可能能够访问该对象,构成潜在的安全风险。

开发者可以使用Move Prover来验证程序是否执行了明确的访问控制策略。例如,在std::offer中,我们可以看到,当接收者不在白名单中时,函数会终止:

3) 交易顺序依赖问题

交易顺序依赖(TOD)指的是合约的行为可能会根据交易执行的顺序产生不同的结果,尤其是在去中心化环境中,矿工或验证者可以选择交易的执行顺序。这可能带来如前置攻击(front-running)等风险。

在Sui中,仍然由区块生产者决定交易的执行顺序,因此,如果MOVE合约的设计依赖于交易顺序进行状态变化,则仍可能受到此问题的影响。

4) Gas消耗问题

在Sui链上,Move智能合约的Gas问题主要体现在合约执行所需的计算和存储成本上。随着合约复杂性和状态变化的增加,Gas消耗也随之上升。开发者需要关注优化合约逻辑,减少不必要的计算和状态更新,从而降低用户的交易成本,特别是要避免合约中的不可控迭代问题,这可能由于Gas不足而导致业务无法正常执行。

5) 计算精度

目前,Move支持的数值类型是无符号整数,并不支持浮动小数,因此在除法操作中,分数部分会被截断并向下舍入,这会导致计算结果不准确,可能影响一些关键政策,导致收益损失,甚至成为安全漏洞。

针对这个问题,通常的缓解措施是提高精度,但需要注意的是,最终结果获得时需要恢复精度。

6) 对象管理

在Sui区块链的Move智能合约中,对象管理是一个关键挑战,涉及对象生命周期、所有权、并发访问、序列化和存储成本等多个方面。开发者需要精确管理对象的创建、更新和销毁,以防止资源浪费和状态不一致。同时,合理设计合约逻辑,控制对象的所有权和访问权限,以及处理多个用户并发访问同一对象,都是确保智能合约安全高效运行的重要因素。

7) 业务逻辑设计与实现问题

例如,在Sui DeFi项目中实施闪电贷时,攻击者可以利用闪电贷进行大额资金攻击,如价格操纵等。

在常见的AMM代币交换功能中,开发者可以使用Move Prover来验证代币数量是否正确变化:

例如,借贷协议在经历一系列存款、借款和提现操作后,应始终确保完全安全。在链上永续合约交易协议的订单簿被取消后,已下单的内容应不会导致账本发生变化等,这些都需要开发者进行检查和验证。

Sui生态系统的挑战

目前,Sui的DeFi和Memecoins正在蓬勃发展,交易量和TVL(总锁仓价值)吸引了爆炸性的增长。随后,越来越多种类的诈骗和垃圾交易出现,用户需要小心避开。

网络钓鱼攻击

今年,Sui生态中出现了一种名为”Suisses”的空投骗局,导致许多用户资产被盗。当用户连接钱包到Suisses网站并点击Claim时,会弹出一个交易请求,要求转移用户的资产。如果用户签署了该交易,他们会发现钱包中的所有资产已被转移。

由于Sui的特性:一切都是对象,不仅仅是用户钱包中的代币,NFT也是对象,甚至用户参与DeFi挖矿、流动性质押等活动所获得的凭证也都是对象。如果发生网络钓鱼攻击,黑客可能一次性转移用户在Sui生态系统中的所有资产。

代币诈骗

在Sui生态系统中,存在大量假冒代币和诱饵池(honeypots)。尤其是在用户交易Sui生态系统中的memecoin时,他们可能会不小心陷入骗局。

在Sui创建代币时,如下所示,黑客可以使用与流行或主流代币相同的图标和名称,使得普通用户难以分辨。因此,用户在购买代币时,需要仔细检查代币的数据格式是否正确。

此外,黑客还可以在代币合约中添加一个DenyList功能,使得购买该代币的用户无法出售,从而导致用户损失。

MEV挑战

MEV指的是最大可提取价值(Maximum Extractable Value)。MEV最初指的是矿工可提取价值(Miner Extractable Value),在比特币网络中,矿工通过重新排序区块中的交易,赚取超过区块奖励和网络手续费的额外收益。MEV与区块链网络的类型无关,所有区块链中都存在MEV,Sui也不例外。

Sui使用Narwhal作为内存池,将未完成的交易分配给节点,并使用Bullshark算法作为共识引擎对交易进行排序。

Sui的交易排序规则基于Gas费用。此外,由于Sui采用了结合并行和顺序的交易执行方案,共享相同AMM交易池状态的交易只能按顺序执行。因此,三明治攻击(sandwich attack)和前置交易(frontrunning)是可行的。攻击者可以通过提高Gas费用发起三明治攻击,从而导致参与DeFi交易的用户遭受损失。

免责声明:

  1. 本文转载自【beosin】,所有版权归原作者【beosin】所有。如果对转载有异议,请联系 Gate Learn 团队,他们会及时处理。
  2. 责任声明:本文中表达的观点仅代表作者个人观点,不构成任何投资建议。
  3. 文章的其他语言翻译由 Gate Learn 团队进行。除非另有说明,禁止复制、分发或抄袭翻译文章。
ابدأ التداول الآن
اشترك وتداول لتحصل على جوائز ذهبية بقيمة
100 دولار أمريكي
و
5500 دولارًا أمريكيًا
لتجربة الإدارة المالية الذهبية!
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.