区块链智能合约的漏洞很容易导致大量代币被Web3的网络攻击窃取。也是我们安全生产技术对相关区块链智能合约安全性所写的第二部分的帖子,本文依旧是具体来写区块链智能合约中的非常常见漏洞。
智能合约溢出漏洞重现
在TimeLock区块链智能合约中顾客也可以根据deposit()变量存到你的代币而且给代币上锁(block.timestamp 1weeks)锁定几天时间,实际上顾客也可以用increaseLockTime()变量来提升存储时间。但是在存储时长做到之前,代币还会关在TimeLock区块链智能合约里面,无论顾客如何操作都很难取出。
那么怎么导致溢出漏洞呢?在deposit()变量当中可以存进代币并且通过Balance来查看自己的储蓄,倘若网络攻击存进2^256个代币导致区块链智能合约溢出而且清空自己的储蓄,我认为没有任何人那样愚钝做出这样的事情,这件事情成本过高。那我们就只能靠其他漏洞点来打开这一溢出漏洞!
安全性对智能合约溢出漏洞修复一些建议:
1.运用SafeMath来预防外流;
2.运用Solidity0.8及以上版本号来设计开发合同并慎用unchecked由于在unchecked处理后的编码块里面并未对主要参数采用溢出检查的项目;
3.需要慎重应用变量的种类强制类型转换,例如将uint256类别的主要参数强变为uint8种类由于两种方式的选值不一样可能会导致外流。