高防服务器

【成长随笔】— 简单回顾一下重入漏洞攻击

18年的时候在北航听陈博士讲课的时候,就已经知道什么是重入漏洞,但是那是还没有很深入重入漏洞。今天回顾了一下慢雾的重入漏洞的介绍,发现讲得已经非常简洁的清楚了。

慢雾重入漏洞:

https://mp.weixin.qq.com/s/4j…

自从0.8.9更新了安全的函数代码库之后,有一段代码会被审计成“安全”,而且越来越少人关注重入漏洞了。

function update() {    uint value = deposits[msg.sender];    safeTransferETH(msg.sender, value)    deposits[msg.sender] = 0; }

分析发现这一段代码的功能是:

获取用户的存款数额
使用safeTransferETH函数发送用户的存款
把用户的存款数额置为零
一般的审计会认为这段代码是安全的,因为其使用的是safeTransferETH一般意义上是安全的函数。

但是这其实是依然是可以被重入攻击的。

具体可以看:https://www.anquanke.com/post…

总结

(1)作为开发人员
站在开发者的角度我们需要做的是写好代码,避免重入漏洞的产生。

  1. 写代码时需要遵循先判断,后写入变量在进行外部调用的编码规范(Checks-Effects-Interactions);
  2. 加入防重入锁。

(2)作为审计人员

作为审计人员我们需要关注的是重入漏洞的特征:所有涉及到外部合约调用的代码位置都是不安全的。这样在审计过程中需要重点关注外部调用,然后推演外部调用可能产生的危害,这样就能判断这个地方是否会因为重入点而产生危害。

(3)切记切记:所有代码中,先转账,再更改状态的代码,都有被重入的可能。

[温馨提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。]

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]