当前位置:首页 > 知识 >

智能合约威胁之函数恶意初始化

问:智能合约系统的安全漏洞中,哪些是最为严重和频繁出现的?

答:实际情况并不是那么简单。尽管常见的“外溢”和“外部调用”等漏洞是智能合约安全漏洞的一部分,但它们并不是最为严重和频繁出现的。SharkTeam的智能合约安全课程中介绍的“十大智能合约安全威胁”可以深入讨论这些威胁。本文第六课详细描述了“函数故意初始化”。

一、什么是初始化函数?

初始化是指在软件编程领域,将数据对象或自变量赋予初始值的处理方式。如何进行初始化取决于使用的编程语言和所需初始化对象的存储类型等特性。用于进行初始化的软件结构被称为初始化器或初始化列表。

初始化函数是指创建一个实例时将启用的函数。在部署合约之后,一般不会使用传统的构造函数(init)进行合约初始化。

为什么不使用构造函数init(uint256_a)进行初始化,而是使用其他初始化函数呢?

1. 不需要担心繁琐的构造函数主要参数,可以轻松被Etherscan识别;

2. 当常规工作流需要主要参数时,部署和部署不必同步进行,这更有效率;

3. 允许智能合约自行更新。

但使用这种方式进行初始化存在一些问题:

1. 管理权限没有进行严格检验:如果未严格设定初始化函数的调用者管理权限,则网络攻击可以利用管理权限系统漏洞进行故意初始化。

2. 多次启用自定义初始化函数:如果自定义了不安全的初始化函数,并未监管其启用频率,则网络攻击可以利用该系统漏洞反复启用初始化函数,轻松再次初始化资金池。

二、攻击事件分析

2.1DODO

2021年3月9日,DODO的wCRES/USDT资金池被攻击,网络攻击窃取了价值约90万美元的wCRES和价值约113万美元的USDT。DODO是一个最近非常热门的DeFi新项目。网络攻击利用了资金池的初始化函数系统漏洞,从资金池窃取了133,548.93858472505 wCRES和1,139,456.204397 USDT。在DODO官方社交媒体上的一段声明中,称此次攻击与DODOV2众筹项目池有关。DODO早已关闭了DODO资金池的连接。

1. 网络攻击将FDO和FUSDT等两种空气币转到wCRES/US

猜你喜欢

关注我们

微信二维码

微信