eos上线以来智能合约的攻击方式
2018-11-21 本文已影响24人
剑有偏锋
一 智能合约代码问题
1 代码数值溢出漏洞(狼人杀,比如asset类乘法存在检查溢出无效)
2 未检查code == eosio.token (假币风险)
写智能合约入口,dispacher时,没有做关键的检查
3 转账通知里,未判断 to == _self
二 伪随机数代码重存在的一些问题
1 使用tapos_block_prefix,tapos_block_num,transacation_id来当做随机数种子,可以预测
解决,可以上传随机数种子
三 同步开奖时被利用智能合约钩子
1 同步开奖,可以拉取代码,在主网新建合约同步跑,如果碰到必胜的条件,给正式合约代码发交易。
2 发回执,被对方拒绝,导致回滚整个交易
避免的方法:receipt之类的通知,可以采用异步发起的方式
四 不开源也被撸
1 通过get code取回aib和wast文件,可以分析程序逻辑
五 onchain调用
abi不是必须的,可以通过一些方法调用
1 在另外一个智能合约调用
2 改造客户端,不要再push action时,去调用abi