区块链安全

智能合约安全审计之重入漏洞

            可以看到是一个很大的数字,这个我们就绕过了我们刚才的条件判断,因为它这里是最终陈述的结果为0,那么这里很容易绕过这个判断,就是说是value值大于0,这是肯定的,我认为这是大于0的。还有一个banners,Venus这个值,这是用户的余额,它这是mount大于这个最终的溢出的话,这里也是为0,也是就是一个很小的智能合约,肯定是打鱼的没有问题,那所以就绕过了这个条件判断,最终导致了漏洞的发生,这个就是整数溢出漏洞,我们给大家看一下这个值吧,这个值也是最终导致的溢出,给大家在链上看一下。

可以看到这是执行结果是成功,这里转出了这么多钱,5789,这样可以看到非常可怕的一个数字。这也是一个真实的案例,那我们现在这个就ok来解释一下共识。这是一些防御方式,我们可以看到在这里我们加入了on一条路amount,等于on at256的一个假如说一些判断,然后最终导致一些转账失败,也就是说合同是可以修复的。那么修复方式,大家也可以看我们具体的公众号的文章里面,有智能合约的修复方式,由于时间关系,我再给大家讲一下,下面这个这个是一个fnt的一个找出一处漏洞。

可看我们SINE安全也是当时跟进了这个漏洞,往往合约遭到攻击,这个具体有点模糊,到时候把这个PPT可以上传一下。下面看重入漏洞,大概给他讲一下重入漏洞的一些条件,一些就是成立的条件呀,一些概念什么的,给大家大概讲一下。就是在以太仿合约中调用外部合约,或者将以eth发送到地址的操作需要,合约提交外部调用,这些外部调用可能被就是攻击者劫持,不是攻击,不是合约之前进一步的代码来就是逻辑逻辑,也就是说是重新进入逻辑的一个过程。

比如说你转账的时候,比如说是你从自己的账户提现,提现后系统对你的余额没有进行立即解除,然后就可以导致你可以循环不停的转账,一直消耗系统的内部余额,但是它不会减去你存的余额,就会导致冲入漏洞。我可以大家带大家看一下这个重入成立的条件。这是合约调用一个,第一个是合约调用足够的guesT,就是相当于汽油,翻译过来就起过好像是。然后这个就是你要执行合约的话,它是要付一点guesT,不是免费的。