如果你在数字货币世界待过足够时间,也许你听说过1或2个智能合约攻击时间,这些攻击导致了几千万美元的盗窃损失。最著名的攻击是DAO事件,这是数字货币世界最受期待的项目之一,同时也是智能合约的改革。虽然很多人听说过这些攻击,但是很少人知道到底发生了什么,是怎么发生的,以及如何避免这些错误。
智能合约是动态的,复杂的以及难以置信地强大。虽然他们的潜力是很难想象,但是也不可能一夜之间就成为了攻击的对象。也就是说,对于往后的数字货币,我们可以从之前的错误中学到经验,然后一起成长。虽然DAO是已经发生的事情,但是这对于开发者,投资者,以及社区成员对于智能合约攻击来说,都是一个很好的例子。
今天,小蚁君想和大家聊聊从DAO事件中,我们学到的3件事。
攻击#1:重入攻击
当攻击者通过对目标调用提款操作的时候,重入攻击就会发生,就好像DAO事件一样。当合约不能在发出资金之前更新状态(用户余额),攻击者就可以连续进行提取函数调用,来获得合约中的资金。任何时候攻击者获得以太币,他的合约都会自动地调用反馈函数,function (),这就再次调用了提现合约。这时候,攻击就会进入递归回路,这时候这个合约中的资金就会转入攻击者。因为目标合约都在不停地调用攻击者的函数,这个合约也不会更新攻击者的余额。当前的合约不会发现有任何问题,更清楚地说,合约函数中包含反馈函数,当合约收到以太币和零数据的时候,合约函数就会自动执行。
攻击流程
1.攻击者将以太币存入目标函数
2.目标函数就会根据存入的以太币而更新攻击者的约
3.攻击者请求拿回资金
4.资金就会退回
5.攻击者的反馈函数生效,然后调用提现功能
6.智能合约的逻辑就会更新攻击者的余额,因为提现又被成功调用
7.资金发送到攻击者
8.第5-7步重复使用
9.一旦攻击结束,攻击者就会把资金从他们自己的合约发送到个人地址
那么该如何去挽救损失呢?
对接小蚁高防IP,小蚁高防IP无需迁移数据,百分之百防御各类攻击,可定制不死防御
智能合约是动态的,复杂的以及难以置信地强大。虽然他们的潜力是很难想象,但是也不可能一夜之间就成为了攻击的对象。也就是说,对于往后的数字货币,我们可以从之前的错误中学到经验,然后一起成长。虽然DAO是已经发生的事情,但是这对于开发者,投资者,以及社区成员对于智能合约攻击来说,都是一个很好的例子。
今天,小蚁君想和大家聊聊从DAO事件中,我们学到的3件事。
攻击#1:重入攻击
当攻击者通过对目标调用提款操作的时候,重入攻击就会发生,就好像DAO事件一样。当合约不能在发出资金之前更新状态(用户余额),攻击者就可以连续进行提取函数调用,来获得合约中的资金。任何时候攻击者获得以太币,他的合约都会自动地调用反馈函数,function (),这就再次调用了提现合约。这时候,攻击就会进入递归回路,这时候这个合约中的资金就会转入攻击者。因为目标合约都在不停地调用攻击者的函数,这个合约也不会更新攻击者的余额。当前的合约不会发现有任何问题,更清楚地说,合约函数中包含反馈函数,当合约收到以太币和零数据的时候,合约函数就会自动执行。
攻击流程
1.攻击者将以太币存入目标函数
2.目标函数就会根据存入的以太币而更新攻击者的约
3.攻击者请求拿回资金
4.资金就会退回
5.攻击者的反馈函数生效,然后调用提现功能
6.智能合约的逻辑就会更新攻击者的余额,因为提现又被成功调用
7.资金发送到攻击者
8.第5-7步重复使用
9.一旦攻击结束,攻击者就会把资金从他们自己的合约发送到个人地址
那么该如何去挽救损失呢?
对接小蚁高防IP,小蚁高防IP无需迁移数据,百分之百防御各类攻击,可定制不死防御