织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 区块链

2022年Q1全球区块链安全生态报告 攻击类安全事件造成的损失高达12亿美(3)

时间:2022-04-14 23:16来源:未知 作者:admin 点击:
项目合约的 buyItem 函数代码 从代码上来看,合约的buyItem函数在传入_quantity参数后,并没有做代币类型判断,直接将_quantity与_pricePerItem相乘计算出了total

项目合约的 buyItem 函数代码


从代码上来看,合约的buyItem函数在传入_quantity参数后,并没有做代币类型判断,直接将_quantity与_pricePerItem相乘计算出了totalPrice,因此safeTransferFrom函数可以在ERC-20代币支付数额只有0的情况下,调用合约的buyItem函数来进行代币购买。


然而在调用buyItem函数时,函数只对购买代币类型进行了判断,并没有对代币数量进行非0判断,导致ERC-721类型的代币可以在无视_quantity数值的情况下直接购买,从而实现了漏洞攻击。


建议:


本次安全事件主要原因是ERC-1155代币和ERC-721代币混用导致的逻辑混乱,ERC-721代币并没有数量的概念,但是合约却使用了数量来计算代币购买价格,最后在代币转账时也没有进行分类讨论。


建议开发者在开发多种代币的销售贩卖合约时,需要根据不同代币的特性来进行不同情况的业务逻辑设计。


案例二:Build Finance项目遭遇治理攻击


背景:


2 月 15 日,DAO 组织 Build Finance 表示遭遇恶意治理攻击,攻击者通过获得足够多的投票成功了控制其 Token 合约。


详情:


在2020年9月4日的一笔交易中,Build Finance合约创建者通过setGovernance函数将治理权限转移。通过查找内部的Storage,发现权限转移给了0x38bce4b地址。继续跟进0x38bce4b地址,发现是一个Timelock合约,而合约中可以调用setGovernance函数的只有executeTransaction函数。




Build Finance被攻击流程


继续跟进发现,在2021年1月25日,0x38bce4b地址调用executeTransaction函数将权限转移到了0x5a6ebe地址。2022年2月11日,由于投票设置的阈值较低导致提案通过,0x5a6ebe地址的治理权限变更为了0xdcc8A38A地址。在获取到治理权限后,攻击者恶意铸币并耗尽了交易池的流动性。


建议:


DAO合约应该设置合适的投票阈值,实现真正的去中心化治理,避免很少的投票数量就使得提案通过并成功执行,建议可以参考openzeppelin官方提供的治理合约的实现。


案例三:Ronin6亿美元盗币案


背景:


3 月 23 日,Sky Mavis 的 Ronin 验证器节点和 Axie DAO 验证器节点遭到破坏,攻击者使用被黑的私钥来伪造假提款,获利约6.25亿美元。而Ronin Network直到3月29日才发现自己遭受到了攻击。


详情:


Sky Mavis 的 Ronin 链目前由 9 个验证节点组成。为了识别存款事件或取款事件,需要九个验证者签名中的五个。攻击者设法控制了 Sky Mavis 的四个 Ronin 验证器和一个由 Axie DAO 运行的第三方验证器。此后 Ronin 官方表示,所有证据都表明这次攻击或与社会工程学相关。 (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容