DAO:怪事?盗了又归还?TreasureDAO安全事件分析_HAC

3月3日,成都链安链必应-区块链安全态势感知平台舆情监测显示,基于 Arbitrum 的 TreasureDAO NFT 交易市场被曝发现漏洞,导致100多个NFT被盗,令人意外的是,在事件发生几小时后,攻击者却开始归还被盗NFT(猜不透攻击者的心思)。关于本次事件,成都链安技术团队第一时间进行了分析。

总述

交易发起地址利用TreasureMarketplaceBuyer合约中存在的逻辑缺陷,通过该合约的buyItem函数的_quantity参数能够置零且不影响ERC-721代币交易的漏洞,将totalPrice置零从而无代价获取ERC-721代币。

成都链安:hackerDao项目遭受价格操控攻击,获利资金已转至Tornado.cash:金色财经消息,据成都链安“链必应-区块链安全态势感知平台”安全舆情监控数据显示,hackerDao项目遭受价格操控攻击。成都链安安全团队第一时间进行分析,发现攻击者先从先闪电贷借出2500WBNB,拿出部分WBNB兑换出大量hackerDao,然后将这笔hackerDao发送WBNB/hackerDao;并调用该交易对合约的skim函数将多余代币领取至BUSD/hackerDao。由于hackerDao代币在转账时,如果转账接收地址是BUSD/hackerDao时,会同步减少发送者的代币余额以收取手续费,因此,WBNB/hackerDao交易对中的hackeDao数量被异常减少,从而影响该交易对的代币价格,使得攻击者最终利用WBNB/hackerDao兑换出WBNB时,获取额外的收益。目前攻击者实施了两次攻击,总计获利约200BNB,已经转至Tornado.cash 。[2022/5/24 3:38:37]

交易发起地址:

CryptoFed DAO被怀俄明州认定为美国首个合法DAO组织:美国去中心化自治组织 CryptoFed DAO 被怀俄明州国务卿办公室认定为美国第一个合法DAO。此前怀俄明州投票通过关于允许DAO在该州正式注册的法案,旨在允许DAO被州政府特许和认可且有限责任公司可转型为 DAO,该法律已于2021年7月1日生效。(apnews)[2021/7/5 0:27:28]

Arbitrum:0x9b1acd4336ebf7656f49224d14a892566fd48e68

被攻击的合约:

Arbitrum:0x812cda2181ed7c45a35a691e0c85e231d218e273

HECO链去中心稳定币HaykerDAO将支持Dogeswap喂价:据技术社区5月12日消息,HECO链去中心化稳定币HaykerDAO将支持Dogeswap喂价,扶持新项目全面发展。

据悉,DogeSwap 是基于火币生态链全新的DEX,致力于发掘和扶持新资产,并为其提供更多的金融服务。

HaykerDAO是火币生态链(HECO)上的去中心化自治组织和智能合约系统,提供HECO上的第一个去中心化稳定货币HAI ,HKR是HaykerDAO 协议的治理代币。

HaykerDAO是一个质押加密资产即可生成1:1锚定美金的HAI的平台,一个安全可靠的借贷协议,一个人人都用得上的去中心化稳定币平台。[2021/5/12 21:52:12]

攻击交易:

Arbitrum:0x57dc8e6a28efa28ac4a3ef50105b73f45d56615d4a6c142463b6372741db2a2b

在Arbitrum上,交易发起者通过TreasureMarketplaceBuyer合约的buyItem函数传入了数值为0的_quantity参数,从而无偿购买了TokenID为5490的ERC-721代币。(仅以此次交易为例)

?交易详情

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

TreasureMarketplaceBuyer 合约的?buyItem函数代码

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

TreasureMarketplace的buyItem函数代码

涉及的代币资产:

总结建议

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

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

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

[0:15ms0-6:424ms